/* JMenuItem.java --
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
package javax.swing;
-// Imports
-import java.awt.*;
-import java.awt.event.*;
-import java.beans.*;
-import java.io.*;
-import javax.accessibility.*;
-import javax.swing.event.*;
-import javax.swing.plaf.*;
+import java.awt.Component;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.EventListener;
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+import javax.swing.UIManager;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import javax.swing.event.MenuDragMouseEvent;
+import javax.swing.event.MenuDragMouseListener;
+import javax.swing.event.MenuKeyEvent;
+import javax.swing.event.MenuKeyListener;
+import javax.swing.plaf.MenuItemUI;
+
/**
- * JMenuItem
- * @author Andrew Selkirk
- * @version 1.0
+ * DOCUMENT ME!
+ *
+ * @author $author$
+ * @version $Revision: 1.2.18.4 $
*/
-public class JMenuItem extends AbstractButton implements Accessible, MenuElement {
-
- //-------------------------------------------------------------
- // Classes ----------------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * AccessibleJMenuItem
- */
- protected class AccessibleJMenuItem extends AccessibleAbstractButton
- implements ChangeListener {
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
-
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * Constructor AccessibleJMenuItem
- * @param component TODO
- */
- AccessibleJMenuItem(JMenuItem component) {
- super(component);
- // TODO
- } // AccessibleJMenuItem()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * stateChanged
- * @param event TODO
- */
- public void stateChanged(ChangeEvent event) {
- // TODO
- } // stateChanged()
-
- /**
- * getAccessibleRole
- * @returns AccessibleRole
- */
- public AccessibleRole getAccessibleRole() {
- return AccessibleRole.MENU_ITEM;
- } // getAccessibleRole()
-
-
- } // AccessibleJMenuItem
-
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * uiClassID
- */
- private static final String uiClassID = "MenuItemUI";
-
- /**
- * accelerator
- */
- private KeyStroke accelerator;
-
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * Constructor JMenuItem
- */
- public JMenuItem() {
- // TODO
- } // JMenuItem()
-
- /**
- * Constructor JMenuItem
- * @param icon TODO
- */
- public JMenuItem(Icon icon) {
- // TODO
- } // JMenuItem()
-
- /**
- * Constructor JMenuItem
- * @param text TODO
- */
- public JMenuItem(String text) {
- // TODO
- } // JMenuItem()
-
- /**
- * Constructor JMenuItem
- * @param action TODO
- */
- public JMenuItem(Action action) {
- // TODO
- } // JMenuItem()
-
- /**
- * Constructor JMenuItem
- * @param text TODO
- * @param icon TODO
- */
- public JMenuItem(String text, Icon icon) {
- // TODO
- } // JMenuItem()
-
- /**
- * Constructor JMenuItem
- * @param text TODO
- * @param mnemonic TODO
- */
- public JMenuItem(String text, int mnemonic) {
- // TODO
- } // JMenuItem()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * readObject
- * @param stream TODO
- * @exception IOException TODO
- * @exception ClassNotFoundException TODO
- */
- private void readObject(ObjectInputStream stream)
- throws IOException, ClassNotFoundException {
- // TODO
- } // readObject()
-
- /**
- * writeObject
- * @param stream TODO
- * @exception IOException TODO
- */
- private void writeObject(ObjectOutputStream stream) throws IOException {
- // TODO
- } // writeObject()
-
- /**
- * init
- * @param text TODO
- * @param icon TODO
- */
- protected void init(String text, Icon icon) {
- // TODO
- } // init()
-
- /**
- * setUI
- * @param ui TODO
- */
- public void setUI(MenuItemUI ui) {
- super.setUI(ui);
- // TODO
- } // setUI()
-
- /**
- * updateUI
- */
- public void updateUI() {
- setUI((MenuItemUI) UIManager.get(this));
- invalidate();
- } // updateUI()
-
- /**
- * getUIClassID
- * @returns String
- */
- public String getUIClassID() {
- return uiClassID;
- } // getUIClassID()
-
- /**
- * isArmed
- * @returns boolean
- */
- public boolean isArmed() {
- return false; // TODO
- } // isArmed()
-
- /**
- * setArmed
- * @param armed TODO
- */
- public void setArmed(boolean armed) {
- // TODO
- } // setArmed()
-
- /**
- * setEnabled
- * @param enabled TODO
- */
- public void setEnabled(boolean enabled) {
- // TODO
- } // setEnabled()
-
- /**
- * getAccelerator
- * @returns KeyStroke
- */
- public KeyStroke getAccelerator() {
- return null; // TODO
- } // getAccelerator()
-
- /**
- * setAccelerator
- * @param keystroke TODO
- */
- public void setAccelerator(KeyStroke keystroke) {
- // TODO
- } // setAccelerator()
-
- /**
- * configurePropertiesFromAction
- * @param action TODO
- */
- protected void configurePropertiesFromAction(Action action) {
- // TODO
- } // configurePropertiesFromAction()
-
- /**
- * createActionPropertyChangeListener
- * @param action TODO
- * @returns PropertyChangeListener
- */
- protected PropertyChangeListener createActionPropertyChangeListener(Action action) {
- return null; // TODO
- } // createActionPropertyChangeListener()
-
- /**
- * processMouseEvent
- * @param event TODO
- * @param path TODO
- * @param manager TODO
- */
- public void processMouseEvent(MouseEvent event, MenuElement[] path,
- MenuSelectionManager manager) {
- // TODO
- } // processMouseEvent()
-
- /**
- * processKeyEvent
- * @param event TODO
- * @param path TODO
- * @param manager TODO
- */
- public void processKeyEvent(KeyEvent event, MenuElement[] path,
- MenuSelectionManager manager) {
- // TODO
- } // processKeyEvent()
-
- /**
- * processMenuDragMouseEvent
- * @param event TODO
- */
- public void processMenuDragMouseEvent(MenuDragMouseEvent event) {
- // TODO
- } // processMenuDragMouseEvent()
-
- /**
- * processMenuKeyEvent
- * @param event TODO
- */
- public void processMenuKeyEvent(MenuKeyEvent event) {
- // TODO
- } // processMenuKeyEvent()
-
- /**
- * fireMenuDragMouseEntered
- * @param event TODO
- */
- protected void fireMenuDragMouseEntered(MenuDragMouseEvent event) {
- // TODO
- } // fireMenuDragMouseEntered()
-
- /**
- * fireMenuDragMouseExited
- * @param event TODO
- */
- protected void fireMenuDragMouseExited(MenuDragMouseEvent event) {
- // TODO
- } // fireMenuDragMouseExited()
-
- /**
- * fireMenuDragMouseDragged
- * @param event TODO
- */
- protected void fireMenuDragMouseDragged(MenuDragMouseEvent event) {
- // TODO
- } // fireMenuDragMouseDragged()
-
- /**
- * fireMenuDragMouseReleased
- * @param event TODO
- */
- protected void fireMenuDragMouseReleased(MenuDragMouseEvent event) {
- // TODO
- } // fireMenuDragMouseReleased()
-
- /**
- * fireMenuKeyPressed
- * @param event TODO
- */
- protected void fireMenuKeyPressed(MenuKeyEvent event) {
- // TODO
- } // fireMenuKeyPressed()
-
- /**
- * fireMenuKeyReleased
- * @param event TODO
- */
- protected void fireMenuKeyReleased(MenuKeyEvent event) {
- // TODO
- } // fireMenuKeyReleased()
-
- /**
- * fireMenuKeyTyped
- * @param event TODO
- */
- protected void fireMenuKeyTyped(MenuKeyEvent event) {
- // TODO
- } // fireMenuKeyTyped()
-
- /**
- * menuSelectionChanged
- * @param changed TODO
- */
- public void menuSelectionChanged(boolean changed) {
- // TODO
- } // menuSelectionChanged()
-
- /**
- * getSubElements
- * @returns MenuElement[]
- */
- public MenuElement[] getSubElements() {
- return null; // TODO
- } // getSubElements()
-
- /**
- * getComponent
- * @returns Component
- */
- public Component getComponent() {
- return null; // TODO
- } // getComponent()
-
- /**
- * addMenuDragMouseListener
- * @param listener TODO
- */
- public void addMenuDragMouseListener(MenuDragMouseListener listener) {
- // TODO
- } // addMenuDragMouseListener()
-
- /**
- * removeMenuDragMouseListener
- * @param listener TODO
- */
- public void removeMenuDragMouseListener(MenuDragMouseListener listener) {
- // TODO
- } // removeMenuDragMouseListener()
-
- /**
- * addMenuKeyListener
- * @param listener TODO
- */
- public void addMenuKeyListener(MenuKeyListener listener) {
- // TODO
- } // addMenuKeyListener()
-
- /**
- * removeMenuKeyListener
- * @param listener TODO
- */
- public void removeMenuKeyListener(MenuKeyListener listener) {
- // TODO
- } // removeMenuKeyListener()
-
- /**
- * paramString
- * @returns String
- */
- protected String paramString() {
- return null; // TODO
- } // paramString()
-
- /**
- * getAccessibleContext
- * @returns AccessibleContext
- */
- public AccessibleContext getAccessibleContext() {
- if (accessibleContext == null) {
- accessibleContext = new AccessibleJMenuItem(this);
- } // if
- return accessibleContext;
- } // getAccessibleContext()
-
-
-} // JMenuItem
+public class JMenuItem extends AbstractButton implements Accessible,
+ MenuElement
+{
+ private static final String uiClassID = "MenuItemUI";
+ private KeyStroke accelerator;
+
+ /**
+ * Creates a new JMenuItem object.
+ */
+ public JMenuItem()
+ {
+ this(null, null);
+ }
+
+ /**
+ * Creates a new JMenuItem object.
+ *
+ * @param icon DOCUMENT ME!
+ */
+ public JMenuItem(Icon icon)
+ {
+ this(null, icon);
+ }
+
+ /**
+ * Creates a new JMenuItem object.
+ *
+ * @param text DOCUMENT ME!
+ */
+ public JMenuItem(String text)
+ {
+ this(text, null);
+ }
+
+ /**
+ * Creates a new JMenuItem object.
+ *
+ * @param action DOCUMENT ME!
+ */
+ public JMenuItem(Action action)
+ {
+ // TODO
+ }
+
+ /**
+ * Creates a new JMenuItem object.
+ *
+ * @param text DOCUMENT ME!
+ * @param icon DOCUMENT ME!
+ */
+ public JMenuItem(String text, Icon icon)
+ {
+ super(text, icon);
+ }
+
+ /**
+ * Creates a new JMenuItem object.
+ *
+ * @param text DOCUMENT ME!
+ * @param mnemonic DOCUMENT ME!
+ */
+ public JMenuItem(String text, int mnemonic)
+ {
+ super(text, null);
+ setMnemonic(mnemonic);
+ }
+
+ //-------------------------------------------------------------
+ // Methods ----------------------------------------------------
+ //-------------------------------------------------------------
+ private void readObject(ObjectInputStream stream)
+ throws IOException, ClassNotFoundException
+ {
+ // TODO
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param stream DOCUMENT ME!
+ *
+ * @throws IOException DOCUMENT ME!
+ */
+ private void writeObject(ObjectOutputStream stream) throws IOException
+ {
+ // TODO
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param text DOCUMENT ME!
+ * @param icon DOCUMENT ME!
+ */
+ protected void init(String text, Icon icon)
+ {
+ // TODO
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param ui DOCUMENT ME!
+ */
+ public void setUI(MenuItemUI ui)
+ {
+ super.setUI(ui);
+ }
+
+ /**
+ * DOCUMENT ME!
+ */
+ public void updateUI()
+ {
+ MenuItemUI mi = ((MenuItemUI) UIManager.getUI(this));
+ setUI(mi);
+ invalidate();
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return $returnType$ DOCUMENT ME!
+ */
+ public String getUIClassID()
+ {
+ return uiClassID;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return $returnType$ DOCUMENT ME!
+ */
+ public boolean isArmed()
+ {
+ return getModel().isArmed();
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param armed DOCUMENT ME!
+ */
+ public void setArmed(boolean armed)
+ {
+ getModel().setArmed(armed);
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param enabled DOCUMENT ME!
+ */
+ public void setEnabled(boolean enabled)
+ {
+ setEnabled(enabled);
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return $returnType$ DOCUMENT ME!
+ */
+ public KeyStroke getAccelerator()
+ {
+ return accelerator;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param keystroke DOCUMENT ME!
+ */
+ public void setAccelerator(KeyStroke keystroke)
+ {
+ this.accelerator = keystroke;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param action DOCUMENT ME!
+ */
+ protected void configurePropertiesFromAction(Action action)
+ {
+ super.configurePropertiesFromAction(action);
+
+ if (action == null)
+ setAccelerator(null);
+ else
+ setAccelerator((KeyStroke) (action.getValue(Action.ACCELERATOR_KEY)));
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param action DOCUMENT ME!
+ *
+ * @return $returnType$ DOCUMENT ME!
+ */
+ protected PropertyChangeListener createActionPropertyChangeListener(Action action)
+ {
+ return new PropertyChangeListener()
+ {
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ Action act = (Action) (e.getSource());
+ configurePropertiesFromAction(act);
+ }
+ };
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param event DOCUMENT ME!
+ * @param path DOCUMENT ME!
+ * @param manager DOCUMENT ME!
+ */
+ public void processMouseEvent(MouseEvent event, MenuElement[] path,
+ MenuSelectionManager manager)
+ {
+ switch (event.getID())
+ {
+ case MouseEvent.MOUSE_CLICKED:
+ doClick();
+ break;
+ case MouseEvent.MOUSE_ENTERED:
+ if (event.getSource() instanceof JMenuItem)
+ {
+ JMenuItem item = (JMenuItem) event.getSource();
+ ButtonModel model = item.getModel();
+
+ if (item.isRolloverEnabled())
+ model.setRollover(true);
+
+ if (model.isPressed()
+ && (event.getModifiers() & InputEvent.BUTTON1_MASK) != 0)
+ model.setArmed(true);
+ else
+ model.setArmed(false);
+ }
+ break;
+ case MouseEvent.MOUSE_EXITED:
+ if (event.getSource() instanceof JMenuItem)
+ {
+ JMenuItem item = (JMenuItem) event.getSource();
+ ButtonModel model = item.getModel();
+ if (item.isRolloverEnabled())
+ model.setRollover(false);
+ model.setArmed(false);
+ }
+ break;
+ case MouseEvent.MOUSE_PRESSED:
+ if (event.getSource() instanceof JMenuItem)
+ {
+ if ((event.getModifiers() & InputEvent.BUTTON1_MASK) != 0)
+ {
+ model.setArmed(true);
+ model.setPressed(true);
+ }
+ }
+ break;
+ case MouseEvent.MOUSE_RELEASED:
+ if (event.getSource() instanceof JMenuItem)
+ {
+ JMenuItem item = (JMenuItem) event.getSource();
+ ButtonModel model = item.getModel();
+ if ((event.getModifiers() & InputEvent.BUTTON1_MASK) != 0)
+ {
+ model.setPressed(false);
+ model.setArmed(false);
+ manager.clearSelectedPath();
+ }
+ }
+ break;
+ case MouseEvent.MOUSE_MOVED:
+ break;
+ case MouseEvent.MOUSE_DRAGGED:
+ MenuDragMouseEvent e = new MenuDragMouseEvent((Component) event
+ .getSource(),
+ event.getID(),
+ event.getWhen(),
+ event.getModifiers(),
+ event.getX(),
+ event.getY(),
+ event.getClickCount(),
+ event.isPopupTrigger(),
+ path, manager);
+ processMenuDragMouseEvent(e);
+ break;
+ }
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param event DOCUMENT ME!
+ * @param path DOCUMENT ME!
+ * @param manager DOCUMENT ME!
+ */
+ public void processKeyEvent(KeyEvent event, MenuElement[] path,
+ MenuSelectionManager manager)
+ {
+ // TODO
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param event DOCUMENT ME!
+ */
+ public void processMenuDragMouseEvent(MenuDragMouseEvent event)
+ {
+ switch (event.getID())
+ {
+ case MouseEvent.MOUSE_ENTERED:
+ fireMenuDragMouseEntered(event);
+ break;
+ case MouseEvent.MOUSE_EXITED:
+ fireMenuDragMouseExited(event);
+ break;
+ case MouseEvent.MOUSE_DRAGGED:
+ fireMenuDragMouseDragged(event);
+ break;
+ case MouseEvent.MOUSE_RELEASED:
+ fireMenuDragMouseReleased(event);
+ break;
+ }
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param event DOCUMENT ME!
+ */
+ public void processMenuKeyEvent(MenuKeyEvent event)
+ {
+ // TODO
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param event DOCUMENT ME!
+ */
+ protected void fireMenuDragMouseEntered(MenuDragMouseEvent event)
+ {
+ EventListener[] ll = listenerList.getListeners(MenuDragMouseListener.class);
+
+ for (int i = 0; i < ll.length; i++)
+ ((MenuDragMouseListener) ll[i]).menuDragMouseEntered(event);
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param event DOCUMENT ME!
+ */
+ protected void fireMenuDragMouseExited(MenuDragMouseEvent event)
+ {
+ EventListener[] ll = listenerList.getListeners(MenuDragMouseListener.class);
+
+ for (int i = 0; i < ll.length; i++)
+ ((MenuDragMouseListener) ll[i]).menuDragMouseExited(event);
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param event DOCUMENT ME!
+ */
+ protected void fireMenuDragMouseDragged(MenuDragMouseEvent event)
+ {
+ EventListener[] ll = listenerList.getListeners(MenuDragMouseListener.class);
+
+ for (int i = 0; i < ll.length; i++)
+ ((MenuDragMouseListener) ll[i]).menuDragMouseDragged(event);
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param event DOCUMENT ME!
+ */
+ protected void fireMenuDragMouseReleased(MenuDragMouseEvent event)
+ {
+ EventListener[] ll = listenerList.getListeners(MenuDragMouseListener.class);
+
+ for (int i = 0; i < ll.length; i++)
+ ((MenuDragMouseListener) ll[i]).menuDragMouseReleased(event);
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param event DOCUMENT ME!
+ */
+ protected void fireMenuKeyPressed(MenuKeyEvent event)
+ {
+ // TODO
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param event DOCUMENT ME!
+ */
+ protected void fireMenuKeyReleased(MenuKeyEvent event)
+ {
+ // TODO
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param event DOCUMENT ME!
+ */
+ protected void fireMenuKeyTyped(MenuKeyEvent event)
+ {
+ // TODO
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param changed DOCUMENT ME!
+ */
+ public void menuSelectionChanged(boolean changed)
+ {
+ if (changed)
+ model.setArmed(true);
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return $returnType$ DOCUMENT ME!
+ */
+ public MenuElement[] getSubElements()
+ {
+ return new MenuElement[0];
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return $returnType$ DOCUMENT ME!
+ */
+ public Component getComponent()
+ {
+ return this;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param listener DOCUMENT ME!
+ */
+ public void addMenuDragMouseListener(MenuDragMouseListener listener)
+ {
+ listenerList.add(MenuDragMouseListener.class, listener);
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param listener DOCUMENT ME!
+ */
+ public void removeMenuDragMouseListener(MenuDragMouseListener listener)
+ {
+ listenerList.remove(MenuDragMouseListener.class, listener);
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param listener DOCUMENT ME!
+ */
+ public void addMenuKeyListener(MenuKeyListener listener)
+ {
+ listenerList.add(MenuKeyListener.class, listener);
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param listener DOCUMENT ME!
+ */
+ public void removeMenuKeyListener(MenuKeyListener listener)
+ {
+ listenerList.remove(MenuKeyListener.class, listener);
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return $returnType$ DOCUMENT ME!
+ */
+ protected String paramString()
+ {
+ return "JMenuItem";
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return $returnType$ DOCUMENT ME!
+ */
+ public AccessibleContext getAccessibleContext()
+ {
+ if (accessibleContext == null)
+ accessibleContext = new AccessibleJMenuItem(this);
+
+ return accessibleContext;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @author $author$
+ * @version $Revision: 1.2.18.4 $
+ */
+ protected class AccessibleJMenuItem extends AccessibleAbstractButton
+ implements ChangeListener
+ {
+ /**
+ * Creates a new AccessibleJMenuItem object.
+ *
+ * @param component DOCUMENT ME!
+ */
+ AccessibleJMenuItem(JMenuItem component)
+ {
+ super(component);
+
+ // TODO
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param event DOCUMENT ME!
+ */
+ public void stateChanged(ChangeEvent event)
+ {
+ // TODO
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return $returnType$ DOCUMENT ME!
+ */
+ public AccessibleRole getAccessibleRole()
+ {
+ return AccessibleRole.MENU_ITEM;
+ }
+ }
+}