RadioButtonSetFilter.java revision 15cbf37cebd87112bb493d12330e123d1b007c23
1package autotest.common.table;
2
3import com.google.gwt.event.logical.shared.ValueChangeEvent;
4import com.google.gwt.event.logical.shared.ValueChangeHandler;
5import com.google.gwt.user.client.ui.HorizontalPanel;
6import com.google.gwt.user.client.ui.Panel;
7import com.google.gwt.user.client.ui.RadioButton;
8import com.google.gwt.user.client.ui.Widget;
9
10import java.util.Vector;
11
12public abstract class RadioButtonSetFilter extends Filter implements ValueChangeHandler<Boolean> {
13    private Panel panel;
14    private String name;
15    private Vector<RadioButton> buttons;
16    private int selected;
17
18    public RadioButtonSetFilter(String name) {
19        this(new HorizontalPanel(), name);
20    }
21
22    public RadioButtonSetFilter(Panel panel, String name) {
23        this.panel = panel;
24        this.name = name;
25        buttons = new Vector();
26    }
27
28    @Override
29    public Widget getWidget() {
30        return panel;
31    }
32
33    public void addRadioButon(String label) {
34        RadioButton radioButton = new RadioButton(name, label);
35        int formValue = buttons.size();
36        radioButton.setFormValue(Integer.toString(formValue));
37        radioButton.addValueChangeHandler(this);
38        buttons.add(radioButton);
39        panel.add(radioButton);
40    }
41
42    public void setSelectedButton(int index) {
43        if (index < buttons.size())
44            selected = index;
45            buttons.get(index).setChecked(true);
46    }
47
48    public int getSelectedButtonIndex() {
49        return selected;
50    }
51
52    public int getButtonNum() {
53        return buttons.size();
54    }
55
56    @Override
57    public void onValueChange(ValueChangeEvent<Boolean> event) {
58        selected = Integer.parseInt(((RadioButton) event.getSource()).getFormValue());
59        notifyListeners();
60    }
61}