gcc/libjava/java/awt/MenuItem.java

196 lines
4.1 KiB
Java
Raw Normal View History

/* Copyright (C) 1999, 2000, 2001 Free Software Foundation
2000-07-12 05:32:07 +02:00
This file is part of libgcj.
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
details. */
package java.awt;
import java.awt.event.*;
2000-07-12 05:32:07 +02:00
import java.util.EventListener;
import java.awt.peer.MenuItemPeer;
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;
public MenuItem ()
{
this.label = "";
}
public MenuItem (String label)
{
2000-07-12 05:32:07 +02:00
this.label = label;
}
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;
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)
{
// 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);
}
2000-07-12 05:32:07 +02:00
protected final void enableEvents(long eventsToEnable)
{
2000-07-12 05:32:07 +02:00
eventMask |= eventsToEnable;
// TODO: see comment in Component.enableEvents().
}
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);
}
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()
}