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.FXCollections; import javafx.collections.transformation.FilteredList; import javafx.collections.transformation.SortedList; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.MenuItem; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.cell.ComboBoxTableCell; public class ProjektthemenverwaltungsController { @FXML private TableView projektTableView; @FXML private TableColumn projektThemaTableColumn; @FXML private TableColumn ansprechpatnerTableColumn; @FXML private TableColumn student1TableColumn; @FXML private TableColumn student2TableColumn; @FXML private TableColumn student3TableColumn; @FXML private TableColumn statusTableColumn; @FXML private MenuItem editProjektMenuItem; @FXML private MenuItem deleteProjektMenuItem; @FXML private Button editProjektButton; @FXML private Button deleteProjektButton; private Main main; private FilteredList filterList; @FXML private void initialize() { projektThemaTableColumn.setCellValueFactory( (data) -> data.getValue().projektthemaProperty()); ansprechpatnerTableColumn.setCellValueFactory((data) -> data.getValue() .getAnsprechpartner().nachnameProperty()); student1TableColumn.setCellValueFactory((data) -> data.getValue() .getStudents().get(0).matrikelnummerProperty().asObject()); student2TableColumn.setCellValueFactory((data) -> data.getValue() .getStudents().get(1).matrikelnummerProperty().asObject()); student3TableColumn.setCellValueFactory((data) -> data.getValue() .getStudents().get(2).matrikelnummerProperty().asObject()); statusTableColumn .setCellValueFactory((data) -> data.getValue().statusProperty()); statusTableColumn.setCellFactory(ComboBoxTableCell.forTableColumn( FXCollections.observableArrayList(Projekt.StatusTypes.values()))); editProjektButton.disableProperty().bind(projektTableView .getSelectionModel().selectedItemProperty().isNull()); deleteProjektButton.disableProperty().bind(projektTableView .getSelectionModel().selectedItemProperty().isNull()); editProjektMenuItem.disableProperty() .bind(editProjektButton.disabledProperty()); deleteProjektMenuItem.disableProperty() .bind(deleteProjektButton.disabledProperty()); } public void setMain(Main main) { this.main = main; filterList = new FilteredList<>(main.getProjekte()); SortedList 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.StatusTypes.IN_BEARBEITUNG)); } @FXML private void handleShowEingereicht() { filterList.setPredicate((projekt) -> projekt.getStatus() .equals(Projekt.StatusTypes.EINGEREICHT)); } @FXML private void handleShowInUeberabeitung() { filterList.setPredicate((projekt) -> projekt.getStatus() .equals(Projekt.StatusTypes.IN_UEBERARBEITUNG)); } @FXML private void handleShowAngenommen() { filterList.setPredicate((projekt) -> projekt.getStatus() .equals(Projekt.StatusTypes.ANGENOMMEN)); } @FXML private void handleShowAbgelehnt() { filterList.setPredicate((projekt) -> projekt.getStatus() .equals(Projekt.StatusTypes.ABGELEHNT)); } @FXML private void handleAddProjekt() { Projekt projekt = main.showProjekthinzufuegenStage(null); if (projekt != null) { main.getProjekte().add(projekt); } } @FXML private void handleEditProjekt() { Projekt selectedItem = projektTableView.getSelectionModel() .getSelectedItem(); if (selectedItem != null) { main.showProjekthinzufuegenStage(selectedItem); } } @FXML private void handleDeleteProjekt() { Projekt selectedItem = projektTableView.getSelectionModel() .getSelectedItem(); if (selectedItem != null) { main.getProjekte().remove(selectedItem); } } @FXML private void handleStudentenverwaltung() { main.showStudentenverwaltung(); } @FXML private void handleAnsprechpartnerverwaltungs() { main.showAnsprechpartnerverwaltungsStage(); } @FXML private void handleClose() { Platform.exit(); } }