classpath-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[cp-patches] FYI: MetalRadioButtonUI.java


From: David Gilbert
Subject: [cp-patches] FYI: MetalRadioButtonUI.java
Date: Tue, 06 Sep 2005 22:27:24 +0000
User-agent: Mozilla Thunderbird 1.0.6 (X11/20050728)

I committed this patch to add some missing methods to MetalRadioButtonUI:

2005-09-06  David Gilbert  <address@hidden>

        * javax/swing/plaf/metal/MetalLookAndFeel.java
        (initComponentDefaults): added some RadioButton defaults,
        * javax/swing/plaf/metal/MetalRadioButtonUI.java
        (instance): removed,
        (focusColor): added,
        (selectColor): added,
        (disabledTextColor): added,
        (createUI): return a new instance for every component,
        (installDefaults): implemented,
        (uninstallDefaults): implemented,
        (getSelectColor): implemented,
        (getDisabledTextColor): implemented,
        (getFocusColor): implemented,
        (paint): added FIXME note,
        (paintFocus): implemented.

Regards,

Dave Gilbert
Index: javax/swing/plaf/metal/MetalLookAndFeel.java
===================================================================
RCS file: 
/cvsroot/classpath/classpath/javax/swing/plaf/metal/MetalLookAndFeel.java,v
retrieving revision 1.47
diff -u -r1.47 MetalLookAndFeel.java
--- javax/swing/plaf/metal/MetalLookAndFeel.java        6 Sep 2005 19:57:34 
-0000       1.47
+++ javax/swing/plaf/metal/MetalLookAndFeel.java        6 Sep 2005 20:57:59 
-0000
@@ -815,6 +815,8 @@
       "MenuItem.selectionBackground", getMenuSelectedBackground(),
       "MenuItem.selectionForeground", getMenuSelectedForeground(),
       "Panel.background", new ColorUIResource(getControl()),
+      "RadioButton.disabledText", 
+      MetalLookAndFeel.getInactiveControlTextColor(),
       "RadioButton.icon",
       new UIDefaults.LazyValue()
       {
@@ -825,6 +827,7 @@
       },
       "RadioButton.focus", MetalLookAndFeel.getFocusColor(),
       "RadioButton.font", MetalLookAndFeel.getControlTextFont(),
+      "RadioButton.select", MetalLookAndFeel.getControlShadow(),
       "RadioButtonMenuItem.border", new MetalBorders.MenuItemBorder(),
       "RadioButtonMenuItem.borderPainted", Boolean.TRUE,
       "RadioButtonMenuItem.checkIcon", 
Index: javax/swing/plaf/metal/MetalRadioButtonUI.java
===================================================================
RCS file: 
/cvsroot/classpath/classpath/javax/swing/plaf/metal/MetalRadioButtonUI.java,v
retrieving revision 1.3
diff -u -r1.3 MetalRadioButtonUI.java
--- javax/swing/plaf/metal/MetalRadioButtonUI.java      2 Jul 2005 20:32:51 
-0000       1.3
+++ javax/swing/plaf/metal/MetalRadioButtonUI.java      6 Sep 2005 20:58:00 
-0000
@@ -38,18 +38,37 @@
 
 package javax.swing.plaf.metal;
 
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Rectangle;
+
+import javax.swing.AbstractButton;
 import javax.swing.JComponent;
+import javax.swing.JRadioButton;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
 import javax.swing.plaf.ComponentUI;
 import javax.swing.plaf.basic.BasicRadioButtonUI;
 
+
+/**
+ * A UI delegate for the address@hidden JRadioButton} component under the 
+ * address@hidden MetalLookAndFeel}.
+ */
 public class MetalRadioButtonUI
   extends BasicRadioButtonUI
 {
 
-  // FIXME: maybe replace by a Map of instances when this becomes stateful
-  /** The shared UI instance for JRadioButtons. */
-  private static MetalRadioButtonUI instance = null;
-
+  /** Used to draw the focus rectangle. */
+  protected Color focusColor;
+  
+  /** Used to fill the icon when the button is pressed. */
+  protected Color selectColor;
+  
+  /** Used to draw disabled text. */
+  protected Color disabledTextColor;
+  
   /**
    * Constructs a new instance of MetalRadioButtonUI.
    */
@@ -67,8 +86,102 @@
    */
   public static ComponentUI createUI(JComponent component)
   {
-    if (instance == null)
-      instance = new MetalRadioButtonUI();
-    return instance;
+    return new MetalRadioButtonUI();
+  }
+  
+  /**
+   * Sets the default values for the specified button.
+   * 
+   * @param b  the button.
+   */
+  public void installDefaults(AbstractButton b)
+  {
+    super.installDefaults(b);
+    UIDefaults defaults = UIManager.getLookAndFeelDefaults();
+    disabledTextColor = defaults.getColor("RadioButton.disabledText");
+    focusColor = defaults.getColor("RadioButton.focus");
+    selectColor = defaults.getColor("RadioButton.select");
+  }
+  
+  /**
+   * Clears any defaults set in the installDefaults() method.
+   * 
+   * @param b  the address@hidden JRadioButton}.
+   */
+  protected void uninstallDefaults(AbstractButton b)
+  {
+    super.uninstallDefaults(b);
+    disabledTextColor = null;
+    focusColor = null;
+    selectColor = null;
+  }
+  
+  /**
+   * Returns the color used to fill the address@hidden JRadioButton}'s icon 
when the
+   * button is pressed.  The default color is obtained from the 
+   * address@hidden UIDefaults} via an entry with the key 
+   * <code>RadioButton.select</code>.
+   * 
+   * @return The select color.
+   */
+  protected Color getSelectColor()
+  {
+    return selectColor;    
+  }
+  
+  /**
+   * Returns the color for the address@hidden JRadioButton}'s text when the 
button is
+   * disabled.  The default color is obtained from the address@hidden 
UIDefaults} via 
+   * an entry with the key <code>RadioButton.disabledText</code>.
+   * 
+   * @return The disabled text color.
+   */
+  protected Color getDisabledTextColor()
+  {
+    return disabledTextColor;
+  }
+  
+  /**
+   * Returns the color used to draw the focus rectangle when the 
+   * address@hidden JRadioButton} has the focus.  The default color is 
obtained from 
+   * the address@hidden UIDefaults} via an entry with the key 
+   * <code>RadioButton.focus</code>.
+   * 
+   * @return The color used to draw the focus rectangle.
+   * 
+   * @see #paintFocus(Graphics, Rectangle, Dimension)
+   */
+  protected Color getFocusColor()
+  {
+    return focusColor;
+  }
+  
+  /**
+   * Paints the address@hidden JRadioButton}.
+   * 
+   * @param g  the graphics device.
+   * @param c  the component (an instance of address@hidden JRadioButton}).
+   */
+  public void paint(Graphics g, JComponent c)
+  {
+    super.paint(g, c);
+    // FIXME:  disabled text isn't being drawn correctly, it's possible that
+    // it could be done here...
+  }
+  
+  /**
+   * Paints the focus rectangle for the address@hidden JRadioButton}.
+   * 
+   * @param g  the graphics device.
+   * @param t  the bounding rectangle for the text.
+   * @param d  ???
+   */
+  protected void paintFocus(Graphics g, Rectangle t, Dimension d)
+  {
+    g.setColor(focusColor);
+    g.drawRect(t.x, t.y, t.width, t.height);
+    // FIXME: we seem to be drawing too tight a rectangle here, perhaps there
+    // is some padding to do somewhere???
   }
+  
 }

reply via email to

[Prev in Thread] Current Thread [Next in Thread]