summaryrefslogtreecommitdiffstats
path: root/src/de/fhswf/in/inf/se/projektthemenvergabe/view/StudentenverwaltungsController.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/fhswf/in/inf/se/projektthemenvergabe/view/StudentenverwaltungsController.java')
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/view/StudentenverwaltungsController.java107
1 files changed, 107 insertions, 0 deletions
diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/StudentenverwaltungsController.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/StudentenverwaltungsController.java
new file mode 100644
index 0000000..17a874d
--- /dev/null
+++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/StudentenverwaltungsController.java
@@ -0,0 +1,107 @@
+package de.fhswf.in.inf.se.projektthemenvergabe.view;
+
+import java.util.Optional;
+
+import de.fhswf.in.inf.se.projektthemenvergabe.Main;
+import de.fhswf.in.inf.se.projektthemenvergabe.model.Student;
+import javafx.fxml.FXML;
+import javafx.scene.control.Button;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableView;
+import javafx.scene.control.TextInputDialog;
+import javafx.scene.control.cell.TextFieldTableCell;
+import javafx.util.converter.IntegerStringConverter;
+
+public class StudentenverwaltungsController
+{
+ @FXML
+ private TableView<Student> studentTableView;
+
+ @FXML
+ private TableColumn<Student, Integer> matrikelnummerTableColumn;
+
+ @FXML
+ private TableColumn<Student, String> vornameTableColumn;
+
+ @FXML
+ private TableColumn<Student, String> nachnameTableColumn;
+
+ @FXML
+ private Button deleteStudentButton;
+
+ private Main main;
+
+ @FXML
+ private void initialize()
+ {
+ matrikelnummerTableColumn.setCellValueFactory(
+ (data) -> data.getValue().matrikelnummerProperty().asObject());
+ matrikelnummerTableColumn.setCellFactory(
+ TextFieldTableCell.forTableColumn(new IntegerStringConverter()));
+
+ vornameTableColumn
+ .setCellValueFactory((data) -> data.getValue().vornameProperty());
+ vornameTableColumn.setCellFactory(TextFieldTableCell.forTableColumn());
+ vornameTableColumn.setOnEditCommit((data) -> {
+ data.getRowValue().setVorname(data.getNewValue().trim());
+
+ // Hack, aktualisiert TableView, da Observable beim setzen nicht neu
+ // abgefragt wird
+ vornameTableColumn.setVisible(false);
+ vornameTableColumn.setVisible(true);
+ });
+
+ nachnameTableColumn.setCellValueFactory(
+ (data) -> data.getValue().nachnameProperty());
+ nachnameTableColumn.setCellFactory(TextFieldTableCell.forTableColumn());
+ nachnameTableColumn.setOnEditCommit((data) -> {
+ data.getRowValue().setNachname(data.getNewValue().trim());
+
+ // Hack, aktualisiert TableView, da Observable beim setzen nicht neu
+ // abgefragt wird
+ nachnameTableColumn.setVisible(false);
+ nachnameTableColumn.setVisible(true);
+ });
+
+ deleteStudentButton.disableProperty().bind(studentTableView
+ .getSelectionModel().selectedItemProperty().isNull());
+ }
+
+ public void setMain(Main main)
+ {
+ this.main = main;
+ studentTableView.setItems(main.getStudenten());
+ }
+
+ @FXML
+ private void handleAddStudent()
+ {
+ TextInputDialog dialog = new TextInputDialog();
+ dialog.setTitle("Füge neuen Studenten hinzu");
+ dialog.setHeaderText("Geben Sie die Matrikelnummer des Studenten ein.");
+ dialog.setContentText("Matrikelnummer des Stundenten:");
+
+ dialog.initOwner(main.getStudentenverwaltungsStage());
+
+ Optional<String> result = dialog.showAndWait();
+ if (result.isPresent() && !result.get().trim().isEmpty())
+ {
+ Student student = new Student();
+ student.setMatrikelnummer(Integer.parseInt(result.get().trim(), 10));
+ main.getStudenten().add(student);
+ }
+ }
+
+ @FXML
+ private void handleDeleteStudent()
+ {
+ Student selectedItem = studentTableView.getSelectionModel()
+ .getSelectedItem();
+
+ if (selectedItem != null)
+ {
+ main.getProjekte().remove(selectedItem.getProjekt());
+ main.getStudenten().remove(selectedItem);
+ }
+ }
+}