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/java/awt/MenuItem.java | |
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/java/awt/MenuItem.java')
-rw-r--r-- | libjava/java/awt/MenuItem.java | 628 |
1 files changed, 440 insertions, 188 deletions
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 |