diff options
author | Tom Tromey <tromey@redhat.com> | 2002-01-18 01:01:58 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2002-01-18 01:01:58 +0000 |
commit | 10185e388637c0d5349447110c02563207746646 (patch) | |
tree | 1daf1069cde70e552af191c6d0e456a883971bf3 /libjava | |
parent | ccc643e212b7470dc23e0d9307442e2c9420caf5 (diff) | |
download | gcc-10185e388637c0d5349447110c02563207746646.zip gcc-10185e388637c0d5349447110c02563207746646.tar.gz gcc-10185e388637c0d5349447110c02563207746646.tar.bz2 |
MenuComponent.java: Merged with Classpath.
* java/awt/MenuComponent.java: Merged with Classpath.
* java/awt/MenuItem.java: Merged with Classpath.
* java/awt/Button.java: Merged with Classpath.
From-SVN: r48975
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 4 | ||||
-rw-r--r-- | libjava/java/awt/Button.java | 367 | ||||
-rw-r--r-- | libjava/java/awt/MenuComponent.java | 414 | ||||
-rw-r--r-- | libjava/java/awt/MenuItem.java | 628 |
4 files changed, 1011 insertions, 402 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 3648d9f..4dece51 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,9 @@ 2002-01-17 Tom Tromey <tromey@redhat.com> + * java/awt/MenuComponent.java: Merged with Classpath. + * java/awt/MenuItem.java: Merged with Classpath. + * java/awt/Button.java: Merged with Classpath. + * java/awt/ActiveEvent.java: Updated copyright. * java/awt/AWTError.java: Replaced with Classpath version. diff --git a/libjava/java/awt/Button.java b/libjava/java/awt/Button.java index 2544e9e..1626047 100644 --- a/libjava/java/awt/Button.java +++ b/libjava/java/awt/Button.java @@ -1,116 +1,277 @@ -/* Copyright (C) 2000 Free Software Foundation +/* Button.java -- AWT button widget + Copyright (C) 1999, 2002 Free Software Foundation, Inc. - This file is part of libjava. +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +As a special exception, if you link this library with other files to +produce an executable, this library does not by itself cause the +resulting executable to be covered by the GNU General Public License. +This exception does not however invalidate any other reasons why the +executable file might be covered by the GNU General Public License. */ -This software is copyrighted work licensed under the terms of the -Libjava License. Please consult the file "LIBJAVA_LICENSE" for -details. */ package java.awt; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.peer.ButtonPeer; import java.awt.peer.ComponentPeer; -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; import java.util.EventListener; /** - * @author Tom Tromey <tromey@cygnus.com> - * @date July 30, 2000 + * This class provides a button widget for the AWT. + * + * @author Aaron M. Renn (arenn@urbanophile.com) + * @author Tom Tromey <tromey@cygnus.com> + */ +public class Button extends Component implements java.io.Serializable +{ + +/* + * Static Variables + */ + +// FIXME: Need readObject/writeObject for serialization + +// Serialization version constant +private static final long serialVersionUID = -8774683716313001058L; + +/*************************************************************************/ + +/* + * Instance Variables + */ + +/** + * @serial The action command name for this button. + */ +private String actionCommand; + +/** + * @serial The label for this button. + */ +private String label; + +// List of ActionListeners for this class. +private transient ActionListener action_listeners; + +/*************************************************************************/ + +/* + * Constructors + */ + +/** + * Initializes a new instance of <code>Button</code> with no label. + */ +public +Button() +{ + this(null); +} + +/*************************************************************************/ + +/** + * Initializes a new instance of <code>Button</code> with the specified + * label. The action command name is also initialized to this value. + * + * @param label The label to display on the button. + */ +public +Button(String label) +{ + this.label = label; + actionCommand = label; +} + +/*************************************************************************/ + +/* + * Instance Variables */ -public class Button extends Component +/** + * Returns the label for this button. + * + * @return The label for this button. + */ +public String +getLabel() { - public Button () - { - this (null); - } - - public Button (String label) - { - this.label = label; - } - - public void addActionListener (ActionListener l) - { - actionListener = AWTEventMulticaster.add (actionListener, l); - } - - public void addNotify () - { - if (peer == null) - peer = getToolkit ().createButton (this); - super.addNotify(); - } - - public String getActionCommand () - { - return actionCommand; - } - - public String getLabel () - { - return label; - } - - protected String paramString () - { - return "Button[" + label + "]"; - } - - void dispatchEventImpl(AWTEvent e) - { - super.dispatchEventImpl(e); - - if (e.id <= ActionEvent.ACTION_LAST - && e.id >= ActionEvent.ACTION_FIRST - && (actionListener != null - || (eventMask & AWTEvent.ACTION_EVENT_MASK) != 0)) - processEvent(e); - } - - protected void processActionEvent (ActionEvent e) - { - if (actionListener != null) - actionListener.actionPerformed (e); - } - - protected void processEvent (AWTEvent e) - { - if (e instanceof ActionEvent) - processActionEvent ((ActionEvent) e); - else - super.processEvent (e); - } - - public void removeActionListener (ActionListener l) - { - actionListener = AWTEventMulticaster.remove (actionListener, l); - } - - public EventListener[] getListeners(Class listenerType) - { - if (listenerType == ActionListener.class) - return getListenersImpl(listenerType, actionListener); - return super.getListeners(listenerType); - } - - public void setActionCommand (String command) - { - this.actionCommand = (command == null) ? label : command; - } - - public void setLabel (String label) - { - this.label = label; - if (peer != null) - { - ButtonPeer bp = (ButtonPeer) peer; - bp.setLabel (label); - } - } - - String label; - String actionCommand; - - transient ActionListener actionListener; + return(label); } + +/*************************************************************************/ + +/** + * Sets the label for this button to the specified value. + * + * @param label The new label for this button. + */ +public synchronized void +setLabel(String label) +{ + this.label = label; + if (peer != null) + { + ButtonPeer bp = (ButtonPeer) peer; + bp.setLabel (label); + } +} + +/*************************************************************************/ + +/** + * Returns the action command name for this button. + * + * @return The action command name for this button. + */ +public String +getActionCommand() +{ + return(actionCommand); +} + +/*************************************************************************/ + +/** + * Sets the action command name for this button to the specified value. + * + * @param actionCommand The new action command name. + */ +public void +setActionCommand(String actionCommand) +{ + this.actionCommand = actionCommand == null ? label : actionCommand; +} + +/*************************************************************************/ + +/** + * Adds a new entry to the list of listeners that will receive + * action events from this button. + * + * @param listener The listener to add. + */ +public synchronized void +addActionListener(ActionListener listener) +{ + action_listeners = AWTEventMulticaster.add(action_listeners, listener); +} + +/*************************************************************************/ + +/** + * Removes the specified listener from the list of listeners that will + * receive action events from this button. + * + * @param listener The listener to remove. + */ +public synchronized void +removeActionListener(ActionListener listener) +{ + action_listeners = AWTEventMulticaster.remove(action_listeners, listener); +} + +public EventListener[] +getListeners(Class listenerType) +{ + if (listenerType == ActionListener.class) + return getListenersImpl(listenerType, action_listeners); + return super.getListeners(listenerType); +} + +/*************************************************************************/ + +/** + * Notifies this button that it should create its native peer object. + */ +public void +addNotify() +{ + if (peer == null) + peer = getToolkit ().createButton (this); + super.addNotify(); +} + +/*************************************************************************/ + +/** + * Processes an event for this button. If the specified event is an + * instance of <code>ActionEvent</code>, then the + * <code>processActionEvent()</code> method is called to dispatch it + * to any registered listeners. Otherwise, the superclass method + * will be invoked. Note that this method will not be called at all + * unless <code>ActionEvent</code>'s are enabled. This will be done + * implicitly if any listeners are added. + * + * @param event The event to process. + */ +protected void +processEvent(AWTEvent event) +{ + if (event instanceof ActionEvent) + processActionEvent((ActionEvent)event); + else + super.processEvent(event); +} + +/*************************************************************************/ + +/** + * This method dispatches an action event for this button to any + * registered listeners. + * + * @param event The event to process. + */ +protected void +processActionEvent(ActionEvent event) +{ + if (action_listeners != null) + action_listeners.actionPerformed(event); +} + +void +dispatchEventImpl(AWTEvent e) +{ + super.dispatchEventImpl(e); + + if (e.id <= ActionEvent.ACTION_LAST + && e.id >= ActionEvent.ACTION_FIRST + && (action_listeners != null + || (eventMask & AWTEvent.ACTION_EVENT_MASK) != 0)) + processEvent(e); +} + +/*************************************************************************/ + +/** + * Returns a debugging string for this button. + * + * @return A debugging string for this button. + */ +protected String +paramString() +{ + return(getClass().getName() + "(label=" + getLabel() + ",actionCommand=" + + getActionCommand() + ")"); +} + +} // class Button + diff --git a/libjava/java/awt/MenuComponent.java b/libjava/java/awt/MenuComponent.java index a6905ed..41a085f 100644 --- a/libjava/java/awt/MenuComponent.java +++ b/libjava/java/awt/MenuComponent.java @@ -1,120 +1,312 @@ -/* Copyright (C) 1999, 2000 Free Software Foundation +/* MenuComponent.java -- Superclass of all AWT menu components + Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc. - This file is part of libgcj. +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +As a special exception, if you link this library with other files to +produce an executable, this library does not by itself cause the +resulting executable to be covered by the GNU General Public License. +This exception does not however invalidate any other reasons why the +executable file might be covered by the GNU General Public License. */ -This software is copyrighted work licensed under the terms of the -Libgcj License. Please consult the file "LIBGCJ_LICENSE" for -details. */ package java.awt; -/* Status: partially complete, untested. */ +import java.awt.peer.MenuComponentPeer; + +// FIXME: Java 1.0 event model unimplemented +/** + * This is the superclass of all non-menu AWT widgets. + * + * @author Aaron M. Renn (arenn@urbanophile.com) + */ public abstract class MenuComponent implements java.io.Serializable { - // Fields from the serialization spec. Decalare others "transient". - Font font; - String name; - boolean nameExplicitlySet; - boolean newEventsOnly; - //AccessibleContext accessibleContext; - - transient MenuContainer parent; - transient java.awt.peer.MenuComponentPeer peer; - - public MenuComponent() - { - } - - public String getName() - { - if (name == null && !nameExplicitlySet) - name = generateName(); - return name; - } - - /** Subclasses should override this to generate unique names like - * "menuitem0". - */ - String generateName() - { - // MenuComponent is abstract. - return null; - } - - public void setName(String name) - { - nameExplicitlySet = true; - this.name = name; - } - - public MenuContainer getParent() - { - return parent; - } - - /** @deprecated Don't use this. */ - public java.awt.peer.MenuComponentPeer getPeer() - { - return peer; - } - - public Font getFont() - { - return font; - } - - public void setFont(Font f) - { - this.font = f; - } - - public void removeNotify() - { - if (peer != null) - peer.dispose (); - peer = null; - } - - /** @deprecated Replaced by dispatchEvent(AWTEvent) */ - public boolean postEvent(Event evt) - { - return false; - } - - public final void dispatchEvent(AWTEvent e) - { - // FIXME - dispatchEventImpl(e); - } - - void dispatchEventImpl(AWTEvent e) - { - // This is overridden by subclasses that support events. - } - - protected void processEvent(AWTEvent e) - { - // Nothing to do here? This is be overridden by subclasses that - // support events. - } - - protected String paramString() - { - return name; - } - - public String toString() - { - return this.getClass().getName() + "[" + paramString() + "]"; - } - - protected final Object getTreeLock() - { - // FIXME: figure out how the tree lock works. - return null; - } - - // Accessibility API not yet implemented. - // public AccessibleContext getAccessibleContext() + +/* + * Static Variables + */ + +// Serialization Constant +private static final long serialVersionUID = -4536902356223894379L; + +/*************************************************************************/ + +/* + * Instance Variables + */ + + // FIXME: missing serialized fields `nameExplicitlySet', + // `newEventsOnly', and `accessibleContext'. + +// The font for this component +private Font font; + +// The name of the component +private String name; + +// The parent of this component +transient MenuContainer parent; + +// The native peer for this componet +transient MenuComponentPeer peer; + +// The synchronization locking object for this component +private transient Object tree_lock = this; + +// The toolkit for this object +private static transient Toolkit toolkit = Toolkit.getDefaultToolkit(); + +/*************************************************************************/ + +/* + * Constructors + */ + +/** + * Default constructor for subclasses. + */ +protected +MenuComponent() +{ } + +/*************************************************************************/ + +/* + * Instance Methods + */ + +/** + * Returns the font in use for this component. + * + * @return The font for this component. + */ +public Font +getFont() +{ + return(font); +} + +/*************************************************************************/ + +/** + * Sets the font for this component to the specified font. + * + * @param font The new font for this component. + */ +public void +setFont(Font font) +{ + this.font = font; +} + +/*************************************************************************/ + +/** + * Returns the name of this component. + * + * @return The name of this component. + */ +public String +getName() +{ + return(name); +} + +/*************************************************************************/ + +/** + * Sets the name of this component to the specified name. + * + * @param name The new name of this component. + */ +public void +setName(String name) +{ + this.name = name; +} + +/*************************************************************************/ + +/** + * Returns the parent of this component. + * + * @return The parent of this component. + */ +public MenuContainer +getParent() +{ + return(parent); +} + +/*************************************************************************/ + +// Sets the parent of this component. +final void +setParent(MenuContainer parent) +{ + this.parent = parent; +} + +/*************************************************************************/ + +/** + * Returns the native windowing system peer for this component. + * + * @return The peer for this component. + */ +public MenuComponentPeer +getPeer() +{ + return(peer); +} + +/*************************************************************************/ + +// Sets the peer for this component. +final void +setPeer(MenuComponentPeer peer) +{ + this.peer = peer; +} + +/*************************************************************************/ + +/** + * Destroys this component's native peer + */ +public void +removeNotify() +{ + if (peer != null) + peer.dispose(); + peer = null; +} + +/*************************************************************************/ + +/** + * Returns the toolkit in use for this component. + * + * @return The toolkit for this component. + */ +final Toolkit +getToolkit() +{ + return(toolkit); +} + +/*************************************************************************/ + +/** + * Returns the object used for synchronization locks on this component + * when performing tree and layout functions. + * + * @return The synchronization lock for this component. + */ +public final Object +getTreeLock() +{ + return(tree_lock); +} + +/*************************************************************************/ + +// The sync lock object for this component. +final void +setTreeLock(Object tree_lock) +{ + this.tree_lock = tree_lock; +} + +/*************************************************************************/ + +/** + * AWT 1.0 event dispatcher. + * + * @deprecated Deprecated in favor of <code>dispatchEvent()</code>. + */ +public boolean +postEvent(Event event) +{ + return(false); +} + +/*************************************************************************/ + +/** + * Sends this event to this component or a subcomponent for processing. + * + * @param event The event to dispatch + */ +public final void +dispatchEvent(AWTEvent event) +{ + // See comment in Component.dispatchEvent(). + dispatchEventImpl(event); +} + +void +dispatchEventImpl(AWTEvent e) +{ + // This is overridden by subclasses that support events. +} + +/*************************************************************************/ + +/** + * Processes the specified event. In this class, this method simply + * calls one of the more specific event handlers. + * + * @param event The event to process. + */ +protected void +processEvent(AWTEvent event) +{ +} + +/*************************************************************************/ + +/** + * Returns a string representation of this component. + * + * @return A string representation of this component + */ +public String +toString() +{ + return(getClass().getName() + "(" + getName() + ")"); +} + +/*************************************************************************/ + +/** + * Returns a debugging string for this component + */ +protected String +paramString() +{ + return(toString()); +} + +// Accessibility API not yet implemented. +// public AccessibleContext getAccessibleContext() + +} // class Component diff --git a/libjava/java/awt/MenuItem.java b/libjava/java/awt/MenuItem.java index b127bfa..538dbcf 100644 --- a/libjava/java/awt/MenuItem.java +++ b/libjava/java/awt/MenuItem.java @@ -1,195 +1,447 @@ -/* Copyright (C) 1999, 2000, 2001 Free Software Foundation +/* MenuItem.java -- An item in a menu + Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. - This file is part of libgcj. +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +As a special exception, if you link this library with other files to +produce an executable, this library does not by itself cause the +resulting executable to be covered by the GNU General Public License. +This exception does not however invalidate any other reasons why the +executable file might be covered by the GNU General Public License. */ -This software is copyrighted work licensed under the terms of the -Libgcj License. Please consult the file "LIBGCJ_LICENSE" for -details. */ package java.awt; -import java.awt.event.*; -import java.util.EventListener; + import java.awt.peer.MenuItemPeer; +import java.awt.peer.MenuComponentPeer; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.EventListener; + +/** + * This class represents an item in a menu. + * + * @author Aaron M. Renn (arenn@urbanophile.com) + */ +public class MenuItem extends MenuComponent implements java.io.Serializable +{ + +// FIXME: The enabled event mask is not used at this time. + +/* + * Static Variables + */ + +// Serialization Constant +private static final long serialVersionUID = -21757335363267194L; + +/*************************************************************************/ + +/* + * Instance Variables + */ + +/** + * @serial The name of the action command generated by this item. + */ +private String actionCommand; + +/** + * @serial Indicates whether or not this menu item is enabled. + */ +private boolean enabled; -public class MenuItem extends MenuComponent -{ - // Fields from the serialization spec. Decalare others "transient". - boolean enabled; - String label; - String actionCommand; - long eventMask; - MenuShortcut shortcut; - int menuItemSerializedDataVersion; - - transient ActionListener actionListener; - - public MenuItem () - { - this.label = ""; - } - - public MenuItem (String label) - { - this.label = label; - } - - public MenuItem (String label, MenuShortcut shortcut) - { - this.label = label; - this.shortcut = shortcut; - } - - public String getLabel() - { - return label; - } - - public synchronized void setLabel(String label) - { - this.label = label; - if (peer != null) - { - MenuItemPeer mp = (MenuItemPeer) peer; - mp.setLabel (label); - } - } - - public boolean isEnabled() - { - return enabled; - } - - public synchronized void setEnabled(boolean b) - { - // The JCL says this method is ignored if the enabled state does - // not change. I take that to mean that the peer is not notified - // in this case. - if (this.enabled != b) - { - this.enabled = b; - if (peer != null) - { - MenuItemPeer mp = (MenuItemPeer) peer; - mp.setEnabled (b); - } - } - } - - /** @deprecated Use setEnabled() instead. */ - public void enable() - { - setEnabled(true); - } - - /** @deprecated Use setEnabled() instead. */ - public void enable(boolean b) - { - setEnabled(b); - } - - /** @deprecated Use setEnabled() instead. */ - public void disable() - { - setEnabled(false); - } - - public MenuShortcut getShortcut() - { - return shortcut; - } - - public void setShortcut(MenuShortcut s) - { - this.shortcut = s; - } - - public void deleteShortcut() - { - setShortcut(null); - } - - protected final void enableEvents(long eventsToEnable) - { - eventMask |= eventsToEnable; - // TODO: see comment in Component.enableEvents(). - } - - protected final void disableEvents(long eventsToDisable) - { - eventMask &= ~eventsToDisable; - } - - public void setActionCommand(String command) - { - this.actionCommand = command; - } - - public String getActionCommand() - { - return actionCommand; - } - - public synchronized void addActionListener(ActionListener l) - { - actionListener = AWTEventMulticaster.add(actionListener, l); - if (actionListener != null) - enableEvents(AWTEvent.ACTION_EVENT_MASK); - } - - public synchronized void removeActionListener(ActionListener l) - { - actionListener = AWTEventMulticaster.remove(actionListener, l); - } - - public void addNotify () - { - if (peer != null) - { - // This choice of toolkit seems unsatisfying, but I'm not sure - // what else to do. - peer = Toolkit.getDefaultToolkit ().createMenuItem (this); - } - } - - /** Returns all registered EventListers of the given listenerType. - * listenerType must be a subclass of EventListener, or a - * ClassClassException is thrown. - * @since 1.3 - */ - public EventListener[] getListeners(Class listenerType) - { - if (listenerType == ActionListener.class) - return Component.getListenersImpl(listenerType, actionListener); - else - return Component.getListenersImpl(listenerType, null); - } - - void dispatchEventImpl(AWTEvent e) - { - if (e.id <= ActionEvent.ACTION_LAST - && e.id >= ActionEvent.ACTION_FIRST - && (actionListener != null - || (eventMask & AWTEvent.ACTION_EVENT_MASK) != 0)) - processEvent(e); - } - - protected void processEvent(AWTEvent e) - { - if (e instanceof ActionEvent) - processActionEvent((ActionEvent) e); - } - - protected void processActionEvent(ActionEvent e) - { - if (actionListener != null) - actionListener.actionPerformed(e); - } - - public String paramString() - { - return name + ",label=" + label; - } - - // Accessibility API not yet implemented. - // public AccessibleContext getAccessibleContext() +/** + * @serial The mask of events that are enabled for this menu item. + */ +private long eventMask; + +/** + * @serial This menu item's label + */ +private String label; + +/** + * @serial The shortcut for this menu item, if any + */ +private MenuShortcut shortcut; + +// The list of action listeners for this menu item. +private transient ActionListener action_listeners; + +/*************************************************************************/ + +/* + * Constructors + */ + +/** + * Initializes a new instance of <code>MenuItem</code> with no label + * and no shortcut. + */ +public +MenuItem() +{ +} + +/*************************************************************************/ + +/** + * Initializes a new instance of <code>MenuItem</code> with the specified + * label and no shortcut. + * + * @param label The label for this menu item. + */ +public +MenuItem(String label) +{ + this.label = label; +} + +/*************************************************************************/ + +/** + * Initializes a new instance of <code>MenuItem</code> with the specified + * label and shortcut. + * + * @param label The label for this menu item. + * @param shortcut The shortcut for this menu item. + */ +public +MenuItem(String label, MenuShortcut shortcut) +{ + this.label = label; + this.shortcut = shortcut; +} + +/*************************************************************************/ + +/* + * Instance Methods + */ + +/** + * Returns the label for this menu item, which may be <code>null</code>. + * + * @return The label for this menu item. + */ +public String +getLabel() +{ + return(label); +} + +/*************************************************************************/ + +/** + * This method sets the label for this menu to the specified value. + * + * @param label The new label for this menu item. + */ +public synchronized void +setLabel(String label) +{ + this.label = label; + if (peer != null) + { + MenuItemPeer mp = (MenuItemPeer) peer; + mp.setLabel (label); + } +} + +/*************************************************************************/ + +/** + * Tests whether or not this menu item is enabled. + * + * @return <code>true</code> if this menu item is enabled, <code>false</code> + * otherwise. + */ +public boolean +isEnabled() +{ + return(enabled); +} + +/*************************************************************************/ + +/** + * Sets the enabled status of this menu item. + * + * @param enabled <code>true</code> to enable this menu item, + * <code>false</code> otherwise. + */ +public synchronized void +setEnabled(boolean enabled) +{ + if (enabled == this.enabled) + return; + + this.enabled = enabled; + if (peer != null) + { + MenuItemPeer mp = (MenuItemPeer) peer; + mp.setEnabled (enabled); + } +} + +/*************************************************************************/ + +/** + * Sets the enabled status of this menu item. + * + * @param enabled <code>true</code> to enable this menu item, + * <code>false</code> otherwise. + * + * @deprecated This method is deprecated in favor of <code>setEnabled()</code>. + */ +public void +enable(boolean enabled) +{ + setEnabled(enabled); +} + +/*************************************************************************/ + +/** + * Enables this menu item. + * + * @deprecated This method is deprecated in favor of <code>setEnabled()</code>. + */ +public void +enable() +{ + setEnabled(true); +} + +/*************************************************************************/ + +/** + * Disables this menu item. + * + * @deprecated This method is deprecated in favor of <code>setEnabled()</code>. + */ +public void +disable() +{ + setEnabled(false); } + +/*************************************************************************/ + +/** + * Returns the shortcut for this menu item, which may be <code>null</code>. + * + * @return The shortcut for this menu item. + */ +public MenuShortcut +getShortcut() +{ + return(shortcut); +} + +/*************************************************************************/ + +/** + * Sets the shortcut for this menu item to the specified value. This + * must be done before the native peer is created. + * + * @param shortcut The new shortcut for this menu item. + */ +public void +setShortcut(MenuShortcut shortcut) +{ + this.shortcut = shortcut; +} + +/*************************************************************************/ + +/** + * Deletes the shortcut for this menu item if one exists. This must be + * done before the native peer is created. + */ +public void +deleteShortcut() +{ + shortcut = null; +} + +/*************************************************************************/ + +/** + * Returns the name of the action command in the action events + * generated by this menu item. + * + * @return The action command name + */ +public String +getActionCommand() +{ + return(actionCommand); +} + +/*************************************************************************/ + +/** + * Sets the name of the action command in the action events generated by + * this menu item. + * + * @param actionCommand The new action command name. + */ +public void +setActionCommand(String actionCommand) +{ + this.actionCommand = actionCommand; +} + +/*************************************************************************/ + +/** + * Enables the specified events. This is done automatically when a + * listener is added and does not normally need to be done by + * application code. + * + * @param events The events to enable, which should be the bit masks + * from <code>AWTEvent</code>. + */ +protected final void +enableEvents(long events) +{ + eventMask |= events; + // TODO: see comment in Component.enableEvents(). +} + +/*************************************************************************/ + +/** + * Disables the specified events. + * + * @param events The events to enable, which should be the bit masks + * from <code>AWTEvent</code>. + */ +protected final void +disableEvents(long events) +{ + eventMask &= ~events; +} + +/*************************************************************************/ + +/** + * Creates the native peer for this object. + */ +public void +addNotify() +{ + if (peer != null) + peer = getToolkit ().createMenuItem (this); +} + +/*************************************************************************/ + +/** + * Adds the specified listener to the list of registered action listeners + * for this component. + * + * @param listener The listener to add. + */ +public synchronized void +addActionListener(ActionListener listener) +{ + action_listeners = AWTEventMulticaster.add(action_listeners, listener); + + enableEvents(AWTEvent.ACTION_EVENT_MASK); +} + +public synchronized void +removeActionListener(ActionListener l) +{ + action_listeners = AWTEventMulticaster.remove(action_listeners, l); +} + +/** Returns all registered EventListers of the given listenerType. + * listenerType must be a subclass of EventListener, or a + * ClassClassException is thrown. + * @since 1.3 + */ +public EventListener[] +getListeners(Class listenerType) +{ + if (listenerType == ActionListener.class) + return Component.getListenersImpl(listenerType, action_listeners); + else + return Component.getListenersImpl(listenerType, null); +} + +/*************************************************************************/ + +void +dispatchEventImpl(AWTEvent e) +{ + if (e.id <= ActionEvent.ACTION_LAST + && e.id >= ActionEvent.ACTION_FIRST + && (action_listeners != null + || (eventMask & AWTEvent.ACTION_EVENT_MASK) != 0)) + processEvent(e); +} + +/** + * Processes the specified event by calling <code>processActionEvent()</code> + * if it is an instance of <code>ActionEvent</code>. + * + * @param event The event to process. + */ +protected void +processEvent(AWTEvent event) +{ + if (event instanceof ActionEvent) + processActionEvent((ActionEvent)event); +} + +/*************************************************************************/ + +/** + * Processes the specified event by dispatching it to any registered listeners. + * + * @param event The event to process. + */ +protected void +processActionEvent(ActionEvent event) +{ + if (action_listeners != null) + action_listeners.actionPerformed(event); +} + +/*************************************************************************/ + +/** + * Returns a debugging string for this object. + * + * @return A debugging string for this object. + */ +public String +paramString() +{ + return(getClass().getName() + "(label+" + label + ",enabled=" + enabled + + ",actionCommand=" + actionCommand + ")"); +} + +// Accessibility API not yet implemented. +// public AccessibleContext getAccessibleContext() + +} // class MenuItem |