2001-04-22 05:05:39 +02:00
|
|
|
/* Copyright (C) 1999, 2000, 2001 Free Software Foundation
|
1999-05-05 13:05:57 +02:00
|
|
|
|
2000-07-12 05:32:07 +02:00
|
|
|
This file is part of libgcj.
|
1999-05-05 13:05:57 +02:00
|
|
|
|
|
|
|
This software is copyrighted work licensed under the terms of the
|
2000-07-12 05:32:07 +02:00
|
|
|
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
|
1999-05-05 13:05:57 +02:00
|
|
|
details. */
|
|
|
|
|
|
|
|
package java.awt;
|
|
|
|
import java.awt.event.*;
|
2000-07-12 05:32:07 +02:00
|
|
|
import java.util.EventListener;
|
2000-12-26 01:25:13 +01:00
|
|
|
import java.awt.peer.MenuItemPeer;
|
1999-05-05 13:05:57 +02:00
|
|
|
|
|
|
|
public class MenuItem extends MenuComponent
|
|
|
|
{
|
2000-07-12 05:32:07 +02:00
|
|
|
// Fields from the serialization spec. Decalare others "transient".
|
|
|
|
boolean enabled;
|
|
|
|
String label;
|
|
|
|
String actionCommand;
|
|
|
|
long eventMask;
|
|
|
|
MenuShortcut shortcut;
|
|
|
|
int menuItemSerializedDataVersion;
|
|
|
|
|
|
|
|
transient ActionListener actionListener;
|
|
|
|
|
2000-08-03 14:09:41 +02:00
|
|
|
public MenuItem ()
|
|
|
|
{
|
|
|
|
this.label = "";
|
|
|
|
}
|
|
|
|
|
1999-05-05 13:05:57 +02:00
|
|
|
public MenuItem (String label)
|
|
|
|
{
|
2000-07-12 05:32:07 +02:00
|
|
|
this.label = label;
|
|
|
|
}
|
|
|
|
|
2000-12-26 01:25:13 +01:00
|
|
|
public MenuItem (String label, MenuShortcut shortcut)
|
|
|
|
{
|
|
|
|
this.label = label;
|
|
|
|
this.shortcut = shortcut;
|
|
|
|
}
|
|
|
|
|
2000-07-12 05:32:07 +02:00
|
|
|
public String getLabel()
|
|
|
|
{
|
|
|
|
return label;
|
|
|
|
}
|
|
|
|
|
|
|
|
public synchronized void setLabel(String label)
|
|
|
|
{
|
|
|
|
this.label = label;
|
2000-12-26 01:25:13 +01:00
|
|
|
if (peer != null)
|
|
|
|
{
|
|
|
|
MenuItemPeer mp = (MenuItemPeer) peer;
|
|
|
|
mp.setLabel (label);
|
|
|
|
}
|
2000-07-12 05:32:07 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isEnabled()
|
|
|
|
{
|
|
|
|
return enabled;
|
|
|
|
}
|
|
|
|
|
|
|
|
public synchronized void setEnabled(boolean b)
|
|
|
|
{
|
2000-12-26 01:25:13 +01:00
|
|
|
// 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);
|
|
|
|
}
|
|
|
|
}
|
2000-07-12 05:32:07 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/** @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);
|
1999-05-05 13:05:57 +02:00
|
|
|
}
|
|
|
|
|
2000-07-12 05:32:07 +02:00
|
|
|
protected final void enableEvents(long eventsToEnable)
|
1999-05-05 13:05:57 +02:00
|
|
|
{
|
2000-07-12 05:32:07 +02:00
|
|
|
eventMask |= eventsToEnable;
|
|
|
|
// TODO: see comment in Component.enableEvents().
|
1999-05-05 13:05:57 +02:00
|
|
|
}
|
2000-07-12 05:32:07 +02:00
|
|
|
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
2000-12-26 01:25:13 +01:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2000-07-12 05:32:07 +02:00
|
|
|
/** 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()
|
1999-05-05 13:05:57 +02:00
|
|
|
}
|