diff --git a/src/main/java/at/ionas999/questioncatalog/controller/TestController.java b/src/main/java/at/ionas999/questioncatalog/controller/TestController.java index fcae3aa..20b2ba2 100644 --- a/src/main/java/at/ionas999/questioncatalog/controller/TestController.java +++ b/src/main/java/at/ionas999/questioncatalog/controller/TestController.java @@ -66,6 +66,7 @@ public class TestController { questionCountField.disableProperty().bind(isInConfiguringState.not()); catalogComboBox.disableProperty().bind(isInConfiguringState.not()); startBtn.textProperty().bind(Bindings.when(isInConfiguringState).then("Start").otherwise("Cancle")); + startBtn.visibleProperty().bind(isInConfiguringState); nextQuestionBtn.disableProperty().bind(isInConfiguringState); nextQuestionBtn.visibleProperty().bind(isInCorrectionState.not()); correctAnswerLable.visibleProperty().bind(isInCorrectionState); diff --git a/src/main/java/at/ionas999/questioncatalog/controller/ViewController.java b/src/main/java/at/ionas999/questioncatalog/controller/ViewController.java index 8570ff6..4c735cb 100644 --- a/src/main/java/at/ionas999/questioncatalog/controller/ViewController.java +++ b/src/main/java/at/ionas999/questioncatalog/controller/ViewController.java @@ -11,6 +11,7 @@ import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; +import javafx.collections.transformation.FilteredList; import javafx.fxml.FXML; import javafx.scene.control.*; @@ -19,6 +20,8 @@ import java.sql.SQLException; import static at.ionas999.questioncatalog.Utils.showConfirmationButton; public class ViewController { + @FXML + private TextField searchField; @FXML private ComboBox selectBox; @FXML @@ -29,7 +32,7 @@ public class ViewController { private ListView questionListView; private ObjectProperty currentQuestion = new SimpleObjectProperty<>(); - private ObservableList questions; + private FilteredList questions; private BooleanProperty isInEditState = new SimpleBooleanProperty(false); @FXML @@ -44,12 +47,22 @@ public class ViewController { answerField.editableProperty().bind(isInEditState); deleteButton.disableProperty().bind(isInEditState); questionListView.disableProperty().bind(isInEditState); + searchField.textProperty().addListener((_,_,newValue) ->{ + if(newValue == null) + newValue = ""; + String finalNewValue = newValue; + questions.setPredicate(x -> x.getQuestion().contains(finalNewValue)); + }); } private void loadQuestions(QuestionCatalog catalog) { if (catalog == null) return; try { - questions = FXCollections.observableList(QuestionService.GetQuestionsFromCatalog(catalog.getId())); + questions = new FilteredList<>( + FXCollections.observableList + (QuestionService.GetQuestionsFromCatalog( + catalog.getId()))); + questionListView.setItems(questions); } catch (SQLException e) { throw new RuntimeException(e); diff --git a/src/main/resources/at/ionas999/questioncatalog/view.fxml b/src/main/resources/at/ionas999/questioncatalog/view.fxml index 2b332e9..85569fc 100644 --- a/src/main/resources/at/ionas999/questioncatalog/view.fxml +++ b/src/main/resources/at/ionas999/questioncatalog/view.fxml @@ -15,9 +15,15 @@ - - - + + + + + + + + +