From c2d643fe7e88efa19ddc87f19f38bb283051d415 Mon Sep 17 00:00:00 2001 From: Stefan Suhren Date: Wed, 6 Jan 2016 19:12:09 +0100 Subject: Readd vertical prototype specific things This reverts commit 4aade633751694319a403a415134018a0b213b00. --- .../model/Ansprechpartner.java | 76 +++++++++++++++++----- .../projektthemenvergabe/model/Organisation.java | 16 +++++ .../view/AnsprechpartnerListeController.java | 75 +++++++++++++++++---- 3 files changed, 138 insertions(+), 29 deletions(-) (limited to 'src/de') 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 10ab7b1..7b708f4 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Ansprechpartner.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Ansprechpartner.java @@ -5,6 +5,8 @@ import java.util.Collections; import java.util.List; import javafx.beans.Observable; +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; import javafx.util.Callback; @@ -17,7 +19,7 @@ public class Ansprechpartner private ArrayList projekt = new ArrayList(); - private Organisation organisation; + private ObjectProperty organisation = new SimpleObjectProperty<>(); /** * Generates an extractor that fires when a property of a list value @@ -27,10 +29,21 @@ public class Ansprechpartner */ public static Callback extractor() { - return ansprechpartner -> new Observable[] { - ansprechpartner.vornameProperty(), - ansprechpartner.nachnameProperty(), - ansprechpartner.getOrganisation().nameProperty() }; + return ansprechpartner -> { + List extractorList = new ArrayList<>(); + + extractorList.add(ansprechpartner.vornameProperty()); + extractorList.add(ansprechpartner.nachnameProperty()); + extractorList.add(ansprechpartner.organisationProperty()); + + if (ansprechpartner.getOrganisation() != null) + { + extractorList + .add(ansprechpartner.getOrganisation().nameProperty()); + } + + return extractorList.toArray(new Observable[extractorList.size()]); + }; } /** @@ -40,13 +53,12 @@ public class Ansprechpartner */ public Ansprechpartner(Organisation organisation) { - if (organisation == null) + this.organisation.set(organisation); + + if (organisation != null) { - throw new IllegalArgumentException( - "Ansprechpartner sollten nicht arbeitslos sein."); + this.organisation.get().addAnsprechpartner(this); } - this.organisation = organisation; - this.organisation.addAnsprechpartner(this); } /** @@ -79,6 +91,16 @@ public class Ansprechpartner this.projekt.remove(projekt); } + /** + * Getter for property organisation. + * + * @return Returns the organisation. + */ + public ObjectProperty organisationProperty() + { + return organisation; + } + /** * Getter for organisation. * @@ -86,7 +108,7 @@ public class Ansprechpartner */ public Organisation getOrganisation() { - return organisation; + return organisation.get(); } /** @@ -97,14 +119,17 @@ public class Ansprechpartner */ public void setOrganisation(Organisation organisation) { - if (organisation == null) + if (this.organisation.get() != null) + { + this.organisation.get().removeAnsprechpartner(this); + } + + this.organisation.set(organisation); + + if (organisation != null) { - throw new IllegalArgumentException( - "Ansprechpartner sollten nicht arbeitslos sein."); + organisation.addAnsprechpartner(this); } - this.organisation.removeAnsprechpartner(this); - this.organisation = organisation; - this.organisation.addAnsprechpartner(this); } /** @@ -169,6 +194,23 @@ public class Ansprechpartner this.vorname.set(vorname); } + /* + * (non-Javadoc) + * + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object obj) + { + if (!(obj instanceof Ansprechpartner)) + { + return false; + } + + return ((Ansprechpartner) obj).vorname.get().equals(vorname.get()) + && ((Ansprechpartner) obj).nachname.get().equals(nachname.get()); + } + /* * (non-Javadoc) * diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Organisation.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Organisation.java index dca4511..4525045 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Organisation.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Organisation.java @@ -107,4 +107,20 @@ public class Organisation { return name.get(); } + + /* + * (non-Javadoc) + * + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object obj) + { + if (!(obj instanceof Organisation)) + { + return false; + } + + return ((Organisation) obj).name.get().equals(name.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 71745e3..019fdc0 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/AnsprechpartnerListeController.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/AnsprechpartnerListeController.java @@ -71,7 +71,18 @@ public class AnsprechpartnerListeController ansprechpartnerVornameTableColumn .setCellFactory(TextFieldTableCell.forTableColumn()); ansprechpartnerVornameTableColumn.setOnEditCommit((data) -> { - data.getRowValue().setVorname(data.getNewValue().trim()); + 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 @@ -84,7 +95,18 @@ public class AnsprechpartnerListeController ansprechpartnerNachnameTableColumn .setCellFactory(TextFieldTableCell.forTableColumn()); ansprechpartnerNachnameTableColumn.setOnEditCommit((data) -> { - data.getRowValue().setNachname(data.getNewValue().trim()); + 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 @@ -93,14 +115,26 @@ public class AnsprechpartnerListeController }); organisationsNameTableColumn.setCellValueFactory((data) -> { - data.getValue().getOrganisation().nameProperty() - .addListener((listener) -> { - // Hack, aktualisiert 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(new Organisation()); }); organisationsNameTableColumn.setOnEditCommit((data) -> { data.getRowValue().setOrganisation(data.getNewValue()); @@ -151,7 +185,10 @@ public class AnsprechpartnerListeController { Organisation organisation = new Organisation(); organisation.setName(result.get().trim()); - main.getOrganisation().add(organisation); + if (!main.getOrganisation().contains(organisation)) + { + main.getOrganisation().add(organisation); + } } } @@ -174,7 +211,12 @@ public class AnsprechpartnerListeController Optional result = dialog.showAndWait(); if (result.isPresent() && !result.get().trim().isEmpty()) { - organisation.setName(result.get().trim()); + Organisation tmpOrg = new Organisation(); + tmpOrg.setName(result.get().trim()); + if (!main.getOrganisation().contains(tmpOrg)) + { + organisation.setName(tmpOrg.getName()); + } } } @@ -206,8 +248,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()); } } @@ -225,7 +273,7 @@ public class AnsprechpartnerListeController if (selectedItem != null) { - selectedItem.getOrganisation().removeAnsprechpartner(selectedItem); + selectedItem.setOrganisation(null); main.getAnsprechpartner().remove(selectedItem); } } @@ -256,7 +304,10 @@ public class AnsprechpartnerListeController ansprechpartner.setVorname(result.get().getKey().trim()); ansprechpartner.setNachname(result.get().getValue().trim()); - main.getAnsprechpartner().add(ansprechpartner); + if (!main.getAnsprechpartner().contains(ansprechpartner)) + { + main.getAnsprechpartner().add(ansprechpartner); + } } } } -- cgit v1.2.3-70-g09d2