From 7d5aa07dd1ada6bc90c2f8fc74306baeddc81778 Mon Sep 17 00:00:00 2001
From: Dennis Eisold <de@itstall.de>
Date: Fri, 8 Nov 2019 15:22:52 +0100
Subject: [PATCH] Work with Treemap

---
 src/main/java/de/itstall/App.java             |  4 ++
 .../de/itstall/TelefonbuchController.java     | 52 +++++++++++++++----
 src/main/java/module-info.java                |  3 +-
 3 files changed, 49 insertions(+), 10 deletions(-)

diff --git a/src/main/java/de/itstall/App.java b/src/main/java/de/itstall/App.java
index ead290a..7419bb2 100644
--- a/src/main/java/de/itstall/App.java
+++ b/src/main/java/de/itstall/App.java
@@ -1,5 +1,6 @@
 package de.itstall;
 
+import de.itstall.model.Kontakt;
 import javafx.application.Application;
 import javafx.fxml.FXMLLoader;
 import javafx.scene.Parent;
@@ -7,6 +8,8 @@ import javafx.scene.Scene;
 import javafx.stage.Stage;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.TreeMap;
 
 /**
  * JavaFX App
@@ -14,6 +17,7 @@ import java.io.IOException;
 public class App extends Application {
 
     private static Scene scene;
+    public static TreeMap<String, Kontakt> eintraege = new TreeMap<>();
 
     @Override
     public void start(Stage stage) throws IOException {
diff --git a/src/main/java/de/itstall/TelefonbuchController.java b/src/main/java/de/itstall/TelefonbuchController.java
index ecb533d..8308ba8 100644
--- a/src/main/java/de/itstall/TelefonbuchController.java
+++ b/src/main/java/de/itstall/TelefonbuchController.java
@@ -5,11 +5,6 @@ import javafx.event.ActionEvent;
 import javafx.fxml.FXML;
 import javafx.scene.control.Button;
 import javafx.scene.control.TextField;
-import javafx.scene.layout.Border;
-import javafx.scene.layout.BorderStroke;
-import javafx.scene.layout.BorderStrokeStyle;
-import javafx.scene.layout.BorderWidths;
-import javafx.scene.paint.Color;
 
 public class TelefonbuchController {
 
@@ -50,12 +45,12 @@ public class TelefonbuchController {
 
     @FXML
     void loeschen(ActionEvent event) {
-
+	    deleteKontakt();
     }
 
     @FXML
     void navWeiter(ActionEvent event) {
-
+	    //kontakt = App.eintraege.get(App.eintraege.n)
     }
 
     @FXML
@@ -65,7 +60,14 @@ public class TelefonbuchController {
 
     @FXML
     void neuerEintrag(ActionEvent event) {
-
+	    kontakt = new Kontakt();
+	    txtVorname.setText("");
+	    txtNachname.setText("");
+	    txtStrasse.setText("");
+	    txtHNr.setText("");
+	    txtPlz.setText("");
+	    txtOrt.setText("");
+	    txtTelefon.setText("");
     }
 
     @FXML
@@ -87,6 +89,7 @@ public class TelefonbuchController {
                 if(!kontakt.setVorname(txtVorname.getText())) {
                     setFieldError(txtVorname, true);
                 } else {
+	                saveKontakt();
                     setFieldError(txtVorname, false);
                 }
             }
@@ -97,6 +100,7 @@ public class TelefonbuchController {
                 if(!kontakt.setNachname(txtNachname.getText())) {
                     setFieldError(txtNachname, true);
                 } else {
+	                saveKontakt();
                     setFieldError(txtNachname, false);
                 }
             }
@@ -107,6 +111,7 @@ public class TelefonbuchController {
                 if(!kontakt.setStrasse(txtStrasse.getText())) {
                     setFieldError(txtStrasse, true);
                 } else {
+	                saveKontakt();
                     setFieldError(txtStrasse, false);
                 }
             }
@@ -117,6 +122,7 @@ public class TelefonbuchController {
                 if(!kontakt.setHausnummer(txtHNr.getText())) {
                     setFieldError(txtHNr, true);
                 } else {
+	                saveKontakt();
                     setFieldError(txtHNr, false);
                 }
             }
@@ -127,6 +133,7 @@ public class TelefonbuchController {
                 if(!kontakt.setPlz(txtPlz.getText())) {
                     setFieldError(txtPlz, true);
                 } else {
+	                saveKontakt();
                     setFieldError(txtPlz, false);
                 }
             }
@@ -137,6 +144,7 @@ public class TelefonbuchController {
                 if(!kontakt.setOrt(txtOrt.getText())) {
                     setFieldError(txtOrt, true);
                 } else {
+	                saveKontakt();
                     setFieldError(txtOrt, false);
                 }
             }
@@ -144,16 +152,42 @@ public class TelefonbuchController {
 
         txtTelefon.focusedProperty().addListener((observableValue, aBoolean, t1) -> {
             if(!t1) {
+            	if(txtTelefon.getText() != kontakt.getTelefon()) {
+            		deleteKontakt();
+            		saveKontakt();
+	            }
                 if(!kontakt.setTelefon(txtTelefon.getText())) {
                     setFieldError(txtTelefon, true);
                 } else {
+                	saveKontakt();
                     setFieldError(txtTelefon, false);
                 }
             }
         });
     }
 
-    public void setFieldError(TextField field, boolean set) {
+	/**
+	 * Kontakt aus Treemap loeschen
+	 */
+	public void deleteKontakt() {
+    	App.eintraege.remove(txtTelefon.getText());
+    }
+
+	/**
+	 * Kontakt in die Treemap speichern
+	 */
+	public void saveKontakt() {
+    	if(!kontakt.getTelefon().isEmpty()) {
+    		App.eintraege.put(kontakt.getTelefon(), kontakt);
+	    }
+    }
+
+	/**
+	 * Background der Felder setzen im Fehler Fall
+	 * @param field : Textfeld Object
+	 * @param set : true:Fehler false:Kein Fehler
+	 */
+	public void setFieldError(TextField field, boolean set) {
         if(set) {
             field.setStyle("-fx-control-inner-background: #ff000040;");
         } else {
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index e5e6334..0f18bf9 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -1,7 +1,8 @@
 module de.itstall {
     requires javafx.controls;
     requires javafx.fxml;
+	requires java.desktop;
 
-    opens de.itstall to javafx.fxml;
+	opens de.itstall to javafx.fxml;
     exports de.itstall;
 }
\ No newline at end of file
-- 
GitLab