Skip to content
Snippets Groups Projects
Commit 29460bc7 authored by Dennis Toth's avatar Dennis Toth
Browse files

Added modification option for student

parent 0a642643
No related branches found
No related tags found
No related merge requests found
...@@ -4,11 +4,10 @@ ...@@ -4,11 +4,10 @@
<option name="autoReloadType" value="SELECTIVE" /> <option name="autoReloadType" value="SELECTIVE" />
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="ce56effb-683b-43e9-9335-7e3aa5d26c29" name="Changes" comment="added additional text"> <list default="true" id="ce56effb-683b-43e9-9335-7e3aa5d26c29" name="Changes" comment="Added modification option for courses of study">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/notenmanager.iml" beforeDir="false" afterPath="$PROJECT_DIR$/notenmanager.iml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/StudentDetailsController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/StudentDetailsController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/CoursesOfStudyDetailsController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/CoursesOfStudyDetailsController.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/resources/de/thdeg/grademanager/gui/student-details.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/de/thdeg/grademanager/gui/student-details.fxml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/de/thdeg/grademanager/gui/courses-of-study-details.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/de/thdeg/grademanager/gui/courses-of-study-details.fxml" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
...@@ -94,7 +93,14 @@ ...@@ -94,7 +93,14 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1655458541861</updated> <updated>1655458541861</updated>
</task> </task>
<option name="localTasksCounter" value="3" /> <task id="LOCAL-00003" summary="Added modification option for courses of study">
<created>1655475470355</created>
<option name="number" value="00003" />
<option name="presentableId" value="LOCAL-00003" />
<option name="project" value="LOCAL" />
<updated>1655475470355</updated>
</task>
<option name="localTasksCounter" value="4" />
<servers /> <servers />
</component> </component>
<component name="Vcs.Log.Tabs.Properties"> <component name="Vcs.Log.Tabs.Properties">
...@@ -123,6 +129,7 @@ ...@@ -123,6 +129,7 @@
<component name="VcsManagerConfiguration"> <component name="VcsManagerConfiguration">
<MESSAGE value="fix db-table-names + fix db-column-names + fix module error" /> <MESSAGE value="fix db-table-names + fix db-column-names + fix module error" />
<MESSAGE value="big update:&#10;-add toString() for Course, Student and CoursesOfStudy&#10;-fix null-pointer-exception in detailControllers + SwitchWindowHelper&#10;-add CoursesOfStudy Column in Student&#10;-add find-Methods to JpaService&#10;-connect Gui to DB" /> <MESSAGE value="big update:&#10;-add toString() for Course, Student and CoursesOfStudy&#10;-fix null-pointer-exception in detailControllers + SwitchWindowHelper&#10;-add CoursesOfStudy Column in Student&#10;-add find-Methods to JpaService&#10;-connect Gui to DB" />
<option name="LAST_COMMIT_MESSAGE" value="big update:&#10;-add toString() for Course, Student and CoursesOfStudy&#10;-fix null-pointer-exception in detailControllers + SwitchWindowHelper&#10;-add CoursesOfStudy Column in Student&#10;-add find-Methods to JpaService&#10;-connect Gui to DB" /> <MESSAGE value="Added modification option for courses of study" />
<option name="LAST_COMMIT_MESSAGE" value="Added modification option for courses of study" />
</component> </component>
</project> </project>
\ No newline at end of file
...@@ -3,17 +3,29 @@ package de.thdeg.grademanager.gui; ...@@ -3,17 +3,29 @@ package de.thdeg.grademanager.gui;
import de.thdeg.grademanager.JpaService; import de.thdeg.grademanager.JpaService;
import de.thdeg.grademanager.model.CoursesOfStudy; import de.thdeg.grademanager.model.CoursesOfStudy;
import de.thdeg.grademanager.model.Student; import de.thdeg.grademanager.model.Student;
import de.thdeg.grademanager.model.enumeration.Gender;
import de.thdeg.grademanager.model.enumeration.Semester;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.ComboBox; import javafx.scene.control.*;
import javafx.scene.control.TextField;
import java.io.IOException; import java.io.IOException;
import java.util.Optional;
import static de.thdeg.grademanager.gui.MainController.coursesOfStudyList; import static de.thdeg.grademanager.gui.MainController.coursesOfStudyList;
public class StudentDetailsController { public class StudentDetailsController {
@FXML
protected ComboBox<Gender> genderComboBox;
@FXML
protected ComboBox<Semester> semesterComboBox;
ObservableList<Gender> genderList = FXCollections.observableArrayList(Gender.values());
ObservableList<Semester> semesterList = FXCollections.observableArrayList(Semester.values());
private static Student student; private static Student student;
public static void setStudent(Student student) { public static void setStudent(Student student) {
...@@ -24,8 +36,6 @@ public class StudentDetailsController { ...@@ -24,8 +36,6 @@ public class StudentDetailsController {
@FXML @FXML
protected ComboBox<CoursesOfStudy> coursesOfStudyComboBox; protected ComboBox<CoursesOfStudy> coursesOfStudyComboBox;
@FXML
protected TextField gender;
@FXML @FXML
protected TextField firstName; protected TextField firstName;
@FXML @FXML
...@@ -38,9 +48,6 @@ public class StudentDetailsController { ...@@ -38,9 +48,6 @@ public class StudentDetailsController {
@FXML @FXML
protected TextField coursesOfStudy; protected TextField coursesOfStudy;
@FXML
protected TextField semester;
@FXML @FXML
protected TextField studentID; protected TextField studentID;
@FXML @FXML
...@@ -48,8 +55,12 @@ public class StudentDetailsController { ...@@ -48,8 +55,12 @@ public class StudentDetailsController {
@FXML @FXML
protected void initialize() { protected void initialize() {
disableFields(true);
genderComboBox.setItems(genderList);
semesterComboBox.setItems(semesterList);
if (student != null) { if (student != null) {
gender.setText(student.getGender().toString()); genderComboBox.setPromptText(student.getGender());
firstName.setText(student.getFirstName()); firstName.setText(student.getFirstName());
lastName.setText(student.getLastName()); lastName.setText(student.getLastName());
placeOfResidence.setText(student.getPlaceOfResidence()); placeOfResidence.setText(student.getPlaceOfResidence());
...@@ -57,13 +68,72 @@ public class StudentDetailsController { ...@@ -57,13 +68,72 @@ public class StudentDetailsController {
if (student.getCoursesOfStudy() != null){ if (student.getCoursesOfStudy() != null){
coursesOfStudy.setText(student.getCoursesOfStudy().getName()); coursesOfStudy.setText(student.getCoursesOfStudy().getName());
} }
semester.setText(Integer.toString(student.getSemester())); semesterComboBox.setPromptText(Integer.toString(student.getSemester()));
officialEmail.setText(student.getOfficialEmail()); officialEmail.setText(student.getOfficialEmail());
studentID.setText(Integer.toString(student.getId())); studentID.setText(Integer.toString(student.getId()));
coursesOfStudyComboBox.setItems(coursesOfStudyList); coursesOfStudyComboBox.setItems(coursesOfStudyList);
} }
} }
protected void disableFields(boolean value) {
// Variables
firstName.setDisable(value);
lastName.setDisable(value);
placeOfResidence.setDisable(value);
birthPlace.setDisable(value);
officialEmail.setDisable(value);
// Buttons
saveButton.setDisable(value);
modifyButton.setDisable(!value);
// ComboBoxes
genderComboBox.setDisable(value);
semesterComboBox.setDisable(value);
}
@FXML
protected Button modifyButton;
@FXML
protected void onModifyButtonClick(ActionEvent event) {
disableFields(false);
}
@FXML
protected Button saveButton;
@FXML
protected void onSaveButtonClick(ActionEvent event) throws IOException {
if (!firstName.getText().isBlank() && !lastName.getText().isBlank() &&
!placeOfResidence.getText().isBlank() && !birthPlace.getText().isBlank() &&
!officialEmail.getText().isBlank()) {
if(genderComboBox.getValue() != null){
student.setGender(genderComboBox.getValue().getGender());
}
student.setFirstName(firstName.getText());
student.setLastName(lastName.getText());
student.setPlaceOfResidence(placeOfResidence.getText());
student.setBirthPlace(birthPlace.getText());
if(semesterComboBox.getValue() != null){
student.setSemester(semesterComboBox.getValue().getSemester());
}
student.setOfficialEmail(officialEmail.getText());
JpaService jpaService = JpaService.getInstance();
jpaService.runInTransaction(entityManager -> {entityManager.merge(student); return null;});
initialize();
disableFields(true);
} else {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Fehler");
alert.setHeaderText("Bitte alle Felder ausfüllen.");
Optional<ButtonType> result = alert.showAndWait();
}
}
@FXML @FXML
protected void assignCoursesOfStudy(ActionEvent event) { protected void assignCoursesOfStudy(ActionEvent event) {
if (coursesOfStudyComboBox.getValue() != null){ if (coursesOfStudyComboBox.getValue() != null){
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.*?> <?import javafx.geometry.Insets?>
<?import javafx.scene.control.*?> <?import javafx.scene.control.Button?>
<?import javafx.scene.layout.*?> <?import javafx.scene.control.ButtonBar?>
<?import javafx.scene.text.*?> <?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.Region?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="500.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.14-internal" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.thdeg.grademanager.gui.StudentDetailsController"> <BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="500.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.thdeg.grademanager.gui.StudentDetailsController">
<top> <top>
<VBox fillWidth="false" prefHeight="46.0" prefWidth="600.0" BorderPane.alignment="CENTER"> <VBox fillWidth="false" prefHeight="46.0" prefWidth="600.0" BorderPane.alignment="CENTER">
<children> <children>
...@@ -45,7 +53,7 @@ ...@@ -45,7 +53,7 @@
</font> </font>
</Label> </Label>
<Region prefHeight="38.0" prefWidth="127.0" /> <Region prefHeight="38.0" prefWidth="127.0" />
<TextField fx:id="gender" disable="true" prefHeight="26.0" prefWidth="280.0" /> <ComboBox fx:id="genderComboBox" prefHeight="26.0" prefWidth="278.0" />
</children> </children>
</HBox> </HBox>
<HBox alignment="CENTER" prefHeight="38.0" prefWidth="600.0"> <HBox alignment="CENTER" prefHeight="38.0" prefWidth="600.0">
...@@ -132,7 +140,7 @@ ...@@ -132,7 +140,7 @@
</font> </font>
</Label> </Label>
<Region prefHeight="26.0" prefWidth="141.0" /> <Region prefHeight="26.0" prefWidth="141.0" />
<TextField fx:id="semester" disable="true" prefHeight="26.0" prefWidth="280.0" /> <ComboBox fx:id="semesterComboBox" prefHeight="26.0" prefWidth="278.0" />
</children> </children>
</HBox> </HBox>
<HBox alignment="CENTER" prefHeight="38.0" prefWidth="600.0"> <HBox alignment="CENTER" prefHeight="38.0" prefWidth="600.0">
...@@ -169,6 +177,13 @@ ...@@ -169,6 +177,13 @@
<Insets /> <Insets />
</opaqueInsets> </opaqueInsets>
</HBox> </HBox>
<HBox alignment="CENTER" prefHeight="45.0" prefWidth="468.0">
<children>
<Button fx:id="modifyButton" mnemonicParsing="false" onAction="#onModifyButtonClick" text="Bearbeiten" />
<Region prefHeight="40.0" prefWidth="55.0" />
<Button fx:id="saveButton" mnemonicParsing="false" onAction="#onSaveButtonClick" text="Speichern" />
</children>
</HBox>
</children> </children>
</VBox> </VBox>
</center> </center>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment