Some mauve tests were submitted to test the MetalIconFactory icons. I
fixed them to return a shared instance instead of creating a new Icon
instance each time.

2005-11-23  Lillian Angel  <[EMAIL PROTECTED]>

        * javax/swing/plaf/metal/MetalIconFactory.java:
        Added new fields to store an instance of the icons.
        (getMenuArrowIcon): Fixed to make use of the new field.
        (getMenuItemArrowIcon): Fixed implementation to return
        an instance of the icon, instead of calling getMenuArrowIcon.
        Even though, these two look identical.



On Wed, 2005-11-23 at 10:25 -0500, Lillian Angel wrote:
> On Wed, 2005-11-23 at 11:43 +0100, Roman Kennke wrote:
> > Hi Lillian,
> > 
> > Am Dienstag, den 22.11.2005, 15:15 -0500 schrieb Lillian Angel:
> > > Added implementations for missing functions in MetalIconFactory and
> > > MetalTextFieldUI.
> > > 
> > > 2005-11-22  Lillian Angel  <[EMAIL PROTECTED]>
> > > 
> > >         * javax/swing/plaf/metal/MetalIconFactory.java
> > >         (getMenuArrowIcon): Implemented.
> > >         (getMenuItemArrowIcon): Implemented to call getMenuArrowIcon,
> > >         because both icons look the same.
> > 
> > Would be useful to figure out if this really should return the same icon
> > class. They may look the same in some scenarious, but differ in
> > others...
> 
> Roman and I agreed to leave this. The arrow icons look identical in all
> scenarios. If anyone sees differently, please let me know.
> 
> > 
> > >         (getMenuItemCheckIcon): Implemented.
> > >         * javax/swing/plaf/metal/MetalTextFieldUI.java
> > >         (propertyChange): Implemented to call super only, because it
> > >         is a hook method. It doesn't have a different purpose from
> > >         BasicLookAndFeel, other than allowing a subclass to override it.
> > 
> > I disagree. If the hook is provided in the BasicLookAndFeel and it's
> > specified to be overridden in MetalTextFieldUI, then there must be some
> > functionality there. Only calling super.propertyChange() doesn't change
> > anything (except some additional useless calls) from not implementing
> > this class at all in MetalTextFieldUI. I would guess that there actually
> > _should_ be some functionality in this method. Would be good to figure
> > out.
> 
> Neither Roman or I could see what else should be done here. I am leaving
> it as is for now.
> 
> Lillian
> 
> 
> 
> _______________________________________________
> Classpath-patches mailing list
> Classpath-patches@gnu.org
> http://lists.gnu.org/mailman/listinfo/classpath-patches
Index: javax/swing/plaf/metal/MetalIconFactory.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/metal/MetalIconFactory.java,v
retrieving revision 1.21
diff -u -r1.21 MetalIconFactory.java
--- javax/swing/plaf/metal/MetalIconFactory.java	22 Nov 2005 20:14:34 -0000	1.21
+++ javax/swing/plaf/metal/MetalIconFactory.java	23 Nov 2005 21:02:32 -0000
@@ -68,6 +68,12 @@
     
   /** A constant representing "light". */
   public static final boolean LIGHT = true;
+  
+  /** A shared instance of the MenuArrowIcon. */
+  private static Icon menuArrow;
+  
+  /** A shared instance of the MenuItemArrowIcon. */
+  private static Icon menuItemArrow;
     
   /**
    * An icon displayed for [EMAIL PROTECTED] JCheckBoxMenuItem} components.
@@ -2476,39 +2482,62 @@
    */
   public static Icon getMenuArrowIcon()
   {
-    return new Icon()
-    {
-      public int getIconHeight()
+    if (menuArrow == null)
+      menuArrow = new Icon()
       {
-        return 8;
-      }
+        public int getIconHeight()
+        {
+          return 8;
+        }
 
-      public int getIconWidth()
-      {
-        return 4;
-      }
+        public int getIconWidth()
+        {
+          return 4;
+        }
 
-      public void paintIcon(Component c, Graphics g, int x, int y)
-      {
-        Color saved = g.getColor();
-        g.setColor(Color.BLACK);
-        for (int i = 0; i < 4; i++)
-          g.drawLine(x + i, y + i, x + i, y + 7 - i);
-        g.setColor(saved);
-      }
-    };
+        public void paintIcon(Component c, Graphics g, int x, int y)
+        {
+          Color saved = g.getColor();
+          g.setColor(Color.BLACK);
+          for (int i = 0; i < 4; i++)
+            g.drawLine(x + i, y + i, x + i, y + 7 - i);
+          g.setColor(saved);
+        }
+      };
+    return menuArrow;
   }
   
   /**
    * Returns a new instance of a 4 x 8 icon showing a small black triangle that
-   * points to the right.  This is displayed in menu items that have a 
-   * sub menu.
+   * points to the right. This is displayed in menu items that have a sub menu.
    * 
    * @return The icon.
    */
   public static Icon getMenuItemArrowIcon()
   {
-    return getMenuArrowIcon();
+    if (menuItemArrow == null)
+      menuItemArrow = new Icon()
+      {
+        public int getIconHeight()
+        {
+          return 8;
+        }
+
+        public int getIconWidth()
+        {
+          return 4;
+        }
+
+        public void paintIcon(Component c, Graphics g, int x, int y)
+        {
+          Color saved = g.getColor();
+          g.setColor(Color.BLACK);
+          for (int i = 0; i < 4; i++)
+            g.drawLine(x + i, y + i, x + i, y + 7 - i);
+          g.setColor(saved);
+        }
+      };
+    return menuItemArrow;
   }
   
   /**
_______________________________________________
Classpath-patches mailing list
Classpath-patches@gnu.org
http://lists.gnu.org/mailman/listinfo/classpath-patches

Reply via email to