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/AnsprechpartnerListeController.java | 6 +- .../view/ProjektHinzufuegen.fxml | 145 +++++++++++++++++++++ .../view/ProjektHinzufuegenController.java | 131 +++++++++++++++++++ .../view/Projektthemenverwaltung.fxml | 89 +++++++++++++ .../view/ProjektthemenverwaltungsController.java | 125 ++++++++++++++++++ .../view/Studentenverwaltung.fxml | 41 ++++++ .../view/StudentenverwaltungsController.java | 107 +++++++++++++++ 7 files changed, 641 insertions(+), 3 deletions(-) create mode 100644 src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektHinzufuegen.fxml create mode 100644 src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektHinzufuegenController.java create mode 100644 src/de/fhswf/in/inf/se/projektthemenvergabe/view/Projektthemenverwaltung.fxml create mode 100644 src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektthemenverwaltungsController.java create mode 100644 src/de/fhswf/in/inf/se/projektthemenvergabe/view/Studentenverwaltung.fxml create mode 100644 src/de/fhswf/in/inf/se/projektthemenvergabe/view/StudentenverwaltungsController.java (limited to 'src/de/fhswf/in/inf/se/projektthemenvergabe/view') diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/AnsprechpartnerListeController.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/AnsprechpartnerListeController.java index 499c04e..7562866 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/AnsprechpartnerListeController.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/AnsprechpartnerListeController.java @@ -144,7 +144,7 @@ public class AnsprechpartnerListeController dialog.setHeaderText("Geben Sie der Organisation einen Namen."); dialog.setContentText("Name der Organisation:"); - dialog.initOwner(main.getPrimaryStage()); + dialog.initOwner(main.getAnsprechpartnerverwaltungsStage()); Optional result = dialog.showAndWait(); if (result.isPresent() && !result.get().trim().isEmpty()) @@ -169,7 +169,7 @@ public class AnsprechpartnerListeController dialog.setHeaderText("Ändern Sie den Namen der Organisation."); dialog.setContentText("Name der Organisation:"); - dialog.initOwner(main.getPrimaryStage()); + dialog.initOwner(main.getAnsprechpartnerverwaltungsStage()); Optional result = dialog.showAndWait(); if (result.isPresent() && !result.get().trim().isEmpty()) @@ -242,7 +242,7 @@ public class AnsprechpartnerListeController dialog = new AnsprechpartnerHinzufuegenController(); - dialog.initOwner(main.getPrimaryStage()); + dialog.initOwner(main.getAnsprechpartnerverwaltungsStage()); Optional> result = dialog.showAndWait(); diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektHinzufuegen.fxml b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektHinzufuegen.fxml new file mode 100644 index 0000000..b321378 --- /dev/null +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektHinzufuegen.fxml @@ -0,0 +1,145 @@ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektHinzufuegenController.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektHinzufuegenController.java new file mode 100644 index 0000000..f5a1491 --- /dev/null +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektHinzufuegenController.java @@ -0,0 +1,131 @@ +package de.fhswf.in.inf.se.projektthemenvergabe.view; + +import de.fhswf.in.inf.se.projektthemenvergabe.Main; +import de.fhswf.in.inf.se.projektthemenvergabe.model.Ansprechpartner; +import de.fhswf.in.inf.se.projektthemenvergabe.model.Projekt; +import de.fhswf.in.inf.se.projektthemenvergabe.model.Student; +import javafx.fxml.FXML; +import javafx.scene.control.Button; +import javafx.scene.control.ComboBox; +import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; +import javafx.stage.Stage; + +public class ProjektHinzufuegenController +{ + @FXML + private TextField projektthemaTextField; + + @FXML + private TextArea projektskizzeTextField; + + @FXML + private TextArea projekthintergrundTextField; + + @FXML + private TextArea projektinhalteTextField; + + @FXML + private ComboBox ansprechpartnerComboBox; + + @FXML + private ComboBox student1ComboBox; + + @FXML + private ComboBox student2ComboBox; + + @FXML + private ComboBox student3ComboBox; + + @FXML + private Button saveButton; + + private Projekt projekt; + + private Stage projekthinzufuegenStage; + + private boolean wasAborted = true; + + public void setMain(Main main, Projekt projekt) + { + this.projekt = projekt; + + projekthinzufuegenStage = main.getProjekthinzufuegenStage(); + + ansprechpartnerComboBox.setItems(main.getAnsprechpartner()); + + student1ComboBox.setItems(main.getStudenten()); + student2ComboBox.setItems(main.getStudenten()); + student3ComboBox.setItems(main.getStudenten()); + + if (projekt != null) + { + ansprechpartnerComboBox.setDisable(true); + student1ComboBox.setDisable(true); + student2ComboBox.setDisable(true); + student3ComboBox.setDisable(true); + + projektthemaTextField.setText(projekt.getProjektthema()); + projektskizzeTextField.setText(projekt.getSkizze()); + projekthintergrundTextField + .setText(projekt.getProjektbeschreibung()); + projektinhalteTextField.setText(projekt.getProjekteinhalte()); + + ansprechpartnerComboBox.setValue(projekt.getAnsprechpartner()); + student1ComboBox.setValue(projekt.getStudents().get(0)); + student2ComboBox.setValue(projekt.getStudents().get(1)); + student3ComboBox.setValue(projekt.getStudents().get(2)); + } + + // It's art + saveButton.disableProperty().bind(projektthemaTextField.textProperty() + .isEmpty() + .or(projektskizzeTextField.textProperty().isEmpty() + .or(projekthintergrundTextField.textProperty().isEmpty() + .or(projektinhalteTextField.textProperty().isEmpty() + .or(ansprechpartnerComboBox.valueProperty() + .isNull() + .or(student1ComboBox.valueProperty() + .isNull() + .or(student2ComboBox.valueProperty() + .isNull() + .or(student3ComboBox + .valueProperty() + .isNull())))))))); + } + + public Projekt getProjekt() + { + if (wasAborted) + { + return null; + } + return projekt; + } + + @FXML + private void handleSave() + { + if (projekt == null) + { + projekt = new Projekt(student1ComboBox.getValue(), + student2ComboBox.getValue(), student3ComboBox.getValue(), + ansprechpartnerComboBox.getValue()); + } + + projekt.setProjektthema(projektthemaTextField.getText().trim()); + projekt.setSkizze(projektskizzeTextField.getText().trim()); + projekt.setProjektbeschreibung( + projekthintergrundTextField.getText().trim()); + projekt.setProjekteinhalte(projektinhalteTextField.getText().trim()); + + wasAborted = false; + projekthinzufuegenStage.close(); + } + + @FXML + private void handleCancel() + { + projekthinzufuegenStage.close(); + } +} diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/Projektthemenverwaltung.fxml b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/Projektthemenverwaltung.fxml new file mode 100644 index 0000000..00be218 --- /dev/null +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/Projektthemenverwaltung.fxml @@ -0,0 +1,89 @@ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektthemenverwaltungsController.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektthemenverwaltungsController.java new file mode 100644 index 0000000..7d0badb --- /dev/null +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektthemenverwaltungsController.java @@ -0,0 +1,125 @@ +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.fxml.FXML; +import javafx.scene.control.Button; +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 Button editProjektButton; + + @FXML + private Button deleteProjektButton; + + private Main main; + + @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(Projekt.getStatusList())); + + editProjektButton.disableProperty().bind(projektTableView + .getSelectionModel().selectedItemProperty().isNull()); + deleteProjektButton.disableProperty().bind(projektTableView + .getSelectionModel().selectedItemProperty().isNull()); + } + + public void setMain(Main main) + { + this.main = main; + projektTableView.setItems(main.getProjekte()); + } + + @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(); + } +} diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/Studentenverwaltung.fxml b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/Studentenverwaltung.fxml new file mode 100644 index 0000000..09b5404 --- /dev/null +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/Studentenverwaltung.fxml @@ -0,0 +1,41 @@ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
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