< prev index next >

src/java.desktop/share/classes/javax/swing/plaf/metal/MetalToolTipUI.java

Print this page

        

@@ -63,10 +63,12 @@
      * The space between strings.
      */
     public static final int padSpaceBetweenStrings = 12;
     private String acceleratorDelimiter;
 
+    private TextUIDrawing textUIDrawing;
+
     /**
      * Constructs an instance of the {@code MetalToolTipUI}.
      */
     public MetalToolTipUI() {
         super();

@@ -94,10 +96,27 @@
     public void uninstallUI(JComponent c) {
         super.uninstallUI(c);
         tip = null;
     }
 
+    @Override
+    protected void installDefaults(JComponent c) {
+        super.installDefaults(c);
+        if (textUIDrawing != SwingUtilities2.DEFAULT_UI_TEXT_DRAWING
+                && textUIDrawing instanceof UIResource) {
+            textUIDrawing = SwingUtilities2.DEFAULT_UI_TEXT_DRAWING;
+        }
+    }
+
+    @Override
+    protected void uninstallDefaults(JComponent c) {
+        super.uninstallDefaults(c);
+        if (textUIDrawing instanceof UIResource) {
+            textUIDrawing = null;
+        }
+    }
+
     public void paint(Graphics g, JComponent c) {
         JToolTip tip = (JToolTip)c;
         Font font = c.getFont();
         FontMetrics metrics = SwingUtilities2.getFontMetrics(c, g, font);
         Dimension size = c.getSize();

@@ -125,19 +144,19 @@
             v.paint(g, paintTextR);
             accelBL = BasicHTML.getHTMLBaseline(v, paintTextR.width,
                                                   paintTextR.height);
         } else {
             g.setFont(font);
-            SwingUtilities2.drawString(tip, g, tipText, paintTextR.x,
+            textUIDrawing.drawString(tip, g, tipText, paintTextR.x,
                                   paintTextR.y + metrics.getAscent());
             accelBL = metrics.getAscent();
         }
 
         if (!accelString.equals("")) {
             g.setFont(smallFont);
             g.setColor( MetalLookAndFeel.getPrimaryControlDarkShadow() );
-            SwingUtilities2.drawString(tip, g, accelString,
+            textUIDrawing.drawString(tip, g, accelString,
                                        tip.getWidth() - 1 - insets.right
                                            - accelSpacing
                                            + padSpaceBetweenStrings
                                            - 3,
                                        paintTextR.y + accelBL);

@@ -146,11 +165,11 @@
 
     private int calcAccelSpacing(JComponent c, FontMetrics fm, String accel) {
         return accel.equals("")
                ? 0
                : padSpaceBetweenStrings +
-                 SwingUtilities2.stringWidth(c, fm, accel);
+                 textUIDrawing.getStringWidth(c, fm, accel);
     }
 
     public Dimension getPreferredSize(JComponent c) {
         Dimension d = super.getPreferredSize(c);
 
< prev index next >