Ejemplo n.º 1
0
  public void paint(final Graphics g, final JComponent c) {
    JComponent component = tooltip.getComponent();
    if (component != null && component.isEnabled() || backgroundInactiveColor == null) {
      g.setColor(tooltip.getBackground());
      LookAndFeel.installBorder(c, "ToolTip.border");
    } else {
      g.setColor(backgroundInactiveColor);
      LookAndFeel.installBorder(c, "ToolTip.borderInactive");
    }
    g.fillRect(0, 0, tooltip.getWidth(), tooltip.getHeight());

    String tipText = tooltip.getTipText();
    FontMetrics fm = Utilities.getFontMetrics(tooltip);
    Dimension stringSize = Utilities.getStringSize(tipText, fm);
    int textX =
        component instanceof AbstractButton && ((AbstractButton) component).getMnemonic() != 0
            ? 4
            : (tooltip.getWidth() - stringSize.width) / 2;
    int textY = fm.getAscent();
    Color foreground =
        component != null && component.isEnabled() || foregroundInactiveColor == null
            ? tooltip.getForeground()
            : foregroundInactiveColor;
    Utilities.drawString(g, tipText, textX, textY, fm, foreground, -1);
  }
Ejemplo n.º 2
0
  public Dimension getPreferredSize(final JComponent c) {
    if (tooltip == null) {
      tooltip = (JToolTip) c;
    }
    Font f = c.getFont();
    if (f == null) {
      return new Dimension();
    }
    Dimension result = Utilities.getStringSize(tooltip.getTipText(), c.getFontMetrics(f));
    result.width += 6;

    return Utilities.addInsets(result, tooltip.getInsets());
  }
Ejemplo n.º 3
0
  /** method that actually implements functionality of both public layoutCompoundLabel() methods */
  private static String doLayoutCompoundLabel(
      final FontMetrics fm,
      final String text,
      final Icon icon,
      final int verticalAlignment,
      final int horizontalAlignment,
      final int verticalTextPosition,
      final int horizontalTextPosition,
      final Rectangle viewR,
      final Rectangle iconR,
      final Rectangle textR,
      final int textIconGap) {

    final int gap = icon != null && !Utilities.isEmptyString(text) ? textIconGap : 0;

    if (icon != null) {
      iconR.setSize(icon.getIconWidth(), icon.getIconHeight());
    } else {
      iconR.setSize(0, 0);
    }

    String clippedText = "";
    if (!Utilities.isEmptyString(text)) {
      final int adjust = horizontalTextPosition != CENTER ? iconR.width + gap : 0;
      final int availableLength = viewR.width - adjust;
      clippedText = Utilities.clipString(fm, text, availableLength);
      textR.setSize(Utilities.getStringSize(clippedText, fm));
    } else {
      textR.setSize(0, 0);
    }

    layoutRects(
        verticalAlignment,
        horizontalAlignment,
        verticalTextPosition,
        horizontalTextPosition,
        viewR,
        iconR,
        textR,
        gap);

    return clippedText;
  }