The following class can be used to get radiobutton
functionality from the checkboxes. Just construct,
passing a hashmap with the checkboxes as keys, and a
value for when that item is selected for values.
/
* @author kraney
/
public class RadioButtonListener implements
ValueChangedListener {
private HashMap checkboxes;
private Object current = null;
private boolean handlingEvent = false;
public RadioButtonListener(HashMap checkboxes) { this.checkboxes = checkboxes; for (Iterator i =
checkboxes.entrySet().iterator(); i.hasNext();) {
Entry e = (Entry)i.next();
CheckBox item = (CheckBox)e.getKey();
item.addListener(this);
if (current != null) {
item.setValue(false);
} else if (item.getValue()) {
current = e.getValue();
}
}
}
public Object getValue() { return current; } /* (non-Javadoc) * @see
jcurses.event.ValueChangedListener#valueChanged(jcurses.event.ValueChangedEvent)
*/
public void valueChanged(ValueChangedEvent event) {
if (handlingEvent) return;
try {
handlingEvent = true;
CheckBox changed = (CheckBox)event.getSource();
// don't let user uncheck all
if (!changed.getValue()) {
changed.setValue(true);
return;
}
current = checkboxes.get(changed);
for (Iterator i =
checkboxes.keySet().iterator(); i.hasNext();) {
CheckBox item = (CheckBox)i.next();
if (!item.equals(changed))
item.setValue(false);
}
} finally {
handlingEvent = false;
}
}
}