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

Added modification option for courses of study

parent f156dbba
No related branches found
No related tags found
No related merge requests found
......@@ -4,9 +4,11 @@
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="ce56effb-683b-43e9-9335-7e3aa5d26c29" name="Changes" comment="">
<list default="true" id="ce56effb-683b-43e9-9335-7e3aa5d26c29" name="Changes" comment="added additional text">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" 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$/notenmanager.iml" beforeDir="false" afterPath="$PROJECT_DIR$/notenmanager.iml" 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/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>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
......@@ -33,6 +35,7 @@
</option>
</component>
<component name="ProjectId" id="2AfKZ704Q0BkUfspGiC1j0fbYBt" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
......@@ -99,7 +102,19 @@
<map>
<entry key="MAIN">
<value>
<State />
<State>
<option name="FILTERS">
<map>
<entry key="branch">
<value>
<list>
<option value="origin/grademanager_v1.0" />
</list>
</value>
</entry>
</map>
</option>
</State>
</value>
</entry>
</map>
......
......@@ -10,6 +10,7 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="charm-glisten-6.0.2" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-controls:18" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-controls:win:18" level="project" />
<orderEntry type="library" name="Maven: org.openjfx:javafx-graphics:18" level="project" />
......@@ -43,6 +44,5 @@
<orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:4.0.1" level="project" />
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.29" level="project" />
<orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.19.4" level="project" />
<orderEntry type="library" name="charm-glisten-6.0.2" level="project" />
</component>
</module>
\ No newline at end of file
package de.thdeg.grademanager.gui;
import de.thdeg.grademanager.JpaService;
import de.thdeg.grademanager.model.Course;
import de.thdeg.grademanager.model.CoursesOfStudy;
import de.thdeg.grademanager.model.enumeration.Semester;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.control.*;
import java.io.IOException;
import java.util.Optional;
public class CoursesOfStudyDetailsController {
@FXML
protected TextField name;
protected ComboBox<Semester> durationComboBox;
ObservableList<Semester> durationList = FXCollections.observableArrayList(Semester.values());
@FXML
protected TextField duration;
protected TextField name;
@FXML
protected TextField fieldOfStudy;
......@@ -38,13 +42,15 @@ public class CoursesOfStudyDetailsController {
@FXML
protected void initialize() {
disableFields(true);
durationComboBox.setItems(durationList);
if (coursesOfStudy != null){
name.setText(coursesOfStudy.getName());
duration.setText(Integer.toString(coursesOfStudy.getDuration()));
durationComboBox.setPromptText(Integer.toString(coursesOfStudy.getDuration()));
fieldOfStudy.setText(coursesOfStudy.getFieldOfStudy());
fees.setText(Integer.toString(coursesOfStudy.getFees()));
courseList.setAll(coursesOfStudy.getCourses());
if (!courseList.isEmpty()) {
courseListView.setItems(courseList);
......@@ -52,6 +58,50 @@ public class CoursesOfStudyDetailsController {
}
}
protected void disableFields(boolean value) {
// Variables
name.setDisable(value);
fieldOfStudy.setDisable(value);
fees.setDisable(true);
// Buttons
saveButton.setDisable(value);
modifyButton.setDisable(!value);
// ComboBoxes
durationComboBox.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 (!name.getText().isBlank() && durationComboBox.getValue() != null && !fieldOfStudy.getText().isBlank()) {
coursesOfStudy.setName(name.getText());
coursesOfStudy.setDuration(durationComboBox.getValue().getSemester());
coursesOfStudy.setFieldOfStudy(fieldOfStudy.getText());
JpaService jpaService = JpaService.getInstance();
jpaService.runInTransaction(entityManager -> {entityManager.merge(coursesOfStudy); 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
protected void switchToMain(ActionEvent event) throws IOException {
SwitchWindowHelper.switchTo("Main", event);
......
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ButtonBar?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ListView?>
<?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 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.CoursesOfStudyDetailsController">
<BorderPane 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.CoursesOfStudyDetailsController">
<top>
<VBox fillWidth="false" prefHeight="42.0" prefWidth="600.0" BorderPane.alignment="CENTER">
<children>
......@@ -42,7 +51,7 @@
</font>
</Label>
<Region prefHeight="38.0" prefWidth="125.0" />
<TextField fx:id="name" disable="true" prefHeight="26.0" prefWidth="280.0" />
<TextField fx:id="name" prefHeight="26.0" prefWidth="280.0" />
</children>
</HBox>
<HBox alignment="CENTER" prefHeight="38.0" prefWidth="600.0">
......@@ -55,8 +64,8 @@
<Font size="14.0" />
</font>
</Label>
<Region prefHeight="38.0" prefWidth="81.0" />
<TextField fx:id="duration" disable="true" prefHeight="26.0" prefWidth="280.0" />
<Region prefHeight="33.0" prefWidth="81.0" />
<ComboBox fx:id="durationComboBox" prefHeight="26.0" prefWidth="279.0" />
</children>
</HBox>
<HBox alignment="CENTER" prefHeight="38.0" prefWidth="600.0">
......@@ -70,7 +79,7 @@
</font>
</Label>
<Region prefHeight="38.0" prefWidth="79.0" />
<TextField fx:id="fieldOfStudy" disable="true" prefHeight="26.0" prefWidth="280.0" />
<TextField fx:id="fieldOfStudy" prefHeight="26.0" prefWidth="280.0" />
</children>
</HBox>
<HBox alignment="CENTER" prefHeight="38.0" prefWidth="600.0">
......@@ -83,8 +92,16 @@
<Font size="14.0" />
</font>
</Label>
<Region prefHeight="38.0" prefWidth="126.0" />
<TextField fx:id="fees" disable="true" prefHeight="26.0" prefWidth="280.0" />
<Region prefHeight="33.0" prefWidth="122.0" />
<TextField fx:id="fees" prefHeight="26.0" prefWidth="280.0" />
</children>
</HBox>
<Region prefHeight="19.0" prefWidth="200.0" />
<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>
<Region prefHeight="34.0" prefWidth="200.0" />
......
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