You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by se...@apache.org on 2012/12/06 20:55:54 UTC

svn commit: r1418045 - /jmeter/trunk/src/core/org/apache/jmeter/gui/util/TristateCheckBox.java

Author: sebb
Date: Thu Dec  6 19:55:53 2012
New Revision: 1418045

URL: http://svn.apache.org/viewvc?rev=1418045&view=rev
Log:
Fix up so does not use private Sun class; we get the icon size from the UIManager defaults
Also change from cross to horizontal line
Bugzilla Id: 54251

Modified:
    jmeter/trunk/src/core/org/apache/jmeter/gui/util/TristateCheckBox.java

Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/util/TristateCheckBox.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/util/TristateCheckBox.java?rev=1418045&r1=1418044&r2=1418045&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/util/TristateCheckBox.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/util/TristateCheckBox.java Thu Dec  6 19:55:53 2012
@@ -36,14 +36,14 @@ import javax.swing.ButtonModel;
 import javax.swing.Icon;
 import javax.swing.JCheckBox;
 import javax.swing.SwingUtilities;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import javax.swing.plaf.ActionMapUIResource;
 import javax.swing.plaf.UIResource;
 import javax.swing.plaf.metal.MetalLookAndFeel;
 
-import sun.swing.plaf.synth.SynthUI;
-
 // derived from: http://www.javaspecialists.eu/archive/Issue145.html
 
 public final class TristateCheckBox extends JCheckBox {
@@ -163,7 +163,7 @@ public final class TristateCheckBox exte
                 TristateCheckBox tristateCheckBox, boolean original) {
             setState(TristateState.DESELECTED);
             this.tristateCheckBox = tristateCheckBox;
-            icon = new TristateCheckBoxIcon(tristateCheckBox);
+            icon = new TristateCheckBoxIcon();
             this.original = original;
         }
 
@@ -252,48 +252,54 @@ public final class TristateCheckBox exte
 
         private static final long serialVersionUID = 290L;
 
-        private final TristateCheckBox tristateCheckBox;
+        private final int iconHeight;
+        private final int iconWidth;
 
-        public TristateCheckBoxIcon(TristateCheckBox tristateCheckBox) {
-            this.tristateCheckBox = tristateCheckBox;
-            System.out.println(tristateCheckBox.getUI());
+        public TristateCheckBoxIcon() {
+            // Assume that the UI has not changed since the checkbos was created
+            UIDefaults defaults = UIManager.getLookAndFeelDefaults();
+            final Icon icon = (Icon) defaults.get("CheckBox.icon");
+            iconHeight = icon.getIconHeight();
+            iconWidth = icon.getIconWidth();
         }
 
         @Override
         public void paintIcon(Component c, Graphics g, int x, int y) {
             JCheckBox cb = (JCheckBox) c;
             ButtonModel model = cb.getModel();
-            int controlSize = getControlSize();
 
             // TODO fix up for Nimbus LAF
             if (model.isEnabled()) {
                 if (model.isPressed() && model.isArmed()) {
                     g.setColor(MetalLookAndFeel.getControlShadow());
-                    g.fillRect(x, y, controlSize - 1, controlSize - 1);
-                    drawPressed3DBorder(g, x, y, controlSize, controlSize);
+                    g.fillRect(x, y, iconWidth - 1, iconHeight - 1);
+                    drawPressed3DBorder(g, x, y, iconWidth, iconHeight);
                 } else {
-                    drawFlush3DBorder(g, x, y, controlSize, controlSize);
+                    drawFlush3DBorder(g, x, y, iconWidth, iconHeight);
                 }
                 g.setColor(MetalLookAndFeel.getControlInfo());
             } else {
                 g.setColor(MetalLookAndFeel.getControlShadow());
-                g.drawRect(x, y, controlSize - 1, controlSize - 1);
+                g.drawRect(x, y, iconWidth - 1, iconHeight - 1);
             }
 
-            drawCross(c, g, x, y);
+            drawLine(g, x, y);
+//            drawCross(g, x, y);
 
         }// paintIcon
 
-        private void drawCross(Component c, Graphics g, int x, int y) {
-            int controlSize = getControlSize();
-            g.drawLine(x + (controlSize - 4), y + 2, x + 3, y
-                    + (controlSize - 5));
-            g.drawLine(x + (controlSize - 4), y + 3, x + 3, y
-                    + (controlSize - 4));
-            g.drawLine(x + 3, y + 2, x + (controlSize - 4), y
-                    + (controlSize - 5));
-            g.drawLine(x + 3, y + 3, x + (controlSize - 4), y
-                    + (controlSize - 4));
+//        private void drawCross(Graphics g, int x, int y) {
+//            g.drawLine(x + (iconWidth - 4), y + 2, x + 3, y + (iconHeight - 5));
+//            g.drawLine(x + (iconWidth - 4), y + 3, x + 3, y + (iconHeight - 4));
+//            g.drawLine(x + 3, y + 2, x + (iconWidth - 4), y + (iconHeight - 5));
+//            g.drawLine(x + 3, y + 3, x + (iconWidth - 4), y + (iconHeight - 4));
+//        }
+
+        private void drawLine(Graphics g, int x, int y) {
+            final int left = x + 2, right =  x + (iconWidth - 4);
+            int height = y + iconHeight/2;
+            g.drawLine(left, height, right, height);
+            g.drawLine(left, height - 1, right, height - 1);
         }
 
         private void drawFlush3DBorder(Graphics g, int x, int y, int w, int h) {
@@ -319,19 +325,12 @@ public final class TristateCheckBox exte
 
         @Override
         public int getIconWidth() {
-            return getControlSize();
+            return iconWidth;
         }
 
         @Override
         public int getIconHeight() {
-            return getControlSize();
-        }
-
-        private int getControlSize() {
-            if (tristateCheckBox.getUI() instanceof SynthUI) {
-                return 18; // see http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/_nimbusDefaults.html
-            }
-            return 13;
+            return iconHeight;
         }
     }
 }
\ No newline at end of file