aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/awt/MenuBar.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/awt/MenuBar.java')
-rw-r--r--libjava/java/awt/MenuBar.java78
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