blob: 2b574026a4e34d2aab34c8818dfd7d5993476585 [file] [log] [blame]
package autotest.afe;
import java.util.ArrayList;
import java.util.List;
public class RadioChooser {
public static interface Display {
public IRadioButton generateRadioButton(String groupName, String choice);
}
private static int groupNameCounter = 0;
private String groupName = getFreshGroupName();
private List<IRadioButton> radioButtons = new ArrayList<IRadioButton>();
private IRadioButton defaultButton;
private Display display;
public void bindDisplay(Display display) {
this.display = display;
}
private static String getFreshGroupName() {
groupNameCounter++;
return "group" + Integer.toString(groupNameCounter);
}
public void addChoice(String choice) {
IRadioButton button = display.generateRadioButton(groupName, choice);
if (radioButtons.isEmpty()) {
// first button in this group
defaultButton = button;
button.setValue(true);
}
radioButtons.add(button);
}
public String getSelectedChoice() {
for (IRadioButton button : radioButtons) {
if (button.getValue()) {
return button.getText();
}
}
throw new RuntimeException("No radio button selected");
}
public void reset() {
if (defaultButton != null) {
defaultButton.setValue(true);
}
}
public void setDefaultChoice(String defaultChoice) {
defaultButton = findButtonForChoice(defaultChoice);
}
public void setSelectedChoice(String choice) {
findButtonForChoice(choice).setValue(true);
}
private IRadioButton findButtonForChoice(String choice) {
for (IRadioButton button : radioButtons) {
if (button.getText().equals(choice)) {
return button;
}
}
throw new RuntimeException("No such choice found: " + choice);
}
}