package qls.gui.widget.input;
import javax.swing.AbstractButton;
import javax.swing.ButtonGroup;
import javax.swing.JComponent;
import ql.Value;
import ql.gui.DefaultComponent;
import ql.gui.Component;
import ql.gui.structure.Panel;
import ql.gui.widget.input.RadioButton;
import ql.value.BooleanValue;
import ql.value.StringValue;
import qls.ast.statement.widget.styling.StyleProperties;
import qls.gui.widget.InputWidget;
import qls.gui.widget.WidgetStylizer;
public class Radio extends DefaultComponent implements InputWidget<BooleanValue> {
private WidgetStylizer stylizer;
private RadioButton trueRadio, falseRadio;
private ButtonGroup buttons;
private Panel buttonsPanel;
public Radio(StringValue trueValue, StringValue falseValue) {
stylizer = new WidgetStylizer();
trueRadio = new RadioButton(trueValue);
falseRadio = new RadioButton(falseValue);
buttons = new ButtonGroup();
buttons.add((AbstractButton) trueRadio.getComponent());
buttons.add((AbstractButton) falseRadio.getComponent());
buttonsPanel = new Panel(this);
buttonsPanel.addComponent(trueRadio);
buttonsPanel.addComponent(falseRadio);
}
@Override
public void disable() {
trueRadio.disable();
falseRadio.disable();
}
@Override
public void setStyle(StyleProperties properties) {
stylizer.setStyle(trueRadio.getComponent(), properties);
stylizer.setStyle(falseRadio.getComponent(), properties);
}
@Override
public JComponent getComponent() {
return buttonsPanel.getComponent();
}
@Override
public void setValue(BooleanValue value) {
if(value.getPrimitive()) {
trueRadio.setValue(new BooleanValue(true));
} else {
falseRadio.setValue(new BooleanValue(true));
}
}
@Override
public BooleanValue getValue() {
return trueRadio.isSelected();
}
@Override
public void updateComponent() {
buttonsPanel.updateComponent();
}
@Override
public void handleChange(Value changedValue, Component source) {
super.handleChange(getValue(), this);
}
}