diff options
Diffstat (limited to 'libjava/java/awt/MenuBar.java')
-rw-r--r-- | libjava/java/awt/MenuBar.java | 78 |
1 files changed, 72 insertions, 6 deletions
diff --git a/libjava/java/awt/MenuBar.java b/libjava/java/awt/MenuBar.java index 1c9b1c78..6a97fa9 100644 --- a/libjava/java/awt/MenuBar.java +++ b/libjava/java/awt/MenuBar.java @@ -45,14 +45,19 @@ import java.io.Serializable; import java.util.Enumeration; import java.util.Vector; +import javax.accessibility.Accessible; +import javax.accessibility.AccessibleContext; +import javax.accessibility.AccessibleRole; + /** * This class implements a menu bar in the AWT system. * * @author Aaron M. Renn (arenn@urbanophile.com) * @author Tom Tromey <tromey@redhat.com> + * @author Andrew John Hughes <gnu_andrew@member.fsf.org> */ public class MenuBar extends MenuComponent - implements MenuContainer, Serializable + implements MenuContainer, Serializable, Accessible { /* @@ -78,6 +83,14 @@ private Menu helpMenu; */ private Vector menus = new Vector(); + /** + * The accessible context for this component. + * + * @see #getAccessibleContext() + * @serial ignored. + */ + private transient AccessibleContext accessibleContext; + /*************************************************************************/ /* @@ -118,7 +131,7 @@ getHelpMenu() /** * Sets the help menu for this menu bar. * - * @param helpMenu The new help menu for this menu bar. + * @param menu The new help menu for this menu bar. */ public synchronized void setHelpMenu(Menu menu) @@ -134,11 +147,11 @@ setHelpMenu(Menu menu) menu.parent.remove (menu); menu.parent = this; + MenuBarPeer peer = (MenuBarPeer) getPeer (); if (peer != null) { menu.addNotify(); - MenuBarPeer mp = (MenuBarPeer) peer; - mp.addHelpMenu (menu); + peer.addHelpMenu (menu); } } @@ -233,8 +246,7 @@ getMenuCount() public int countMenus() { - // FIXME: How does the help menu fit in here? - return menus.size (); + return menus.size () + (getHelpMenu () == null ? 0 : 1); } /*************************************************************************/ @@ -242,6 +254,8 @@ countMenus() /** * 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. @@ -357,4 +371,56 @@ deleteShortcut(MenuShortcut shortcut) it.deleteShortcut (); } +/** + * 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) + { + /* Create the context */ + accessibleContext = new AccessibleAWTMenuBar(); + } + return accessibleContext; +} + +/** + * 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 + */ + private static final long serialVersionUID = -8577604491830083815L; + + /** + * This is the default constructor, which simply calls the default + * constructor of the superclass. + */ + protected AccessibleAWTMenuBar() + { + super(); + } + + /** + * Returns the accessible role relating to the menu bar. + * + * @return <code>AccessibleRole.MENU_BAR</code>. + */ + public AccessibleRole getAccessibleRole() + { + return AccessibleRole.MENU_BAR; + } + +} // class AccessibleAWTMenuBar + } // class MenuBar |