package nl.uva.softwcons.ql.ui.widget;
import javafx.scene.control.TextField;
import nl.uva.softwcons.ql.eval.ValueChangeListener;
import nl.uva.softwcons.ql.eval.value.Value;
import nl.uva.softwcons.ql.ui.converter.ValueConverter;
public class TextFieldWidget extends Widget {
private final TextField textField;
private ValueConverter<String> converter;
public TextFieldWidget() {
this.textField = new TextField();
}
public TextFieldWidget(final ValueConverter<String> converter) {
this.textField = new TextField();
this.converter = converter;
}
@Override
public TextField getWidget() {
return textField;
}
@Override
public void setValue(final Value value) {
this.textField.setText(converter.fromValue(value));
}
@Override
public void setEditable(final boolean editable) {
this.textField.setDisable(!editable);
}
@Override
public void addListener(final ValueChangeListener<Value> listener) {
this.textField.textProperty().addListener((observable, oldValue, newValue) -> {
listener.processValueChange(converter.toValue(newValue));
});
}
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void setConverter(final ValueConverter converter) {
this.converter = converter;
}
}