From 23e28615373b2b5b3c12766aaa49cbc9c4c3d7d8 Mon Sep 17 00:00:00 2001 From: Stefan Suhren Date: Wed, 16 Dec 2015 13:04:59 +0100 Subject: Add filter to the ProjektTableView --- .../fhswf/in/inf/se/projektthemenvergabe/Main.java | 2 +- .../inf/se/projektthemenvergabe/model/Projekt.java | 13 ++++++ .../view/Projektthemenverwaltung.fxml | 11 +++-- .../view/ProjektthemenverwaltungsController.java | 54 +++++++++++++++++++++- 4 files changed, 73 insertions(+), 7 deletions(-) (limited to 'src/de') diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java index 3794151..c960154 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java @@ -35,7 +35,7 @@ public class Main extends Application .observableArrayList(Organisation.extractor()); private ObservableList projekte = FXCollections - .observableArrayList(); + .observableArrayList(Projekt.extractor()); private ObservableList studenten = FXCollections .observableArrayList(); diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java index 5dcde85..7611ff8 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java @@ -5,12 +5,14 @@ import java.util.Collections; import java.util.Date; import java.util.List; +import javafx.beans.Observable; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; +import javafx.util.Callback; public class Projekt { @@ -31,6 +33,17 @@ public class Projekt private StringProperty status = new SimpleStringProperty( getStatusList().get(0)); + /** + * Generates an extractor that fires when a property of a list value + * changes. + * + * @return The extractor. + */ + public static Callback extractor() + { + return projekt -> new Observable[] { projekt.statusProperty() }; + } + public static ObservableList getStatusList() { ObservableList status = FXCollections.observableArrayList(); diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/Projektthemenverwaltung.fxml b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/Projektthemenverwaltung.fxml index eab3abb..d100799 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/Projektthemenverwaltung.fxml +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/Projektthemenverwaltung.fxml @@ -84,11 +84,12 @@ - - - - - + + + + + + diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektthemenverwaltungsController.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektthemenverwaltungsController.java index 2731d7c..179ad98 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektthemenverwaltungsController.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektthemenverwaltungsController.java @@ -3,6 +3,8 @@ package de.fhswf.in.inf.se.projektthemenvergabe.view; import de.fhswf.in.inf.se.projektthemenvergabe.Main; import de.fhswf.in.inf.se.projektthemenvergabe.model.Projekt; import javafx.application.Platform; +import javafx.collections.transformation.FilteredList; +import javafx.collections.transformation.SortedList; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.MenuItem; @@ -47,6 +49,8 @@ public class ProjektthemenverwaltungsController private Main main; + private FilteredList filterList; + @FXML private void initialize() { @@ -79,7 +83,55 @@ public class ProjektthemenverwaltungsController public void setMain(Main main) { this.main = main; - projektTableView.setItems(main.getProjekte()); + + filterList = new FilteredList<>(main.getProjekte()); + + SortedList sortedList = new SortedList<>(filterList); + sortedList.comparatorProperty() + .bind(projektTableView.comparatorProperty()); + + projektTableView.setItems(sortedList); + } + + @FXML + private void handleShowAll() + { + filterList.setPredicate(null); + } + + @FXML + private void handleShowInBearbeitung() + { + filterList.setPredicate((projekt) -> projekt.getStatus() + .equals(Projekt.getStatusList().get(0))); + } + + @FXML + private void handleShowEingereicht() + { + filterList.setPredicate((projekt) -> projekt.getStatus() + .equals(Projekt.getStatusList().get(1))); + } + + @FXML + private void handleShowInUeberabeitung() + { + filterList.setPredicate((projekt) -> projekt.getStatus() + .equals(Projekt.getStatusList().get(2))); + } + + @FXML + private void handleShowAngenommen() + { + filterList.setPredicate((projekt) -> projekt.getStatus() + .equals(Projekt.getStatusList().get(3))); + } + + @FXML + private void handleShowAbgelehnt() + { + filterList.setPredicate((projekt) -> projekt.getStatus() + .equals(Projekt.getStatusList().get(4))); } @FXML -- cgit v1.2.3-70-g09d2