package qls.gui.widget.input;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import ql.gui.DefaultComponent;
import ql.value.BooleanValue;
import qls.ast.statement.widget.styling.StyleProperties;
import qls.gui.widget.InputWidget;
import qls.gui.widget.WidgetStylizer;
public class Checkbox extends DefaultComponent implements InputWidget<BooleanValue>, ActionListener {
private WidgetStylizer stylizer;
private JCheckBox checkBox;
public Checkbox() {
stylizer = new WidgetStylizer();
checkBox = new JCheckBox();
checkBox.addActionListener(this);
}
public Checkbox(BooleanValue value) {
this();
checkBox.setSelected(value.getPrimitive());
}
@Override
public void disable() {
checkBox.setEnabled(false);
}
@Override
public void setValue(BooleanValue value) {
checkBox.setSelected(value.getPrimitive());
}
@Override
public BooleanValue getValue() {
return new BooleanValue(checkBox.isSelected());
}
@Override
public void updateComponent() {
checkBox.repaint();
}
@Override
public JComponent getComponent() {
return checkBox;
}
@Override
public void setStyle(StyleProperties properties) {
stylizer.setStyle(getComponent(), properties);
}
@Override
public void actionPerformed(ActionEvent arg0) {
handleChange(getValue(), this);
}
}