package gui.widgets;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import ast.type.Type;
import evaluator.BooleanValue;
import evaluator.Value;
import evaluator.ValueRepository;
import gui.listeners.EvaluateExpression;
public class ChoiceWidget implements IWidgetComponent {
private final String id;
private final Type widgetType;
private JCheckBox widget;
private final ValueRepository valueRepository;
private BooleanValue value;
public ChoiceWidget(String id, Type widgetType, ValueRepository valueRepository) {
this.id = id;
this.valueRepository = valueRepository;
this.widgetType = widgetType;
this.widget = new JCheckBox();
}
@Override
public JComponent getWidget() {
return widget;
}
@Override
public String getIdWidget() {
return id;
}
@Override
public Type getWidgetType() {
return widgetType;
}
@Override
public void addDocListener(final EvaluateExpression evaluator) {
widget.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent arg0) {
valueRepository.putValue(getIdWidget().toString(), getValue());
evaluator.setValueInGUI();
}
});
}
@Override
public void setEnabled(boolean isEnabled) {}
@Override
public BooleanValue getValue() {
this.value = new BooleanValue(widget.isSelected());
return value;
}
@Override
public void setValue(Value value) {
this.value = (BooleanValue) value;
boolean selected = (Boolean) value.getValue();
this.widget.setSelected(selected);
}
@Override
public void setVisible(boolean visibility) {
widget.setVisible(visibility);
}
}