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;
}