summaryrefslogtreecommitdiff
path: root/java/awt/MenuBar.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/awt/MenuBar.java')
-rw-r--r--java/awt/MenuBar.java575
1 files changed, 261 insertions, 314 deletions
diff --git a/java/awt/MenuBar.java b/java/awt/MenuBar.java
index 97156aefe..3c6b91564 100644
--- a/java/awt/MenuBar.java
+++ b/java/awt/MenuBar.java
@@ -1,5 +1,6 @@
/* MenuBar.java -- An AWT menu bar class
- Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005, 2006
+ Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -39,7 +40,6 @@ exception statement from your version. */
package java.awt;
import java.awt.peer.MenuBarPeer;
-import java.awt.peer.MenuComponentPeer;
import java.io.Serializable;
import java.util.Enumeration;
@@ -60,364 +60,311 @@ public class MenuBar extends MenuComponent
implements MenuContainer, Serializable, Accessible
{
-/*
- * Static Variables
- */
+//Serialization Constant
+ private static final long serialVersionUID = -4930327919388951260L;
-// Serialization Constant
-private static final long serialVersionUID = -4930327919388951260L;
-
-/*************************************************************************/
-
-/*
- * Instance Variables
- */
-
-/**
- * @serial The menu used for providing help information
- */
-private Menu helpMenu;
+ /**
+ * @serial The menu used for providing help information
+ */
+ private Menu helpMenu;
-/**
- * @serial The menus contained in this menu bar.
- */
-private Vector menus = new Vector();
+ /**
+ * @serial The menus contained in this menu bar.
+ */
+ private Vector menus = new Vector();
/**
- * The accessible context for this component.
+ * Initializes a new instance of <code>MenuBar</code>.
*
- * @see #getAccessibleContext()
- * @serial ignored.
+ * @throws HeadlessException if GraphicsEnvironment.isHeadless() is true
*/
- private transient AccessibleContext accessibleContext;
-
-/*************************************************************************/
-
-/*
- * Constructors
- */
-
-/**
- * Initializes a new instance of <code>MenuBar</code>.
- *
- * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
- */
-public
-MenuBar()
-{
- if (GraphicsEnvironment.isHeadless())
- throw new HeadlessException ();
-}
-
-/*************************************************************************/
-
-/*
- * Instance Methods
- */
-
-/**
- * Returns the help menu for this menu bar. This may be <code>null</code>.
- *
- * @return The help menu for this menu bar.
- */
-public Menu
-getHelpMenu()
-{
- return(helpMenu);
-}
-
-/*************************************************************************/
-
-/**
- * Sets the help menu for this menu bar.
- *
- * @param menu The new help menu for this menu bar.
- */
-public synchronized void
-setHelpMenu(Menu menu)
-{
- if (helpMenu != null)
- {
- helpMenu.removeNotify ();
- helpMenu.parent = null;
- }
- helpMenu = menu;
-
- if (menu.parent != null)
- menu.parent.remove (menu);
- menu.parent = this;
-
- MenuBarPeer peer = (MenuBarPeer) getPeer ();
- if (peer != null)
- {
- menu.addNotify();
- peer.addHelpMenu (menu);
- }
-}
-
-/*************************************************************************/
-
-/** Add a menu to this MenuBar. If the menu has already has a
- * parent, it is first removed from its old parent before being
- * added.
- *
- * @param menu The menu to add.
- *
- * @return The menu that was added.
- */
-public synchronized Menu
-add(Menu menu)
-{
- if (menu.parent != null)
- menu.parent.remove (menu);
-
- menu.parent = this;
- menus.addElement(menu);
-
- if (peer != null)
- {
- menu.addNotify();
- }
-
- return(menu);
-}
-
-/*************************************************************************/
+ public MenuBar()
+ {
+ if (GraphicsEnvironment.isHeadless())
+ throw new HeadlessException();
+ }
-/**
- * Removes the menu at the specified index.
- *
- * @param index The index of the menu to remove from the menu bar.
- */
-public synchronized void
-remove(int index)
-{
- Menu m = (Menu) menus.get (index);
- menus.remove (index);
- m.removeNotify ();
- m.parent = null;
+ /**
+ * Returns the help menu for this menu bar. This may be <code>null</code>.
+ *
+ * @return the help menu for this menu bar
+ */
+ public Menu getHelpMenu()
+ {
+ return helpMenu;
+ }
- if (peer != null)
- {
- MenuBarPeer mp = (MenuBarPeer) peer;
- mp.delMenu (index);
- }
-}
+ /**
+ * Sets the help menu for this menu bar.
+ *
+ * @param menu the new help menu for this menu bar
+ */
+ public synchronized void setHelpMenu(Menu menu)
+ {
+ MenuBarPeer myPeer = (MenuBarPeer) getPeer ();
+
+ if (helpMenu != null)
+ {
+ if (myPeer != null)
+ helpMenu.removeNotify();
+ helpMenu.setParent(null);
+ }
+ helpMenu = menu;
+
+ MenuContainer parent = menu.getParent();
+ if (parent != null)
+ parent.remove(menu);
+ menu.setParent(this);
+
+ if (myPeer != null)
+ {
+ menu.addNotify();
+ myPeer.addHelpMenu(menu);
+ }
+ }
-/*************************************************************************/
+ /**
+ * Add a menu to this MenuBar. If the menu has already has a
+ * parent, it is first removed from its old parent before being
+ * added.
+ *
+ * @param menu the menu to add
+ *
+ * @return the menu that was added
+ */
+ public synchronized Menu add(Menu menu)
+ {
+ MenuBarPeer myPeer = (MenuBarPeer) getPeer ();
-/**
- * Removes the specified menu from the menu bar.
- *
- * @param menu The menu to remove from the menu bar.
- */
-public void
-remove(MenuComponent menu)
-{
- int index = menus.indexOf(menu);
- if (index == -1)
- return;
+ MenuContainer parent = menu.getParent();
+ if (parent != null)
+ parent.remove(menu);
- remove(index);
-}
+ menus.addElement(menu);
+ menu.setParent(this);
-/*************************************************************************/
+ if (myPeer != null)
+ {
+ menu.addNotify();
+ myPeer.addMenu(menu);
+ }
+ return menu;
+ }
-/**
- * Returns the number of elements in this menu bar.
- *
- * @return The number of elements in the menu bar.
- */
-public int
-getMenuCount()
-{
- return countMenus ();
-}
+ /**
+ * Removes the menu at the specified index.
+ *
+ * @param index the index of the menu to remove from the menu bar
+ */
+ public synchronized void remove(int index)
+ {
+ Menu m = (Menu) menus.remove(index);
+ MenuBarPeer mp = (MenuBarPeer) getPeer();
-/*************************************************************************/
+ if (mp != null)
+ m.removeNotify();
-/**
- * Returns the number of elements in this menu bar.
- *
- * @return The number of elements in the menu bar.
- *
- * @deprecated This method is deprecated in favor of <code>getMenuCount()</code>.
- */
-public int
-countMenus()
-{
- return menus.size () + (getHelpMenu () == null ? 0 : 1);
-}
+ m.setParent(null);
-/*************************************************************************/
+ if (mp != null)
+ mp.delMenu(index);
+ }
-/**
- * Returns the menu at the specified index.
- *
- * @param index the index of the menu
- *
- * @return The requested menu.
- *
- * @exception ArrayIndexOutOfBoundsException If the index is not valid.
- */
-public Menu
-getMenu(int index)
-{
- return((Menu)menus.elementAt(index));
-}
+ /**
+ * Removes the specified menu from the menu bar.
+ *
+ * @param menu the menu to remove from the menu bar
+ */
+ public void remove(MenuComponent menu)
+ {
+ int index = menus.indexOf(menu);
+ if (index == -1)
+ return;
-/*************************************************************************/
+ remove(index);
+ }
-/**
- * Creates this object's native peer.
- */
-public void
-addNotify()
-{
- if (getPeer() == null)
- setPeer((MenuComponentPeer)getToolkit().createMenuBar(this));
- Enumeration e = menus.elements();
- while (e.hasMoreElements())
+ /**
+ * Returns the number of elements in this menu bar.
+ *
+ * @return the number of elements in the menu bar
+ */
+ public int getMenuCount()
{
- Menu mi = (Menu)e.nextElement();
- mi.addNotify();
+ return countMenus();
}
- if (helpMenu != null)
+
+ /**
+ * Returns the number of elements in this menu bar.
+ *
+ * @return the number of elements in the menu bar
+ *
+ * @deprecated This method is deprecated in favor of
+ * <code>getMenuCount()</code>.
+ */
+ public int countMenus()
{
- helpMenu.addNotify();
- ((MenuBarPeer) peer).addHelpMenu(helpMenu);
+ return menus.size() + (getHelpMenu() == null ? 0 : 1);
}
-}
-/*************************************************************************/
-
-/**
- * Destroys this object's native peer.
- */
-public void
-removeNotify()
-{
- Enumeration e = menus.elements();
- while (e.hasMoreElements())
+ /**
+ * Returns the menu at the specified index.
+ *
+ * @param index the index of the menu
+ *
+ * @return the requested menu
+ *
+ * @throws ArrayIndexOutOfBoundsException if the index is not valid
+ */
+ public Menu getMenu(int index)
{
- Menu mi = (Menu) e.nextElement();
- mi.removeNotify();
+ return (Menu) menus.elementAt(index);
}
- super.removeNotify();
-}
-
-/*************************************************************************/
-
-/**
- * Returns a list of all shortcuts for the menus in this menu bar.
- *
- * @return A list of all shortcuts for the menus in this menu bar.
- */
-public synchronized Enumeration<MenuShortcut>
-shortcuts()
-{
- Vector<MenuShortcut> shortcuts = new Vector<MenuShortcut>();
- Enumeration e = menus.elements();
-
- while (e.hasMoreElements())
- {
- Menu menu = (Menu)e.nextElement();
- if (menu.getShortcut() != null)
- shortcuts.addElement(menu.getShortcut());
- }
- return(shortcuts.elements());
-}
+ /**
+ * Creates this object's native peer.
+ */
+ public void addNotify()
+ {
+ MenuBarPeer peer = (MenuBarPeer) getPeer();
+ if (peer == null)
+ {
+ peer = getToolkit().createMenuBar(this);
+ setPeer(peer);
+ }
+
+ Enumeration e = menus.elements();
+ while (e.hasMoreElements())
+ {
+ Menu mi = (Menu)e.nextElement();
+ mi.addNotify();
+ peer.addMenu(mi);
+ }
+
+ if (helpMenu != null)
+ {
+ helpMenu.addNotify();
+ peer.addHelpMenu(helpMenu);
+ }
+ }
-/*************************************************************************/
+ /**
+ * Destroys this object's native peer.
+ */
+ public void removeNotify()
+ {
+ Enumeration e = menus.elements();
+ while (e.hasMoreElements())
+ {
+ Menu mi = (Menu) e.nextElement();
+ mi.removeNotify();
+ }
+ super.removeNotify();
+ }
-/**
- * Returns the menu item for the specified shortcut, or <code>null</code>
- * if no such item exists.
- *
- * @param shortcut The shortcut to return the menu item for.
- *
- * @return The menu item for the specified shortcut.
- */
-public MenuItem
-getShortcutMenuItem(MenuShortcut shortcut)
-{
- Enumeration e = menus.elements();
+ /**
+ * Returns a list of all shortcuts for the menus in this menu bar.
+ *
+ * @return a list of all shortcuts for the menus in this menu bar
+ */
+ public synchronized Enumeration shortcuts()
+ {
+ Vector shortcuts = new Vector();
+ Enumeration e = menus.elements();
- while (e.hasMoreElements())
- {
- Menu menu = (Menu)e.nextElement();
- MenuShortcut s = menu.getShortcut();
- if ((s != null) && (s.equals(shortcut)))
- return(menu);
- }
+ while (e.hasMoreElements())
+ {
+ Menu menu = (Menu)e.nextElement();
+ if (menu.getShortcut() != null)
+ shortcuts.addElement(menu.getShortcut());
+ }
- return(null);
-}
+ return shortcuts.elements();
+ }
-/*************************************************************************/
+ /**
+ * Returns the menu item for the specified shortcut, or <code>null</code>
+ * if no such item exists.
+ *
+ * @param shortcut the shortcut to return the menu item for
+ *
+ * @return the menu item for the specified shortcut
+ */
+ public MenuItem getShortcutMenuItem(MenuShortcut shortcut)
+ {
+ Enumeration e = menus.elements();
-/**
- * Deletes the specified menu shortcut.
- *
- * @param shortcut The shortcut to delete.
- */
-public void
-deleteShortcut(MenuShortcut shortcut)
-{
- MenuItem it;
- // This is a slow implementation, but it probably doesn't matter.
- while ((it = getShortcutMenuItem (shortcut)) != null)
- it.deleteShortcut ();
-}
+ while (e.hasMoreElements())
+ {
+ Menu menu = (Menu) e.nextElement();
+ MenuShortcut s = menu.getShortcut();
+ if ((s != null) && s.equals(shortcut))
+ return menu;
+ }
-/**
- * Gets the AccessibleContext associated with this <code>MenuBar</code>.
- * The context is created, if necessary.
- *
- * @return the associated context
- */
-public AccessibleContext getAccessibleContext()
-{
- /* Create the context if this is the first request */
- if (accessibleContext == null)
- accessibleContext = new AccessibleAWTMenuBar();
- return accessibleContext;
-}
+ return null;
+ }
-/**
- * This class provides accessibility support for AWT menu bars.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- */
-protected class AccessibleAWTMenuBar
- extends AccessibleAWTMenuComponent
-{
-
/**
- * Compatible with JDK 1.4.2 revision 5
+ * Deletes the specified menu shortcut.
+ *
+ * @param shortcut the shortcut to delete
*/
- private static final long serialVersionUID = -8577604491830083815L;
+ public void deleteShortcut(MenuShortcut shortcut)
+ {
+ MenuItem it;
+ // This is a slow implementation, but it probably doesn't matter.
+ while ((it = getShortcutMenuItem (shortcut)) != null)
+ it.deleteShortcut();
+ }
/**
- * This is the default constructor, which simply calls the default
- * constructor of the superclass.
+ * Gets the AccessibleContext associated with this <code>MenuBar</code>.
+ * The context is created, if necessary.
+ *
+ * @return the associated context
*/
- protected AccessibleAWTMenuBar()
+ public AccessibleContext getAccessibleContext()
{
- super();
+ // Create the context if this is the first request.
+ if (accessibleContext == null)
+ accessibleContext = new AccessibleAWTMenuBar();
+ return accessibleContext;
}
/**
- * Returns the accessible role relating to the menu bar.
+ * This class provides accessibility support for AWT menu bars.
*
- * @return <code>AccessibleRole.MENU_BAR</code>.
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
*/
- public AccessibleRole getAccessibleRole()
+ protected class AccessibleAWTMenuBar
+ extends AccessibleAWTMenuComponent
{
- return AccessibleRole.MENU_BAR;
- }
+
+ /**
+ * Compatible with JDK 1.4.2 revision 5
+ */
+ private static final long serialVersionUID = -8577604491830083815L;
+
+ /**
+ * This is the default constructor, which simply calls the default
+ * constructor of the superclass.
+ */
+ protected AccessibleAWTMenuBar()
+ {
+ super();
+ }
-} // class AccessibleAWTMenuBar
+ /**
+ * Returns the accessible role relating to the menu bar.
+ *
+ * @return <code>AccessibleRole.MENU_BAR</code>
+ */
+ public AccessibleRole getAccessibleRole()
+ {
+ return AccessibleRole.MENU_BAR;
+ }
-} // class MenuBar
+ }
+
+}