760903c056
* Makefile.in: Rebuilt. * Makefile.am (awt_java_source_files): Added Line2D.java. * java/awt/geom/Line2D.java: Wrote. * java/awt/Menu.java (addNotify): Wrote. * java/awt/PopupMenu.java (addNotify): Implemented. (show): Likewise. * java/awt/Scrollbar.java (addNotify): Call super.addNotify. * java/awt/List.java (addNotify): Call super.addNotify. * java/awt/Label.java (addNotify): Call super.addNotify. * java/awt/FileDialog.java (addNotify): Call super.addNotify. * java/awt/Dialog.java (addNotify): Call super.addNotify. * java/awt/Choice.java (addNotify): Call super.addNotify. * java/awt/CheckboxMenuItem.java (addNotify): Call super.addNotify. * java/awt/Checkbox.java (addNotify): Call super.addNotify. * java/awt/List.java (replaceItem): Notify peer. * java/awt/geom/Rectangle2D.java (Float.setRect(float,float,float,float)): New method. * java/awt/event/ContainerEvent.java (getContainer): Now returns Container. * java/awt/RenderingHints.java (Key): Class now public. * java/awt/Rectangle.java (Rectangle): Now implements Serializable. (getPathIterator): Removed. * java/awt/GraphicsConfiguration.java (GraphicsConfiguration): New constructor. * java/awt/FileDialog.java: Wrote. * java/awt/EventQueue.java (isDispatchThread): Now public. (invokeLater): Likewise. * java/awt/Component.java (setCursor): Update peer. (getFontMetrics): Use peer. * java/awt/ComponentOrientation.java (ComponentOrientation): Class now final. From-SVN: r41489
196 lines
4.1 KiB
Java
196 lines
4.1 KiB
Java
/* Copyright (C) 1999, 2000, 2001 Free Software Foundation
|
|
|
|
This file is part of libgcj.
|
|
|
|
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;
|
|
|
|
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()
|
|
}
|