/************************************************************************** * Copyright (c) 2001, 2002, 2003 by Punch Telematix. All rights reserved. * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * 1. Redistributions of source code must retain the above copyright * * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * * notice, this list of conditions and the following disclaimer in the * * documentation and/or other materials provided with the distribution. * * 3. Neither the name of Punch Telematix nor the names of * * other contributors may be used to endorse or promote products * * derived from this software without specific prior written permission.* * * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * * IN NO EVENT SHALL PUNCH TELEMATIX OR OTHER CONTRIBUTORS BE LIABLE * * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * **************************************************************************/ package java.awt; import java.awt.event.*; import java.awt.peer.*; public class Checkbox extends Component implements java.io.Serializable, ItemSelectable { String label; CheckboxGroup group; boolean state; ItemListener itemListener; private boolean isGroup; private CheckboxPeer peer; public Checkbox() { this("", false, null); } public Checkbox(String label) { this(label, false, null); } public Checkbox(String label, boolean state) { this(label, state, null); } public Checkbox(String label, CheckboxGroup group, boolean state) { this(label, state, group); } public Checkbox(String label, boolean state, CheckboxGroup group) { setLabel(label); setState(state); setCheckboxGroup(group); if (group != null) { if (state == true || group.getSelectedCheckbox() == null) { group.setSelectedCheckbox(this); } } addNotify(); } public synchronized void addItemListener(ItemListener listener) { itemListener = AWTEventMulticaster.add(itemListener, listener); } public synchronized void removeItemListener(ItemListener listener) { itemListener = AWTEventMulticaster.remove(itemListener, listener); } protected void processEvent(AWTEvent event) { if (event instanceof ItemEvent) { processItemEvent((ItemEvent) event); } else { super.processEvent(event); } } protected void processItemEvent(ItemEvent event) { if (this.itemListener != null) { itemListener.itemStateChanged(event); } } public void addNotify() { if(peer == null) { peer = getToolkit().createCheckbox(this); } if (notified == false) { super.addNotify(); } } public void setCheckboxGroup(CheckboxGroup group) { if (group != null) { this.group = group; if(state) { group.setSelectedCheckbox(this); } } else { this.group = null; } peer.setCheckboxGroup(group); } public CheckboxGroup getCheckboxGroup() { return group; } public void setLabel(String label) { if (this.label != label) { this.label = label; valid = false; peer.setLabel(label); } } public String getLabel() { return label; } public void setState(boolean state) { CheckboxGroup group = this.group; if (group != null) { if (state == false) { if (group.getSelectedCheckbox() == this) { state = true; } } else { if (group.getSelectedCheckbox() != this) { group.setSelectedCheckbox(this); } } } this.state = state; peer.setState(state); } public boolean getState() { return state; } public Object[] getSelectedObjects() { Object[] objects; if (state == true) { objects = new Object[1]; objects[0] = label; } else { objects = null; } return objects; } public String toString() { return getClass().getName() +" - label: "+ label +", bounds: x = "+ x +", y = "+ y +", w = "+ width +", h = "+ height; } protected String paramString(){ return getClass().getName() +" label: "+ label +", bounds:("+ x +", "+ y +", "+ width +", "+ height+") group:"+group; } }