diff options
Diffstat (limited to 'src/de')
4 files changed, 73 insertions, 7 deletions
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<Projekt> projekte = FXCollections - .observableArrayList(); + .observableArrayList(Projekt.extractor()); private ObservableList<Student> 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<Projekt, Observable[]> extractor() + { + return projekt -> new Observable[] { projekt.statusProperty() }; + } + public static ObservableList<String> getStatusList() { ObservableList<String> 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 @@ </Menu> <Menu mnemonicParsing="false" text="Ansicht ändern"> <items> - <MenuItem mnemonicParsing="false" text="Alle Anzeigen" /> - <MenuItem mnemonicParsing="false" text="Eingereicht" /> - <MenuItem mnemonicParsing="false" text="In Überarbeitung" /> - <MenuItem mnemonicParsing="false" text="Angenommen" /> - <MenuItem mnemonicParsing="false" text="Abgelehnt" /> + <MenuItem mnemonicParsing="false" onAction="#handleShowAll" text="Alle Anzeigen" /> + <MenuItem mnemonicParsing="false" onAction="#handleShowInBearbeitung" text="In Bearbeitung" /> + <MenuItem mnemonicParsing="false" onAction="#handleShowEingereicht" text="Eingereicht" /> + <MenuItem mnemonicParsing="false" onAction="#handleShowInUeberabeitung" text="In Überarbeitung" /> + <MenuItem mnemonicParsing="false" onAction="#handleShowAngenommen" text="Angenommen" /> + <MenuItem mnemonicParsing="false" onAction="#handleShowAbgelehnt" text="Abgelehnt" /> </items> </Menu> </menus> 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<Projekt> 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<Projekt> 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 |
