diff options
| author | Stefan Suhren <suhren.stefan@fh-swf.de> | 2015-12-16 02:30:21 +0100 |
|---|---|---|
| committer | Stefan Suhren <suhren.stefan@fh-swf.de> | 2015-12-16 02:30:21 +0100 |
| commit | 43a493264bebbbb8913351cc044192ac80454a41 (patch) | |
| tree | ac10648407cfc304166f8748c890e96976009aac /src/de/fhswf/in/inf/se/projektthemenvergabe/view | |
| parent | a35b7db9b12dd8fbc9a667d37452a72697cd4264 (diff) | |
| parent | 953b348b7011b5aabe0f896ad0472cbf8455312d (diff) | |
| download | Projektthemenvergabe-43a493264bebbbb8913351cc044192ac80454a41.tar.gz Projektthemenvergabe-43a493264bebbbb8913351cc044192ac80454a41.zip | |
Merge branch 'VertProto' of git:Projektthemenvergabe into VertProto
Diffstat (limited to 'src/de/fhswf/in/inf/se/projektthemenvergabe/view')
3 files changed, 192 insertions, 16 deletions
diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/AnsprechpartnerHinzufuegen.fxml b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/AnsprechpartnerHinzufuegen.fxml new file mode 100644 index 0000000..2e11c58 --- /dev/null +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/AnsprechpartnerHinzufuegen.fxml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.scene.control.*?> +<?import java.lang.*?> +<?import javafx.scene.layout.*?> +<?import javafx.scene.layout.AnchorPane?> + +<GridPane xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1"> + <columnConstraints> + <ColumnConstraints hgrow="SOMETIMES" maxWidth="94.0" + minWidth="10.0" prefWidth="78.0" /> + <ColumnConstraints hgrow="SOMETIMES" maxWidth="122.0" + minWidth="10.0" prefWidth="122.0" /> + </columnConstraints> + <rowConstraints> + <RowConstraints minHeight="10.0" prefHeight="30.0" + vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" + vgrow="SOMETIMES" /> + </rowConstraints> + <children> + <Label text="Nachname" GridPane.rowIndex="1" /> + <TextField fx:id="vornameTextField" GridPane.columnIndex="1" /> + <TextField fx:id="nachnameTextField" GridPane.columnIndex="1" + GridPane.rowIndex="1" /> + <Label text="Vorname" /> + </children> +</GridPane> diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/AnsprechpartnerHinzufuegenController.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/AnsprechpartnerHinzufuegenController.java new file mode 100644 index 0000000..0fd15de --- /dev/null +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/AnsprechpartnerHinzufuegenController.java @@ -0,0 +1,67 @@ +package de.fhswf.in.inf.se.projektthemenvergabe.view; + +import java.io.IOException; + +import de.fhswf.in.inf.se.projektthemenvergabe.model.Ansprechpartner; +import javafx.application.Platform; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.control.ButtonType; +import javafx.scene.control.Dialog; +import javafx.scene.control.TextField; +import javafx.scene.layout.GridPane; +import javafx.util.Pair; + +public class AnsprechpartnerHinzufuegenController + extends Dialog<Pair<String, String>> +{ + @FXML + private TextField vornameTextField; + + @FXML + private TextField nachnameTextField; + + /** + * Create a {@link Dialog} for entering Vorname und Nachname of an + * {@link Ansprechpartner} + * + * @throws IOException + */ + public AnsprechpartnerHinzufuegenController() + { + setTitle("Neuer Ansprechpartner"); + setHeaderText("Geben Sie den Namen des Ansprechpartners ein."); + + FXMLLoader fxmlLoader = new FXMLLoader( + getClass().getResource("AnsprechpartnerHinzufuegen.fxml")); + fxmlLoader.setController(this); + + try + { + getDialogPane().setContent((GridPane) fxmlLoader.load()); + } + catch (IOException e) + { + // Ignoriert, da die FXML Datei immer da sein sollte :-P + e.printStackTrace(); + } + + // Setze die Button Typen für den Dialog + getDialogPane().getButtonTypes().addAll(ButtonType.OK, + ButtonType.CANCEL); + + // Setze Focus auf Vorname TextField + Platform.runLater(() -> vornameTextField.requestFocus()); + + // Wenn OK gedrückt wurde, gib ein Vorname-Nachname-Paar zurück + setResultConverter(dialogButton -> { + if (dialogButton == ButtonType.OK) + { + return new Pair<>(vornameTextField.getText(), + nachnameTextField.getText()); + } + + return null; + }); + } +} 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 7012eff..ee036e2 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/AnsprechpartnerListeController.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/AnsprechpartnerListeController.java @@ -20,6 +20,7 @@ import javafx.scene.control.TableView; import javafx.scene.control.TextInputDialog; import javafx.scene.control.cell.ComboBoxTableCell; import javafx.scene.control.cell.TextFieldTableCell; +import javafx.util.Pair; /** * The controller for the FXML-View AnsprechpartnerListe. @@ -69,21 +70,71 @@ public class AnsprechpartnerListeController .setCellValueFactory((data) -> data.getValue().vornameProperty()); ansprechpartnerVornameTableColumn .setCellFactory(TextFieldTableCell.forTableColumn()); + ansprechpartnerVornameTableColumn.setOnEditCommit((data) -> { + if (!data.getNewValue().isEmpty()) + { + Ansprechpartner tmpAns = new Ansprechpartner( + data.getRowValue().getOrganisation()); + tmpAns.setNachname(data.getRowValue().getNachname()); + tmpAns.setVorname(data.getNewValue().trim()); + + if (!main.getAnsprechpartner().contains(tmpAns)) + { + data.getRowValue().setVorname(tmpAns.getVorname()); + } + } + + // Hack, aktualisiert TableView, da Observable beim setzen nicht neu + // abgefragt wird + ansprechpartnerVornameTableColumn.setVisible(false); + ansprechpartnerVornameTableColumn.setVisible(true); + }); ansprechpartnerNachnameTableColumn.setCellValueFactory( (data) -> data.getValue().nachnameProperty()); ansprechpartnerNachnameTableColumn .setCellFactory(TextFieldTableCell.forTableColumn()); + ansprechpartnerNachnameTableColumn.setOnEditCommit((data) -> { + if (!data.getNewValue().isEmpty()) + { + Ansprechpartner tmpAns = new Ansprechpartner( + data.getRowValue().getOrganisation()); + tmpAns.setVorname(data.getRowValue().getVorname()); + tmpAns.setNachname(data.getNewValue().trim()); + + if (!main.getAnsprechpartner().contains(tmpAns)) + { + data.getRowValue().setNachname(tmpAns.getNachname()); + } + } + + // Hack, aktualisiert TableView, da Observable beim setzen nicht neu + // abgefragt wird + ansprechpartnerNachnameTableColumn.setVisible(false); + ansprechpartnerNachnameTableColumn.setVisible(true); + }); organisationsNameTableColumn.setCellValueFactory((data) -> { - data.getValue().getOrganisation().nameProperty() - .addListener((listener) -> { - // Hack, aktualisiere TableView, da Organisation kein Observable + data.getValue().organisationProperty().addListener((listener) -> { + // Hack, aktualisiert TableView, da Organisation kein + // Observable // ist organisationsNameTableColumn.setVisible(false); organisationsNameTableColumn.setVisible(true); }); - return new SimpleObjectProperty<>(data.getValue().getOrganisation()); + if (data.getValue().getOrganisation() != null) + { + data.getValue().getOrganisation().nameProperty() + .addListener((listener) -> { + // Hack, aktualisiert TableView, da Organisation kein + // Observable + // ist + organisationsNameTableColumn.setVisible(false); + organisationsNameTableColumn.setVisible(true); + }); + return data.getValue().organisationProperty(); + } + return new SimpleObjectProperty<Organisation>(new Organisation()); }); organisationsNameTableColumn.setOnEditCommit((data) -> { data.getRowValue().setOrganisation(data.getNewValue()); @@ -130,11 +181,14 @@ public class AnsprechpartnerListeController dialog.initOwner(main.getPrimaryStage()); Optional<String> result = dialog.showAndWait(); - if (result.isPresent() && !result.get().isEmpty()) + if (result.isPresent() && !result.get().trim().isEmpty()) { Organisation organisation = new Organisation(); - organisation.setName(result.get()); - main.getOrganisation().add(organisation); + organisation.setName(result.get().trim()); + if (!main.getOrganisation().contains(organisation)) + { + main.getOrganisation().add(organisation); + } } } @@ -155,9 +209,14 @@ public class AnsprechpartnerListeController dialog.initOwner(main.getPrimaryStage()); Optional<String> result = dialog.showAndWait(); - if (result.isPresent() && !result.get().isEmpty()) + if (result.isPresent() && !result.get().trim().isEmpty()) { - organisation.setName(result.get()); + Organisation tmpOrg = new Organisation(); + tmpOrg.setName(result.get().trim()); + if (!main.getOrganisation().contains(tmpOrg)) + { + organisation.setName(tmpOrg.getName()); + } } } @@ -187,8 +246,14 @@ public class AnsprechpartnerListeController if (result == null || result.get() == ButtonType.OK) { - main.getAnsprechpartner() - .removeAll(selectedItem.getAnsprechpartner()); + Ansprechpartner[] ansArray = selectedItem.getAnsprechpartner() + .toArray(new Ansprechpartner[selectedItem + .getAnsprechpartner().size()]); + for (Ansprechpartner ans : ansArray) + { + ans.setOrganisation(null); + } + main.getOrganisation().remove(organisationComboBox.getValue()); } } @@ -206,7 +271,7 @@ public class AnsprechpartnerListeController if (selectedItem != null) { - selectedItem.getOrganisation().removeAnsprechpartner(selectedItem); + selectedItem.setOrganisation(null); main.getAnsprechpartner().remove(selectedItem); } } @@ -221,11 +286,27 @@ public class AnsprechpartnerListeController Organisation organisation = organisationComboBox.getValue(); if (organisation != null) { - Ansprechpartner ansprechpartner = new Ansprechpartner(organisation); - ansprechpartner.setVorname("Petra"); - ansprechpartner.setNachname("Muster"); + AnsprechpartnerHinzufuegenController dialog; + + dialog = new AnsprechpartnerHinzufuegenController(); - main.getAnsprechpartner().add(ansprechpartner); + dialog.initOwner(main.getPrimaryStage()); + + Optional<Pair<String, String>> result = dialog.showAndWait(); + + if (result.isPresent() && !result.get().getKey().trim().isEmpty() + && !result.get().getValue().trim().isEmpty()) + { + Ansprechpartner ansprechpartner = new Ansprechpartner( + organisation); + ansprechpartner.setVorname(result.get().getKey().trim()); + ansprechpartner.setNachname(result.get().getValue().trim()); + + if (!main.getAnsprechpartner().contains(ansprechpartner)) + { + main.getAnsprechpartner().add(ansprechpartner); + } + } } } } |
