2001-04-22 05:05:39 +02:00
|
|
|
/* Copyright (C) 2000, 2001 Free Software Foundation
|
2000-08-03 14:09:41 +02:00
|
|
|
|
|
|
|
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;
|
2000-12-26 08:18:16 +01:00
|
|
|
import java.awt.peer.CheckboxMenuItemPeer;
|
|
|
|
import java.awt.event.ItemListener;
|
|
|
|
import java.awt.event.ItemEvent;
|
2000-08-03 14:09:41 +02:00
|
|
|
|
2000-12-26 08:18:16 +01:00
|
|
|
/** This implements a menu item which keeps track of a boolean state.
|
|
|
|
* @author Tom Tromey <tromey@redhat.com>
|
|
|
|
* @date December 25, 2000
|
|
|
|
*/
|
|
|
|
public class CheckboxMenuItem extends MenuItem implements ItemSelectable
|
2000-08-03 14:09:41 +02:00
|
|
|
{
|
2000-12-26 08:18:16 +01:00
|
|
|
/** Create a new CheckboxMenuItem.
|
|
|
|
* @param label The checkbox label. A null value is the same as "";
|
|
|
|
* null is the default.
|
|
|
|
* @param state The initial check state; defaults to false.
|
|
|
|
*/
|
|
|
|
public CheckboxMenuItem ()
|
|
|
|
{
|
|
|
|
this (null, false);
|
|
|
|
}
|
|
|
|
|
|
|
|
public CheckboxMenuItem (String label)
|
|
|
|
{
|
|
|
|
this (label, false);
|
|
|
|
}
|
|
|
|
|
|
|
|
public CheckboxMenuItem (String label, boolean state)
|
|
|
|
{
|
|
|
|
this.label = label;
|
|
|
|
this.state = state;
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Add a listener for item events.
|
|
|
|
* @param listener The listener to add.
|
|
|
|
*/
|
|
|
|
public synchronized void addItemListener (ItemListener listener)
|
|
|
|
{
|
|
|
|
listeners = AWTEventMulticaster.add (listeners, listener);
|
|
|
|
}
|
|
|
|
|
|
|
|
/** This creates the component's peer. */
|
|
|
|
public void addNotify ()
|
|
|
|
{
|
|
|
|
if (peer != null)
|
|
|
|
{
|
|
|
|
// This choice of toolkit seems unsatisfying, but I'm not sure
|
|
|
|
// what else to do.
|
|
|
|
peer = Toolkit.getDefaultToolkit ().createCheckboxMenuItem (this);
|
|
|
|
}
|
2001-04-22 05:05:39 +02:00
|
|
|
super.addNotify ();
|
2000-12-26 08:18:16 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/** Returns this checkbox's label if this checkbox is selected. */
|
|
|
|
public Object[] getSelectedObjects ()
|
|
|
|
{
|
|
|
|
Object[] r;
|
|
|
|
if (state)
|
|
|
|
{
|
|
|
|
r = new Object[1];
|
|
|
|
r[0] = label;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
r = new Object[0];
|
|
|
|
return r;
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Returns the current state of this checkbox. */
|
|
|
|
public boolean getState ()
|
|
|
|
{
|
|
|
|
return state;
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Generates a String representation of this Checkbox's state. */
|
|
|
|
public String paramString ()
|
|
|
|
{
|
|
|
|
return ("[" + getClass ().getName ()
|
|
|
|
+ "state=" + state + ","
|
|
|
|
+ "label=" + label + "]");
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Process an event for this Checkbox.
|
|
|
|
* @param event The event the process.
|
|
|
|
*/
|
|
|
|
protected void processEvent (AWTEvent event)
|
|
|
|
{
|
|
|
|
if (event instanceof ItemEvent)
|
|
|
|
processItemEvent ((ItemEvent) event);
|
|
|
|
else
|
|
|
|
super.processEvent (event);
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Process an item event for this Checkbox.
|
|
|
|
* @param event The ItemEvent to process
|
|
|
|
*/
|
|
|
|
protected void processItemEvent (ItemEvent event)
|
|
|
|
{
|
|
|
|
if (listeners != null)
|
|
|
|
listeners.itemStateChanged (event);
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Remove an item listener.
|
|
|
|
* @param listener Item listener to remove.
|
|
|
|
*/
|
|
|
|
public synchronized void removeItemListener (ItemListener listener)
|
|
|
|
{
|
|
|
|
listeners = AWTEventMulticaster.remove (listeners, listener);
|
|
|
|
}
|
|
|
|
|
|
|
|
/** Set the checkbox's state.
|
|
|
|
* @param state The new state.
|
|
|
|
*/
|
|
|
|
public void setState (boolean state)
|
|
|
|
{
|
|
|
|
this.state = state;
|
|
|
|
if (peer != null)
|
|
|
|
{
|
|
|
|
CheckboxMenuItemPeer cp = (CheckboxMenuItemPeer) peer;
|
|
|
|
cp.setState (state);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Private state.
|
|
|
|
String label;
|
|
|
|
boolean state;
|
|
|
|
ItemListener listeners;
|
2000-08-03 14:09:41 +02:00
|
|
|
}
|