package com.klq.gui.control; import com.klq.ast.impl.expr.AExpression; import com.klq.ast.impl.stmt.QuestionNode; import com.klq.controller.Controller; import javafx.scene.control.DatePicker; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.layout.Region; import javafx.scene.layout.VBox; import java.util.List; /** * Created by Timon on 09.03.2015. */ public class DateRenderedQuestion extends ARenderedQuestion { private TextField inputField; public DateRenderedQuestion(QuestionNode question, List<AExpression> dependencies, Controller controller) { super(question, dependencies, controller); } @Override protected Region createQuestionControl() { VBox container = new VBox(5); Label dateLabel = new Label("Please select a date:"); dateLabel.setWrapText(true); container.getChildren().add(dateLabel); final DatePicker datePicker = new DatePicker(); inputField = datePicker.getEditor(); datePicker.getEditor().textProperty().addListener((observable, oldValue, newValue) -> { if (isValidInput(newValue)){ datePicker.setStyle("-fx-border-color: cornflowerblue"); questionAnswered(newValue); } else { datePicker.setStyle("-fx-border-color: red"); } }); visibleProperty.addListener((observable, oldValue, newValue) -> { if (!newValue) questionAnswered(null); }); container.getChildren().add(datePicker); return container; } @Override protected boolean isValidInput(String input) { String pattern = "\\d?\\d[\\./-]\\d?\\d[\\./-]\\d\\d\\d\\d"; if (input.matches(pattern) || input.trim().isEmpty()) return true; return false; } }