// SelectableComponentPanel package org.javamoney.examples.ez.money.gui; import java.awt.GridBagConstraints; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JComponent; import org.javamoney.examples.ez.common.gui.CheckBox; import org.javamoney.examples.ez.common.gui.Panel; /** * This class facilitates wrapping a component in a panel so that a toggle can * be provided to enable or disable the component. */ public final class SelectableComponentPanel extends Panel { /** * Constructs a new panel. * * @param component The component to monitor. */ public SelectableComponentPanel(JComponent component) { this(component, false); } /** * Constructs a new panel. * * @param component The component to monitor. * @param enabled Whether or not the component is initially enabled. */ public SelectableComponentPanel(JComponent component, boolean enabled) { setCheckBox(new CheckBox()); setComponent(component); getCheckBox().setSelected(enabled); getComponent().setEnabled(enabled); // Build panel. setFill(GridBagConstraints.BOTH); add(getCheckBox(), 0, 0, 1, 1, 0, 100); add(getComponent(), 1, 0, 1, 1, 100, 0); // Add listeners. getCheckBox().addActionListener(new ActionController()); } ////////////////////////////////////////////////////////////////////////////// // Start of private methods. ////////////////////////////////////////////////////////////////////////////// private CheckBox getCheckBox() { return itsCheckBox; } private JComponent getComponent() { return itsComponent; } private void setCheckBox(CheckBox checkBox) { itsCheckBox = checkBox; } private void setComponent(JComponent component) { itsComponent = component; } ////////////////////////////////////////////////////////////////////////////// // Start of inner classes. ////////////////////////////////////////////////////////////////////////////// private class ActionController implements ActionListener { public void actionPerformed(ActionEvent event) { getComponent().setEnabled(!getComponent().isEnabled()); } } ////////////////////////////////////////////////////////////////////////////// // Start of class members. ////////////////////////////////////////////////////////////////////////////// private CheckBox itsCheckBox; private JComponent itsComponent; }