Commit 10185e38 by Tom Tromey Committed by Tom Tromey

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
parent ccc643e2
2002-01-17 Tom Tromey <tromey@redhat.com> 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/ActiveEvent.java: Updated copyright.
* java/awt/AWTError.java: Replaced with Classpath version. * java/awt/AWTError.java: Replaced with Classpath version.
......
/* 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; package java.awt;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.peer.ButtonPeer; import java.awt.peer.ButtonPeer;
import java.awt.peer.ComponentPeer; import java.awt.peer.ComponentPeer;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.EventListener; import java.util.EventListener;
/** /**
* @author Tom Tromey <tromey@cygnus.com> * This class provides a button widget for the AWT.
* @date July 30, 2000 *
* @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 () return(label);
{
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;
} }
/*************************************************************************/
/**
* 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
/* 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; 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 public abstract class MenuComponent implements java.io.Serializable
{ {
// Fields from the serialization spec. Decalare others "transient".
Font font; /*
String name; * Static Variables
boolean nameExplicitlySet; */
boolean newEventsOnly;
//AccessibleContext accessibleContext; // Serialization Constant
private static final long serialVersionUID = -4536902356223894379L;
transient MenuContainer parent;
transient java.awt.peer.MenuComponentPeer peer; /*************************************************************************/
public MenuComponent() /*
{ * Instance Variables
} */
public String getName() // FIXME: missing serialized fields `nameExplicitlySet',
{ // `newEventsOnly', and `accessibleContext'.
if (name == null && !nameExplicitlySet)
name = generateName(); // The font for this component
return name; private Font font;
}
// The name of the component
/** Subclasses should override this to generate unique names like private String name;
* "menuitem0".
*/ // The parent of this component
String generateName() transient MenuContainer parent;
{
// MenuComponent is abstract. // The native peer for this componet
return null; transient MenuComponentPeer peer;
}
// The synchronization locking object for this component
public void setName(String name) private transient Object tree_lock = this;
{
nameExplicitlySet = true; // The toolkit for this object
this.name = name; private static transient Toolkit toolkit = Toolkit.getDefaultToolkit();
}
/*************************************************************************/
public MenuContainer getParent()
{ /*
return parent; * Constructors
} */
/** @deprecated Don't use this. */ /**
public java.awt.peer.MenuComponentPeer getPeer() * Default constructor for subclasses.
{ */
return peer; protected
} MenuComponent()
{
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()
} }
/*************************************************************************/
/*
* 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
/* 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; package java.awt;
import java.awt.event.*;
import java.util.EventListener;
import java.awt.peer.MenuItemPeer; 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 /**
{ * @serial The mask of events that are enabled for this menu item.
// Fields from the serialization spec. Decalare others "transient". */
boolean enabled; private long eventMask;
String label;
String actionCommand; /**
long eventMask; * @serial This menu item's label
MenuShortcut shortcut; */
int menuItemSerializedDataVersion; private String label;
transient ActionListener actionListener; /**
* @serial The shortcut for this menu item, if any
public MenuItem () */
{ private MenuShortcut shortcut;
this.label = "";
} // The list of action listeners for this menu item.
private transient ActionListener action_listeners;
public MenuItem (String label)
{ /*************************************************************************/
this.label = label;
} /*
* Constructors
public MenuItem (String label, MenuShortcut shortcut) */
{
this.label = label; /**
this.shortcut = shortcut; * Initializes a new instance of <code>MenuItem</code> with no label
} * and no shortcut.
*/
public String getLabel() public
{ MenuItem()
return label; {
} }
public synchronized void setLabel(String label) /*************************************************************************/
{
this.label = label; /**
if (peer != null) * Initializes a new instance of <code>MenuItem</code> with the specified
{ * label and no shortcut.
MenuItemPeer mp = (MenuItemPeer) peer; *
mp.setLabel (label); * @param label The label for this menu item.
} */
} public
MenuItem(String label)
public boolean isEnabled() {
{ this.label = label;
return enabled; }
}
/*************************************************************************/
public synchronized void setEnabled(boolean b)
{ /**
// The JCL says this method is ignored if the enabled state does * Initializes a new instance of <code>MenuItem</code> with the specified
// not change. I take that to mean that the peer is not notified * label and shortcut.
// in this case. *
if (this.enabled != b) * @param label The label for this menu item.
{ * @param shortcut The shortcut for this menu item.
this.enabled = b; */
if (peer != null) public
{ MenuItem(String label, MenuShortcut shortcut)
MenuItemPeer mp = (MenuItemPeer) peer; {
mp.setEnabled (b); this.label = label;
} this.shortcut = shortcut;
} }
}
/*************************************************************************/
/** @deprecated Use setEnabled() instead. */
public void enable() /*
{ * Instance Methods
setEnabled(true); */
}
/**
/** @deprecated Use setEnabled() instead. */ * Returns the label for this menu item, which may be <code>null</code>.
public void enable(boolean b) *
{ * @return The label for this menu item.
setEnabled(b); */
} public String
getLabel()
/** @deprecated Use setEnabled() instead. */ {
public void disable() return(label);
{ }
setEnabled(false);
} /*************************************************************************/
public MenuShortcut getShortcut() /**
{ * This method sets the label for this menu to the specified value.
return shortcut; *
} * @param label The new label for this menu item.
*/
public void setShortcut(MenuShortcut s) public synchronized void
{ setLabel(String label)
this.shortcut = s; {
} this.label = label;
if (peer != null)
public void deleteShortcut() {
{ MenuItemPeer mp = (MenuItemPeer) peer;
setShortcut(null); mp.setLabel (label);
} }
}
protected final void enableEvents(long eventsToEnable)
{ /*************************************************************************/
eventMask |= eventsToEnable;
// TODO: see comment in Component.enableEvents(). /**
} * Tests whether or not this menu item is enabled.
*
protected final void disableEvents(long eventsToDisable) * @return <code>true</code> if this menu item is enabled, <code>false</code>
{ * otherwise.
eventMask &= ~eventsToDisable; */
} public boolean
isEnabled()
public void setActionCommand(String command) {
{ return(enabled);
this.actionCommand = command; }
}
/*************************************************************************/
public String getActionCommand()
{ /**
return actionCommand; * Sets the enabled status of this menu item.
} *
* @param enabled <code>true</code> to enable this menu item,
public synchronized void addActionListener(ActionListener l) * <code>false</code> otherwise.
{ */
actionListener = AWTEventMulticaster.add(actionListener, l); public synchronized void
if (actionListener != null) setEnabled(boolean enabled)
enableEvents(AWTEvent.ACTION_EVENT_MASK); {
} if (enabled == this.enabled)
return;
public synchronized void removeActionListener(ActionListener l)
{ this.enabled = enabled;
actionListener = AWTEventMulticaster.remove(actionListener, l); if (peer != null)
} {
MenuItemPeer mp = (MenuItemPeer) peer;
public void addNotify () mp.setEnabled (enabled);
{ }
if (peer != null) }
{
// This choice of toolkit seems unsatisfying, but I'm not sure /*************************************************************************/
// what else to do.
peer = Toolkit.getDefaultToolkit ().createMenuItem (this); /**
} * Sets the enabled status of this menu item.
} *
* @param enabled <code>true</code> to enable this menu item,
/** Returns all registered EventListers of the given listenerType. * <code>false</code> otherwise.
* listenerType must be a subclass of EventListener, or a *
* ClassClassException is thrown. * @deprecated This method is deprecated in favor of <code>setEnabled()</code>.
* @since 1.3 */
*/ public void
public EventListener[] getListeners(Class listenerType) enable(boolean enabled)
{ {
if (listenerType == ActionListener.class) setEnabled(enabled);
return Component.getListenersImpl(listenerType, actionListener); }
else
return Component.getListenersImpl(listenerType, null); /*************************************************************************/
}
/**
void dispatchEventImpl(AWTEvent e) * Enables this menu item.
{ *
if (e.id <= ActionEvent.ACTION_LAST * @deprecated This method is deprecated in favor of <code>setEnabled()</code>.
&& e.id >= ActionEvent.ACTION_FIRST */
&& (actionListener != null public void
|| (eventMask & AWTEvent.ACTION_EVENT_MASK) != 0)) enable()
processEvent(e); {
} setEnabled(true);
}
protected void processEvent(AWTEvent e)
{ /*************************************************************************/
if (e instanceof ActionEvent)
processActionEvent((ActionEvent) e); /**
} * Disables this menu item.
*
protected void processActionEvent(ActionEvent e) * @deprecated This method is deprecated in favor of <code>setEnabled()</code>.
{ */
if (actionListener != null) public void
actionListener.actionPerformed(e); disable()
} {
setEnabled(false);
public String paramString()
{
return name + ",label=" + label;
}
// Accessibility API not yet implemented.
// public AccessibleContext getAccessibleContext()
} }
/*************************************************************************/
/**
* 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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment