Hey,

I have written a test for all of JMenu's constructors and found many
constructor regressions.  This patches fixes all of them.  Could someone
please approve this patch so that I may commit it.  Thanks.

Here's the Changelog entry:

2006-06-20  Tania Bento  <[EMAIL PROTECTED]>

        * javax/swing/JMenu.java
        Changed instantiation of popupMenu to null.
        (JMenu): Instantiated popupMenu to new JPopupMenu.
        (JMenu): Instantiated popupMenu to new JPopupMenu.
        (add): Changed popupMenu to getPopupMenu().
        (add): Changed popupMenu to getPopupMenu().
        (add): Changed popupMenu to getPopupMenu().
        (add): Changed popupMenu to getPopupMenu().
        (remove): Changed popupMenu to getPopupMenu().
        (remove): Changed popupMenu to getPopupMenu().
        (insert): Changed popupMenu to getPopupMenu().
        (setSelectedHelper): Changed popupMenu to getPopupMenu().
        (isPopupMenuVisible): Changed popupMenu to getPopupMenu().
        (setPopupMenuVisible): Changed popupMenu to getPopupMenu().
        (getMenuComponentCount): Changed popupMenu to getPopupMenu().
        (getMenuComponents): Changed popupMenu to getPopupMenu().
        (getPopupMenu): Check first if popupMenu is null and if so,
        instantiate it to a new JPopupMenu and set the invoker.

Index: JMenu.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/JMenu.java,v
retrieving revision 1.27
diff -u -r1.27 JMenu.java
--- JMenu.java	16 May 2006 06:49:32 -0000	1.27
+++ JMenu.java	20 Jun 2006 20:32:16 -0000
@@ -40,6 +40,7 @@
 import java.awt.Component;
 import java.awt.Point;
+import java.awt.PopupMenu;
 import java.awt.event.KeyEvent;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
@@ -74,7 +75,7 @@
   private static final long serialVersionUID = 4227225638931828014L;
 
   /** A Popup menu associated with this menu, which pops up when menu is selected */
-  private JPopupMenu popupMenu = new JPopupMenu();
+  private JPopupMenu popupMenu = null;
 
   /** Whenever menu is selected or deselected the MenuEvent is fired to
      menu's registered listeners. */
@@ -108,8 +110,10 @@
   public JMenu(String text)
   {
     super(text);
+    popupMenu = new JPopupMenu(); 
     popupMenu.setInvoker(this);
     setOpaque(false);
   }
 
   /**
@@ -122,8 +126,10 @@
   {
     super(action);
     createActionChangeListener(this);
+    popupMenu = new JPopupMenu();
     popupMenu.setInvoker(this);
     setOpaque(false);
   }
 
   /**
@@ -148,7 +155,7 @@
    */
   public JMenuItem add(JMenuItem item)
   {
-    return popupMenu.add(item);
+    return getPopupMenu().add(item);
   }
 
   /**
@@ -160,7 +167,7 @@
    */
   public Component add(Component component)
   {
-    popupMenu.insert(component, -1);
+    getPopupMenu().insert(component, -1);
     return component;
   }
 
@@ -174,7 +181,7 @@
    */
   public Component add(Component component, int index)
   {
-    return popupMenu.add(component, index);
+    return getPopupMenu().add(component, index);
   }
 
   /**
@@ -186,7 +193,7 @@
    */
   public JMenuItem add(String text)
   {
-    return popupMenu.add(text);
+    return getPopupMenu().add(text);
   }
 
   /**
@@ -198,7 +205,7 @@
    */
   public JMenuItem add(Action action)
   {
-    return popupMenu.add(action);
+    return getPopupMenu().add(action);
   }
 
   /**
@@ -209,7 +216,7 @@
    */
   public void remove(JMenuItem item)
   {
-    popupMenu.remove(item);
+    getPopupMenu().remove(item);
   }
 
   /**
@@ -229,8 +240,9 @@
    */
   public void remove(Component component)
   {
-    int index = popupMenu.getComponentIndex(component);
-    popupMenu.remove(index);
+    int index = getPopupMenu().getComponentIndex(component);
+      getPopupMenu().remove(index);
   }
 
   /**
@@ -267,7 +279,7 @@
     if (index < 0)
       throw new IllegalArgumentException("index less than zero");
 
-    popupMenu.insert(item, index);
+    getPopupMenu().insert(item, index);
     return item;
   }
 
@@ -381,7 +393,7 @@
 	super.setSelected(false);
 	super.setArmed(false);
 	fireMenuDeselected();
-	popupMenu.setVisible(false);
+        getPopupMenu().setVisible(false);
       }
   }
 
@@ -404,7 +416,7 @@
    */
   public boolean isPopupMenuVisible()
   {
-    return popupMenu.isVisible();
+    return getPopupMenu().isVisible();
   }
 
   /**
@@ -415,7 +427,7 @@
   public void setPopupMenuVisible(boolean popup)
   {
     if (getModel().isEnabled())
-      popupMenu.setVisible(popup);
+      getPopupMenu().setVisible(popup);
   }
 
   /**
@@ -568,7 +583,7 @@
    */
   public int getMenuComponentCount()
   {
-    return popupMenu.getComponentCount();
+    return getPopupMenu().getComponentCount();
   }
 
   /**
@@ -591,7 +609,7 @@
    */
   public Component[] getMenuComponents()
   {
-    return popupMenu.getComponents();
+    return getPopupMenu().getComponents();
   }
 
   /**
@@ -626,6 +644,11 @@
    */
   public JPopupMenu getPopupMenu()
   {
+    if (popupMenu == null)
+      {
+        popupMenu = new JPopupMenu();
+        popupMenu.setInvoker(this);
+      }
     return popupMenu;
   }
 

Reply via email to