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.event.EventHandler; import javafx.scene.control.RadioButton; import javafx.scene.control.ToggleGroup; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.scene.layout.Region; import javafx.scene.layout.VBox; import java.util.List; /** * Created by Timon on 09.03.2015. */ public class BooleanRenderedQuestion extends ARenderedQuestion { public BooleanRenderedQuestion(QuestionNode questionNode, List<AExpression> dependencies, Controller controller) { super(questionNode, dependencies, controller); } @Override protected Region createQuestionControl() { VBox container = new VBox(5); ToggleGroup group = createToggleGroup(container); group.selectedToggleProperty().addListener((observable, oldValue, newValue) -> { String value = observable.getValue().toString(); value = value.substring(value.indexOf("'")+1, value.lastIndexOf("'")); questionAnswered(value); }); return container; } private ToggleGroup createToggleGroup(VBox container){ ToggleGroup group = new ToggleGroup(); RadioButton yesButton = createRadioButton("Yes", group); RadioButton noButton = createRadioButton("No", group); container.getChildren().add(yesButton); container.getChildren().add(noButton); return group; } private RadioButton createRadioButton(String text, ToggleGroup group){ RadioButton rb = new RadioButton(text); rb.setWrapText(true); rb.setFont(DEFAULT_FONT); rb.setToggleGroup(group); rb.setSelected(false); rb.addEventHandler(KeyEvent.KEY_PRESSED, event -> { if (event.getCode() == KeyCode.ENTER){ rb.setSelected(true); } }); return rb; } @Override protected boolean isValidInput(String input) { return true; } }