blob: 17a874da2e21f1815e4921baa0f358e079006edd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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);
}
}
}
|