/*
Code revised from Desktop Java Live:
http://www.sourcebeat.com/downloads/
*/
import java.awt.Dimension;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
import com.jgoodies.binding.adapter.BasicComponentFactory;
import com.jgoodies.binding.adapter.ToggleButtonAdapter;
import com.jgoodies.binding.beans.BeanAdapter;
import com.jgoodies.binding.beans.Model;
import com.jgoodies.binding.value.ValueModel;
import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.FormLayout;
public class ToggleButtonAdapterExample extends JPanel {
public ToggleButtonAdapterExample() {
DefaultFormBuilder defaultFormBuilder = new DefaultFormBuilder(new FormLayout("p, 2dlu, p"));
defaultFormBuilder.setDefaultDialogBorder();
ToggleChangeListener toggleChangeListener = new ToggleChangeListener();
BooleanBean booleanBean = new BooleanBean();
BeanAdapter booleanBeanAdapter = new BeanAdapter(booleanBean, true);
booleanBeanAdapter.addBeanPropertyChangeListener(toggleChangeListener);
ValueModel booleanValueModel = booleanBeanAdapter.getValueModel("enabled");
JCheckBox checkBox = BasicComponentFactory.createCheckBox(booleanValueModel, "Enabled");
JToggleButton booleanToggleButton = new JToggleButton();
booleanToggleButton.setPreferredSize(new Dimension(20, 20));
booleanToggleButton.setModel(new ToggleButtonAdapter(booleanValueModel));
defaultFormBuilder.append("Check Box:", checkBox);
defaultFormBuilder.append("Toggle Button:", booleanToggleButton);
StopAndGoBean stopAndGoBean = new StopAndGoBean();
BeanAdapter stopAndGoBeanAdapter = new BeanAdapter(stopAndGoBean);
stopAndGoBeanAdapter.addBeanPropertyChangeListener(toggleChangeListener);
ValueModel stopAndGoModel = stopAndGoBeanAdapter.getValueModel("state");
JToggleButton stopAndGoToggleButton = new JToggleButton();
stopAndGoToggleButton.setPreferredSize(new Dimension(20, 20));
stopAndGoToggleButton.setModel(new ToggleButtonAdapter(stopAndGoModel, "stop", "go"));
defaultFormBuilder.append("Stop/Go Button:", stopAndGoToggleButton);
add(defaultFormBuilder.getPanel());
}
private class ToggleChangeListener implements PropertyChangeListener {
public void propertyChange(PropertyChangeEvent evt) {
JOptionPane.showMessageDialog(null, "Property " + evt.getPropertyName() + " was changed to " + evt.getNewValue());
}
}
public class BooleanBean extends Model {
public final static String ENABLED_PROPERTY = "enabled";
private Boolean enabled = Boolean.TRUE;
public Boolean getEnabled() {
return enabled;
}
public void setEnabled(Boolean enabled) {
Boolean oldValue = this.enabled;
this.enabled = enabled;
firePropertyChange(ENABLED_PROPERTY, oldValue, this.enabled);
}
}
public class StopAndGoBean extends Model {
public final static String STATE_PROPERTY = "state";
private String state = "stop";
public String getState() {
return state;
}
public void setState(String state) {
String oldState = this.state;
this.state = state;
firePropertyChange(STATE_PROPERTY, oldState, this.state);
}
}
public static void main(String[] a){
JFrame f = new JFrame("ToggleButtonAdapter Example");
f.setDefaultCloseOperation(2);
f.add(new ToggleButtonAdapterExample());
f.pack();
f.setVisible(true);
}
}
|