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); } } }