From 869bbdd24a6c360cb2aab91d7c925d7191a5f07e Mon Sep 17 00:00:00 2001 From: Stefan Suhren Date: Wed, 16 Dec 2015 02:24:36 +0100 Subject: It partially works (TM) --- .../view/StudentenverwaltungsController.java | 107 +++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 src/de/fhswf/in/inf/se/projektthemenvergabe/view/StudentenverwaltungsController.java (limited to 'src/de/fhswf/in/inf/se/projektthemenvergabe/view/StudentenverwaltungsController.java') 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 studentTableView; + + @FXML + private TableColumn matrikelnummerTableColumn; + + @FXML + private TableColumn vornameTableColumn; + + @FXML + private TableColumn 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 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); + } + } +} -- cgit v1.2.3-70-g09d2