// YesNoRadioChooser package org.javamoney.examples.ez.money.gui.chooser; import static org.javamoney.examples.ez.common.utility.ButtonHelper.buildButton; import static org.javamoney.examples.ez.common.utility.I18NHelper.getSharedProperty; import java.awt.GridBagConstraints; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ButtonGroup; import org.javamoney.examples.ez.common.gui.Panel; import org.javamoney.examples.ez.common.gui.RadioButton; import org.javamoney.examples.ez.common.utility.ActionSignaler; /** * This class facilitates choosing yes or no from two radio buttons. */ public final class YesNoRadioChooser extends Panel { /** * Constructs a new chooser. */ public YesNoRadioChooser() { setActionSignaler(new ActionSignaler()); createButtons(); // Build panel. setAnchor(GridBagConstraints.WEST); add(getButtons()[YES], 0, 0, 1, 1, 0, 100); add(getButtons()[NO], 1, 0, 1, 1, 100, 0); } /** * This method adds the action listener to the chooser. * * @param listener The action listener to add. */ public void addActionListener(ActionListener listener) { getActionSignaler().addListener(listener); } /** * This method returns true if no is selected, otherwise false. * * @return true or false. */ public boolean isNoSelected() { return getButtons()[NO].isSelected(); } /** * This method returns true if yes is selected, otherwise false. * * @return true or false. */ public boolean isYesSelected() { return getButtons()[YES].isSelected(); } /** * This method enables or disables the chooser. * * @param value true or false. */ @Override public void setEnabled(boolean value) { getButtons()[NO].setEnabled(value); getButtons()[YES].setEnabled(value); } /** * This method sets whether or not the no option is selected. * * @param value true or false. */ public void setNoSelected(boolean value) { getButtons()[NO].setSelected(value); sendActionSignalFor(NO); } /** * This method sets whether or not the yes option is selected. * * @param value true or false. */ public void setYesSelected(boolean value) { getButtons()[YES].setSelected(value); sendActionSignalFor(YES); } ////////////////////////////////////////////////////////////////////////////// // Start of private methods. ////////////////////////////////////////////////////////////////////////////// private void createButtons() { ActionHandler handler = new ActionHandler(); ButtonGroup group = new ButtonGroup(); itsButtons = new RadioButton[2]; getButtons()[NO] = new RadioButton(); getButtons()[YES] = new RadioButton(); buildButton(getButtons()[NO], getSharedProperty("no"), handler, group); buildButton(getButtons()[YES], getSharedProperty("yes"), handler, group); } private ActionSignaler getActionSignaler() { return itsActionSignaler; } private RadioButton[] getButtons() { return itsButtons; } private void sendActionSignalFor(int button) { getActionSignaler().sendSignal(this, getButtons()[button].getActionCommand()); } private void setActionSignaler(ActionSignaler signaler) { itsActionSignaler = signaler; } ////////////////////////////////////////////////////////////////////////////// // Start of inner classes. ////////////////////////////////////////////////////////////////////////////// private class ActionHandler implements ActionListener { public void actionPerformed(ActionEvent event) { if(event.getSource() == getButtons()[NO]) { sendActionSignalFor(NO); } else { sendActionSignalFor(YES); } } } ////////////////////////////////////////////////////////////////////////////// // Start of class members. ////////////////////////////////////////////////////////////////////////////// private ActionSignaler itsActionSignaler; private RadioButton[] itsButtons; private static final int NO = 0; private static final int YES = 1; }