summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java185
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/model/Ansprechpartner.java11
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java51
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/model/Student.java11
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/view/AnsprechpartnerListeController.java6
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektHinzufuegen.fxml145
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektHinzufuegenController.java131
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/view/Projektthemenverwaltung.fxml89
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektthemenverwaltungsController.java125
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/view/Studentenverwaltung.fxml41
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/view/StudentenverwaltungsController.java107
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);
+ }
+ }
+}