package org.deegree.igeo.views.swing; import javax.swing.AbstractButton; import javax.swing.ButtonModel; /** * * This class enhances ButtonGroup with clearing function * * @author <a href="mailto:name@deegree.org">Andreas Poth</a> * @author last edited by: $Author$ * * @version $Revision$, $Date$ */ public class ButtonGroup extends javax.swing.ButtonGroup { private static final long serialVersionUID = -767098048339098316L; /** * current selected button model */ private ButtonModel selectedModel = null; @Override public void add( AbstractButton b ) { if ( b == null ) { return; } buttons.addElement( b ); if ( b.isSelected() ) { if ( selectedModel == null ) { selectedModel = b.getModel(); } else { b.setSelected( false ); } } b.getModel().setGroup( this ); } @Override public void remove( AbstractButton b ) { if ( b == null ) { return; } buttons.removeElement( b ); if ( b.getModel() == selectedModel ) { selectedModel = null; } b.getModel().setGroup( null ); } /** * removes selected button model from a {@link ButtonGroup} */ public void removeSelection() { if ( selectedModel != null ) { ButtonModel old = selectedModel; selectedModel = null; old.setSelected( false ); } } @Override public void setSelected( ButtonModel model, boolean b ) { if ( b && model != null && model != selectedModel ) { ButtonModel old = selectedModel; selectedModel = model; if ( old != null ) { old.setSelected( false ); } model.setSelected( true ); } } @Override public boolean isSelected( ButtonModel model ) { return model == selectedModel; } }