summaryrefslogtreecommitdiffstats
path: root/src/de
diff options
context:
space:
mode:
authorStefan Suhren <suhren.stefan@fh-swf.de>2015-12-16 13:04:59 +0100
committerStefan Suhren <suhren.stefan@fh-swf.de>2015-12-16 13:04:59 +0100
commit23e28615373b2b5b3c12766aaa49cbc9c4c3d7d8 (patch)
treeffacc4ebf8406f7328b3789a202b87e6f70b2b9c /src/de
parent4212a6f91b1a5298e1ad935bbc91b8af3084e49e (diff)
downloadProjektthemenvergabe-23e28615373b2b5b3c12766aaa49cbc9c4c3d7d8.tar.gz
Projektthemenvergabe-23e28615373b2b5b3c12766aaa49cbc9c4c3d7d8.zip
Add filter to the ProjektTableView
Diffstat (limited to 'src/de')
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java2
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java13
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/view/Projektthemenverwaltung.fxml11
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektthemenverwaltungsController.java54
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