diff options
Diffstat (limited to 'src/de/fhswf')
11 files changed, 890 insertions, 12 deletions
diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java index bd0c918..3794151 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java @@ -5,13 +5,19 @@ package de.fhswf.in.inf.se.projektthemenvergabe; import de.fhswf.in.inf.se.projektthemenvergabe.model.Ansprechpartner; import de.fhswf.in.inf.se.projektthemenvergabe.model.Organisation; +import de.fhswf.in.inf.se.projektthemenvergabe.model.Projekt; +import de.fhswf.in.inf.se.projektthemenvergabe.model.Student; import de.fhswf.in.inf.se.projektthemenvergabe.view.AnsprechpartnerListeController; +import de.fhswf.in.inf.se.projektthemenvergabe.view.ProjektHinzufuegenController; +import de.fhswf.in.inf.se.projektthemenvergabe.view.ProjektthemenverwaltungsController; +import de.fhswf.in.inf.se.projektthemenvergabe.view.StudentenverwaltungsController; import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.layout.BorderPane; +import javafx.stage.Modality; import javafx.stage.Stage; /** @@ -28,8 +34,20 @@ public class Main extends Application private ObservableList<Organisation> organisation = FXCollections .observableArrayList(Organisation.extractor()); + private ObservableList<Projekt> projekte = FXCollections + .observableArrayList(); + + private ObservableList<Student> studenten = FXCollections + .observableArrayList(); + private Stage primaryStage; + private Stage studentenverwaltungsStage; + + private Stage ansprechpartnerverwaltungsStage; + + private Stage projekthinzufuegenStage; + /* * (non-Javadoc) * @@ -43,13 +61,14 @@ public class Main extends Application try { FXMLLoader loader = new FXMLLoader( - getClass().getResource("view/AnsprechpartnerListe.fxml")); + getClass().getResource("view/Projektthemenverwaltung.fxml")); BorderPane root = (BorderPane) loader.load(); Scene scene = new Scene(root); primaryStage.setScene(scene); - AnsprechpartnerListeController controller = loader.getController(); + ProjektthemenverwaltungsController controller = loader + .getController(); controller.setMain(this); primaryStage.show(); @@ -61,13 +80,105 @@ public class Main extends Application } /** - * Getter for property ansprechpartner. - * - * @return Returns the ansprechpartner. + * TODO Add method comment here + * */ - public ObservableList<Ansprechpartner> getAnsprechpartner() + public void showStudentenverwaltung() { - return ansprechpartner; + try + { + FXMLLoader loader = new FXMLLoader( + getClass().getResource("view/Studentenverwaltung.fxml")); + BorderPane root = (BorderPane) loader.load(); + + Scene scene = new Scene(root); + Stage stage = new Stage(); + + studentenverwaltungsStage = stage; + + stage.setScene(scene); + stage.setTitle("Studentenverwaltung"); + stage.initOwner(primaryStage); + stage.initModality(Modality.WINDOW_MODAL); + + StudentenverwaltungsController controller = loader.getController(); + controller.setMain(this); + + stage.showAndWait(); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + /** + * TODO Add method comment here + * + */ + public void showAnsprechpartnerverwaltungsStage() + { + try + { + FXMLLoader loader = new FXMLLoader( + getClass().getResource("view/AnsprechpartnerListe.fxml")); + BorderPane root = (BorderPane) loader.load(); + + Scene scene = new Scene(root); + Stage stage = new Stage(); + + ansprechpartnerverwaltungsStage = stage; + + stage.setScene(scene); + stage.setTitle("Ansprechpartnerverwaltung"); + stage.initOwner(primaryStage); + stage.initModality(Modality.WINDOW_MODAL); + + AnsprechpartnerListeController controller = loader.getController(); + controller.setMain(this); + + stage.showAndWait(); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + /** + * TODO Add method comment here + * + */ + public Projekt showProjekthinzufuegenStage(Projekt projekt) + { + try + { + FXMLLoader loader = new FXMLLoader( + getClass().getResource("view/ProjektHinzufuegen.fxml")); + BorderPane root = (BorderPane) loader.load(); + + Scene scene = new Scene(root); + Stage stage = new Stage(); + + projekthinzufuegenStage = stage; + + stage.setScene(scene); + stage.setTitle("Ansprechpartnerverwaltung"); + stage.initOwner(primaryStage); + stage.initModality(Modality.WINDOW_MODAL); + + ProjektHinzufuegenController controller = loader.getController(); + controller.setMain(this, projekt); + + stage.showAndWait(); + + return controller.getProjekt(); + } + catch (Exception e) + { + e.printStackTrace(); + } + return null; } /** @@ -82,6 +193,46 @@ public class Main extends Application } /** + * TODO Add method comment here + * + * @return + */ + public Stage getStudentenverwaltungsStage() + { + return studentenverwaltungsStage; + } + + /** + * TODO Add method comment here + * + * @return + */ + public Stage getAnsprechpartnerverwaltungsStage() + { + return ansprechpartnerverwaltungsStage; + } + + /** + * TODO Add method comment here + * + * @return + */ + public Stage getProjekthinzufuegenStage() + { + return projekthinzufuegenStage; + } + + /** + * Getter for property ansprechpartner. + * + * @return Returns the ansprechpartner. + */ + public ObservableList<Ansprechpartner> getAnsprechpartner() + { + return ansprechpartner; + } + + /** * Getter for property organisation. * * @return Returns the organisation. @@ -92,6 +243,26 @@ public class Main extends Application } /** + * Getter for property projekte. + * + * @return Returns the projekte. + */ + public ObservableList<Projekt> getProjekte() + { + return projekte; + } + + /** + * Getter for property studenten. + * + * @return Returns the studenten. + */ + public ObservableList<Student> getStudenten() + { + return studenten; + } + + /** * Launches the JavaFX application. * * @param args diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Ansprechpartner.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Ansprechpartner.java index caa7962..10ab7b1 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Ansprechpartner.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Ansprechpartner.java @@ -168,4 +168,15 @@ public class Ansprechpartner { this.vorname.set(vorname); } + + /* + * (non-Javadoc) + * + * @see java.lang.Object#toString() + */ + @Override + public String toString() + { + return nachname.get(); + } }
\ No newline at end of file diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java index 5b09fce..2788904 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java @@ -9,6 +9,8 @@ import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; public class Projekt { @@ -26,8 +28,27 @@ public class Projekt private Ansprechpartner ansprechpartner; - public Projekt(Student student1, Student student2, Student student3, - Ansprechpartner ansprechpartner) + private StringProperty status = new SimpleStringProperty( + getStatusList().get(0)); + + public static ObservableList<String> getStatusList() + { + ObservableList<String> status = FXCollections.observableArrayList(); + + status.add("Eingereicht"); + status.add("In Überarbeitung"); + status.add("Angenommen"); + status.add("Abgelehnt"); + + return FXCollections.unmodifiableObservableList(status); + } + + public Projekt( + + Student student1, Student student2, + + Student student3, Ansprechpartner ansprechpartner) + { if (student1 == null && student2 == null && student3 == null) { @@ -147,4 +168,30 @@ public class Projekt { return this.ansprechpartner; } + + public final StringProperty statusProperty() + { + return this.status; + } + + public final String getStatus() + { + return this.statusProperty().get(); + } + + public final void setStatus(final String status) + { + this.statusProperty().set(status); + } + + /* + * (non-Javadoc) + * + * @see java.lang.Object#toString() + */ + @Override + public String toString() + { + return projektthema.get(); + } }
\ No newline at end of file diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Student.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Student.java index 7461c26..ea5b285 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Student.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Student.java @@ -69,4 +69,15 @@ public class Student { return this.projekt; } + + /* + * (non-Javadoc) + * + * @see java.lang.Object#toString() + */ + @Override + public String toString() + { + return String.valueOf(matrikelnummer.get()); + } }
\ No newline at end of file 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<String> 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<String> 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<Pair<String, String>> 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 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.scene.text.*?> +<?import javafx.geometry.*?> +<?import javafx.scene.control.*?> +<?import java.lang.*?> +<?import javafx.scene.layout.*?> + +<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="650.0" prefWidth="743.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.fhswf.in.inf.se.projektthemenvergabe.view.ProjektHinzufuegenController"> + <center> + <GridPane BorderPane.alignment="CENTER"> + <columnConstraints> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + </columnConstraints> + <rowConstraints> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints maxHeight="120.0" minHeight="10.0" prefHeight="111.0" vgrow="SOMETIMES" /> + <RowConstraints maxHeight="144.0" minHeight="10.0" prefHeight="88.0" vgrow="SOMETIMES" /> + <RowConstraints maxHeight="67.0" minHeight="0.0" prefHeight="43.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + </rowConstraints> + <children> + <Label text="Projektthema"> + <GridPane.margin> + <Insets left="10.0" /> + </GridPane.margin> + <font> + <Font name="System Bold" size="12.0" /> + </font> + </Label> + <Label text="Skizze" GridPane.rowIndex="1"> + <GridPane.margin> + <Insets left="10.0" /> + </GridPane.margin> + <font> + <Font name="System Bold" size="12.0" /> + </font> + </Label> + <Label text="Beschreibung des Projekthintergrundes" GridPane.rowIndex="2"> + <GridPane.margin> + <Insets left="10.0" /> + </GridPane.margin> + <font> + <Font name="System Bold" size="12.0" /> + </font> + </Label> + <Label text="Beschreibung der wesentlichen Projektinhalte" GridPane.rowIndex="3"> + <GridPane.margin> + <Insets left="10.0" /> + </GridPane.margin> + <font> + <Font name="System Bold" size="12.0" /> + </font> + </Label> + <Label text="Ansprechpartner" GridPane.rowIndex="4"> + <GridPane.margin> + <Insets left="10.0" /> + </GridPane.margin> + <font> + <Font name="System Bold" size="12.0" /> + </font> + </Label> + <Label text="1. Student" GridPane.rowIndex="5"> + <GridPane.margin> + <Insets left="10.0" /> + </GridPane.margin> + <font> + <Font name="System Bold" size="12.0" /> + </font> + </Label> + <Label text="2. Student" GridPane.rowIndex="6"> + <GridPane.margin> + <Insets left="10.0" /> + </GridPane.margin> + <font> + <Font name="System Bold" size="12.0" /> + </font> + </Label> + <Label text="3. Student" GridPane.rowIndex="7"> + <GridPane.margin> + <Insets left="10.0" /> + </GridPane.margin> + <font> + <Font name="System Bold" size="12.0" /> + </font> + </Label> + <ComboBox fx:id="ansprechpartnerComboBox" prefHeight="25.0" prefWidth="500.0" GridPane.columnIndex="1" GridPane.rowIndex="4"> + <GridPane.margin> + <Insets left="10.0" right="10.0" /> + </GridPane.margin> + </ComboBox> + <ComboBox fx:id="student1ComboBox" prefHeight="25.0" prefWidth="500.0" GridPane.columnIndex="1" GridPane.rowIndex="5"> + <GridPane.margin> + <Insets left="10.0" right="10.0" /> + </GridPane.margin> + </ComboBox> + <ComboBox fx:id="student2ComboBox" prefHeight="25.0" prefWidth="500.0" GridPane.columnIndex="1" GridPane.rowIndex="6"> + <GridPane.margin> + <Insets left="10.0" right="10.0" /> + </GridPane.margin> + </ComboBox> + <ComboBox fx:id="student3ComboBox" minHeight="-Infinity" prefHeight="25.0" prefWidth="500.0" GridPane.columnIndex="1" GridPane.rowIndex="7"> + <GridPane.margin> + <Insets left="10.0" right="10.0" /> + </GridPane.margin> + </ComboBox> + <TextField fx:id="projektthemaTextField" prefWidth="500.0" GridPane.columnIndex="1"> + <GridPane.margin> + <Insets left="10.0" right="10.0" /> + </GridPane.margin> + </TextField> + <TextArea fx:id="projektskizzeTextField" prefHeight="200.0" prefWidth="50.0" GridPane.columnIndex="1" GridPane.rowIndex="1"> + <GridPane.margin> + <Insets left="10.0" right="10.0" /> + </GridPane.margin> + </TextArea> + <TextArea fx:id="projekthintergrundTextField" prefHeight="65.0" prefWidth="500.0" GridPane.columnIndex="1" GridPane.rowIndex="2"> + <GridPane.margin> + <Insets left="10.0" right="10.0" top="5.0" /> + </GridPane.margin> + </TextArea> + <TextArea fx:id="projektinhalteTextField" prefHeight="200.0" prefWidth="500.0" GridPane.columnIndex="1" GridPane.rowIndex="3"> + <GridPane.margin> + <Insets left="10.0" right="10.0" top="5.0" /> + </GridPane.margin> + </TextArea> + <Button fx:id="saveButton" disable="true" mnemonicParsing="false" onAction="#handleSave" prefHeight="25.0" prefWidth="500.0" text="Speichern" GridPane.rowIndex="8"> + <GridPane.margin> + <Insets left="10.0" right="10.0" /> + </GridPane.margin> + </Button> + <Button mnemonicParsing="false" onAction="#handleCancel" prefHeight="25.0" prefWidth="500.0" text="Abbrechen" GridPane.columnIndex="1" GridPane.rowIndex="8"> + <GridPane.margin> + <Insets left="10.0" right="10.0" /> + </GridPane.margin> + </Button> + </children> + </GridPane> + </center> +</BorderPane> 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<Ansprechpartner> ansprechpartnerComboBox; + + @FXML + private ComboBox<Student> student1ComboBox; + + @FXML + private ComboBox<Student> student2ComboBox; + + @FXML + private ComboBox<Student> 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 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.geometry.*?> +<?import javafx.scene.control.*?> +<?import java.lang.*?> +<?import javafx.scene.layout.*?> +<?import javafx.scene.control.Label?> + +<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="543.0" prefWidth="1089.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.fhswf.in.inf.se.projektthemenvergabe.view.ProjektthemenverwaltungsController"> + <center> + <VBox prefHeight="541.0" prefWidth="1089.0" BorderPane.alignment="CENTER"> + <children> + <TableView fx:id="projektTableView" editable="true" prefHeight="506.0" prefWidth="1089.0"> + <columns> + <TableColumn fx:id="projektThemaTableColumn" prefWidth="244.0" text="Projektthema" /> + <TableColumn fx:id="ansprechpatnerTableColumn" prefWidth="118.0" text="Ansprechpartner" /> + <TableColumn prefWidth="570.0" text="Student"> + <columns> + <TableColumn fx:id="student1TableColumn" prefWidth="75.0" text="1" /> + <TableColumn fx:id="student2TableColumn" prefWidth="75.0" text="2" /> + <TableColumn fx:id="student3TableColumn" prefWidth="75.0" text="3" /> + </columns> + </TableColumn> + <TableColumn fx:id="statusTableColumn" prefWidth="237.0" text="Status" /> + </columns> + <columnResizePolicy> + <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" /> + </columnResizePolicy> + <VBox.margin> + <Insets right="10.0" top="2.0" /> + </VBox.margin> + <placeholder> + <Label text="Keine Projekte angelegt." /> + </placeholder> + </TableView> + <HBox prefHeight="67.0" prefWidth="615.0"> + <children> + <Button maxWidth="100.0" minWidth="100.0" mnemonicParsing="false" onAction="#handleAddProjekt" text="Anlegen"> + <HBox.margin> + <Insets right="5.0" /> + </HBox.margin> + </Button> + <Button fx:id="editProjektButton" disable="true" maxWidth="200.0" minWidth="100.0" mnemonicParsing="false" onAction="#handleEditProjekt" text="Bearbeiten"> + <HBox.margin> + <Insets right="5.0" /> + </HBox.margin> + </Button> + <Button fx:id="deleteProjektButton" disable="true" minWidth="100.0" mnemonicParsing="false" onAction="#handleDeleteProjekt" text="Löschen" /> + <Separator prefHeight="0.0" prefWidth="373.0" visible="false" /> + <Button maxWidth="200.0" minWidth="200.0" mnemonicParsing="false" onAction="#handleStudentenverwaltung" text="Studentenverwaltung"> + <HBox.margin> + <Insets right="5.0" /> + </HBox.margin> + </Button> + <Button minWidth="200.0" mnemonicParsing="false" onAction="#handleAnsprechpartnerverwaltungs" prefWidth="200.0" text="Ansprechpartnerverwaltung" /> + </children> + <VBox.margin> + <Insets top="10.0" /> + </VBox.margin> + </HBox> + </children> + </VBox> + </center> + <top> + <MenuBar prefHeight="35.0" prefWidth="1089.0" BorderPane.alignment="CENTER"> + <menus> + <Menu mnemonicParsing="false" text="Datei"> + <items> + <MenuItem mnemonicParsing="false" onAction="#handleClose" text="Schließen" /> + </items> + </Menu> + <Menu mnemonicParsing="false" text="Bearbeiten"> + <items> + <MenuItem mnemonicParsing="false" onAction="#handleStudentenverwaltung" text="Studentenverwaltung" /> + <MenuItem mnemonicParsing="false" onAction="#handleAnsprechpartnerverwaltungs" text="Ansprechpartnerverwaltung" /> + </items> + </Menu> + <Menu mnemonicParsing="false" text="Ansicht ändern"> + <items> + <MenuItem mnemonicParsing="false" text="Eingereicht" /> + <MenuItem mnemonicParsing="false" text="In Überarbeitung" /> + <MenuItem mnemonicParsing="false" text="Angenommen" /> + <MenuItem mnemonicParsing="false" text="Abgelehnt" /> + </items> + </Menu> + </menus> + </MenuBar> + </top> +</BorderPane> 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<Projekt> projektTableView; + + @FXML + private TableColumn<Projekt, String> projektThemaTableColumn; + + @FXML + private TableColumn<Projekt, String> ansprechpatnerTableColumn; + + @FXML + private TableColumn<Projekt, Integer> student1TableColumn; + + @FXML + private TableColumn<Projekt, Integer> student2TableColumn; + + @FXML + private TableColumn<Projekt, Integer> student3TableColumn; + + @FXML + private TableColumn<Projekt, String> 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 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.geometry.*?> +<?import javafx.scene.control.*?> +<?import java.lang.*?> +<?import javafx.scene.layout.*?> + +<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="298.0" prefWidth="586.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.fhswf.in.inf.se.projektthemenvergabe.view.StudentenverwaltungsController"> + <center> + <VBox prefHeight="200.0" prefWidth="100.0" BorderPane.alignment="CENTER"> + <children> + <TableView fx:id="studentTableView" editable="true" prefHeight="422.0" prefWidth="600.0"> + <columns> + <TableColumn fx:id="matrikelnummerTableColumn" prefWidth="75.0" text="Matrikelnummer" /> + <TableColumn fx:id="vornameTableColumn" prefWidth="75.0" text="Vorname" /> + <TableColumn fx:id="nachnameTableColumn" prefWidth="75.0" text="Nachname" /> + </columns> + <columnResizePolicy> + <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" /> + </columnResizePolicy> + <placeholder> + <Label text="Keine Studenten angelegt." /> + </placeholder> + </TableView> + <HBox prefHeight="100.0" prefWidth="200.0"> + <children> + <Button minWidth="200.0" mnemonicParsing="false" onAction="#handleAddStudent" text="Anlegen" /> + <Button fx:id="deleteStudentButton" disable="true" minWidth="200.0" mnemonicParsing="false" onAction="#handleDeleteStudent" text="Löschen"> + <HBox.margin> + <Insets left="10.0" /> + </HBox.margin> + </Button> + </children> + <VBox.margin> + <Insets top="10.0" /> + </VBox.margin> + </HBox> + </children> + </VBox> + </center> +</BorderPane> 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); + } + } +} |
