115cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luopackage autotest.common.table;
215cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo
315cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luoimport com.google.gwt.event.logical.shared.ValueChangeEvent;
415cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luoimport com.google.gwt.event.logical.shared.ValueChangeHandler;
515cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luoimport com.google.gwt.user.client.ui.HorizontalPanel;
615cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luoimport com.google.gwt.user.client.ui.Panel;
715cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luoimport com.google.gwt.user.client.ui.RadioButton;
815cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luoimport com.google.gwt.user.client.ui.Widget;
915cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo
1015cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luoimport java.util.Vector;
1115cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo
1215cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luopublic abstract class RadioButtonSetFilter extends Filter implements ValueChangeHandler<Boolean> {
1315cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    private Panel panel;
1415cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    private String name;
1515cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    private Vector<RadioButton> buttons;
1615cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    private int selected;
1715cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo
1815cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    public RadioButtonSetFilter(String name) {
1915cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo        this(new HorizontalPanel(), name);
2015cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    }
2115cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo
2215cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    public RadioButtonSetFilter(Panel panel, String name) {
2315cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo        this.panel = panel;
2415cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo        this.name = name;
2515cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo        buttons = new Vector();
2615cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    }
2715cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo
2815cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    @Override
2915cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    public Widget getWidget() {
3015cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo        return panel;
3115cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    }
3215cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo
3315cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    public void addRadioButon(String label) {
3415cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo        RadioButton radioButton = new RadioButton(name, label);
3515cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo        int formValue = buttons.size();
3615cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo        radioButton.setFormValue(Integer.toString(formValue));
3715cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo        radioButton.addValueChangeHandler(this);
3815cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo        buttons.add(radioButton);
3915cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo        panel.add(radioButton);
4015cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    }
4115cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo
4215cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    public void setSelectedButton(int index) {
4315cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo        if (index < buttons.size())
4415cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo            selected = index;
4515cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo            buttons.get(index).setChecked(true);
4615cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    }
4715cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo
4815cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    public int getSelectedButtonIndex() {
4915cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo        return selected;
5015cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    }
5115cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo
5215cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    public int getButtonNum() {
5315cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo        return buttons.size();
5415cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    }
5515cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo
5615cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    @Override
5715cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    public void onValueChange(ValueChangeEvent<Boolean> event) {
5815cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo        selected = Integer.parseInt(((RadioButton) event.getSource()).getFormValue());
5915cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo        notifyListeners();
6015cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo    }
6115cbf37cebd87112bb493d12330e123d1b007c23Jiaxi Luo}