package nl.uva.bromance.QL.expressions.primitives; import javafx.scene.control.TextField; import javafx.scene.layout.VBox; import nl.uva.bromance.QL.expressions.unary.Primitive; import nl.uva.bromance.QL.gui.QLGUI; import nl.uva.bromance.QL.typechecking.SymbolTable; public class StringPrimitive extends Primitive { private String value; public StringPrimitive(String value, int lineNumber) { super(lineNumber); this.value = value; } public String getValue() { return value; } @Override public BooleanPrimitive isEqual(Primitive rhs,int lineNumber) { return new BooleanPrimitive(value.equals(((StringPrimitive) rhs).getValue()), lineNumber); } @Override public Primitive evaluate(SymbolTable s) { return this; } @Override public void drawQuestion(VBox questionArea, QLGUI qlGui) { TextField textField = new TextField(); textField.getStyleClass().add("question"); textField.setMaxWidth(630); if (value != null) textField.setText(value); if (qlGui.getFocusUuid() == uuid) qlGui.setFocusedNode(textField); textField.positionCaret(textField.getLength()); // Disable any input other than numbers textField.textProperty().addListener((observable, oldValue, newValue) -> { if (newValue.length() == 0) value = null; else value = newValue; qlGui.renderWithFocus(uuid); }); questionArea.getChildren().add(textField); } public static StringPrimitive defaultValue(int lineNumber) { return new StringPrimitive("",lineNumber); } }