| /* Copyright (C) 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.awt.peer.CheckboxPeer; | |
| /** This class implements a component which has an on/off state. Two | |
| * or more Checkboxes can be grouped by a CheckboxGroup. | |
| * @author Tom Tromey <tromey@redhat.com> | |
| * @date December 25, 2000 | |
| */ | |
| public class Checkbox extends Component implements ItemSelectable | |
| { | |
| /** Create a new checkbox. | |
| * @param label The checkbox label. A null value is the same as ""; | |
| * this is the default. | |
| * @param state The initial check state; defaults to false. | |
| * @param group The CheckboxGroup. Defaults to null. | |
| */ | |
| public Checkbox () | |
| { | |
| this (null, null, false); | |
| } | |
| public Checkbox (String label) | |
| { | |
| this (label, null, false); | |
| } | |
| public Checkbox (String label, boolean state) | |
| { | |
| this (label, null, state); | |
| } | |
| public Checkbox (String label, boolean state, CheckboxGroup group) | |
| { | |
| this (label, group, state); | |
| } | |
| public Checkbox (String label, CheckboxGroup group, boolean state) | |
| { | |
| this.label = label; | |
| this.group = group; | |
| 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) | |
| peer = getToolkit ().createCheckbox (this); | |
| super.addNotify (); | |
| } | |
| /** Returns the current CheckboxGroup associated with this | |
| * Checkbox. */ | |
| public CheckboxGroup getCheckboxGroup () | |
| { | |
| return group; | |
| } | |
| /** Returns the current label; might be null. */ | |
| public String getLabel () | |
| { | |
| return label; | |
| } | |
| /** 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. */ | |
| protected String paramString () | |
| { | |
| return ("Checkbox[" | |
| + "state=" + state + "," | |
| + "label=" + label + "," | |
| + "group=" + group + "]"); | |
| } | |
| /** 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 this checkbox's group. | |
| * @param group The new group. null means remove the Checkbox from | |
| * its group. | |
| */ | |
| public void setCheckboxGroup (CheckboxGroup group) | |
| { | |
| this.group = group; | |
| if (peer != null) | |
| { | |
| CheckboxPeer cp = (CheckboxPeer) peer; | |
| cp.setCheckboxGroup (group); | |
| } | |
| } | |
| /** Set the checkbox's label. | |
| * @param label The new label | |
| */ | |
| public synchronized void setLabel (String label) | |
| { | |
| this.label = label; | |
| if (peer != null) | |
| { | |
| CheckboxPeer cp = (CheckboxPeer) peer; | |
| // FIXME: unclear what to do here; we err on the side of | |
| // caution. | |
| cp.setLabel (label == null ? "" : label); | |
| } | |
| } | |
| /** Set the checkbox's state. | |
| * @param state The new state. | |
| */ | |
| public void setState (boolean state) | |
| { | |
| this.state = state; | |
| if (peer != null) | |
| { | |
| CheckboxPeer cp = (CheckboxPeer) peer; | |
| cp.setState (state); | |
| } | |
| } | |
| private ItemListener listeners; | |
| String label; | |
| CheckboxGroup group; | |
| boolean state; | |
| } |