From a861707fd35bc487530a67c9402e22b35218fbd8 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Fri, 11 Aug 2017 19:09:03 +0200
Subject: [PATCH] #120 -started localization on controller classes (last
 started: ExportChartController (unfinished!))

---
 .../budgetmaster/logic/utils/Strings.java     | 26 ++++++++++++++-----
 .../budgetmaster/main/_de.properties          | 18 ++++++++++++-
 .../ui/controller/CategoryController.java     |  8 +++---
 .../ui/controller/ChartController.java        | 20 +++++++-------
 .../ui/controller/Controller.java             | 15 +++++------
 .../ui/controller/ExportChartController.java  | 20 +++++++-------
 6 files changed, 71 insertions(+), 36 deletions(-)

diff --git a/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java b/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
index 4e5682972..f5544a5f8 100644
--- a/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
+++ b/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
@@ -19,12 +19,24 @@ public class Strings
     public static final String TITLE_AMOUNT = "title.amount";
     public static final String TITLE_INFO = "title.info";
     public static final String TITLE_WARNING = "title.warning";
-    public static final String TITLE_ERROR = "title.error";    
+    public static final String TITLE_ERROR = "title.error";
+    public static final String TITLE_CATEGORY_NEW = "title.category.new";  
+    public static final String TITLE_CATEGORY_EDIT = "title.category.edit";  
+    public static final String TITLE_CHART_EXPORT = "title.chart.export";
+    public static final String TITLE_MODAL = "title.modal";
+    
+    //LOAD
+    public static final String LOAD_CHARTS = "load.charts";
+    public static final String LOAD_DATA = "load.data";
     
     //MISC
     public static final String CATEGORY_NONE = "category.none";
+    public static final String CATEGORY_REST = "category.rest";
     public static final String TOOLTIP_CHART_CATEGORIES = "tooltip.chart.categories";
-    public static final String CHART_MONTH_LINE_SUM = "chart.month.line.sum";   
+    public static final String CHART_MONTH_LINE_SUM = "chart.month.line.sum";
+    public static final String CATEGORIES_PLACEHOLDER = "categories.placeholder";
+    public static final String CHART_CATEGORIES_TITLE_INCOMES = "chart.categories.title.incomes";
+    public static final String CHART_CATEGORIES_TITLE_PAYMENTS = "chart.categories.title.payments";
     
     //REPORT
     public static final String REPORT_POSITION = "report.position";
@@ -56,8 +68,7 @@ public class Strings
     public static final String MONTH_SEPTEMBER ="month.september"; 
     public static final String MONTH_OCTOBER ="month.october"; 
     public static final String MONTH_NOVEMBER ="month.november"; 
-    public static final String MONTH_DECEMBER ="month.december"; 
-    
+    public static final String MONTH_DECEMBER ="month.december";     
     
     //INFO
     public static final String INFO_TITLE_CATEGORY_DELETE = "info.title.category.delete";
@@ -68,10 +79,10 @@ public class Strings
     public static final String INFO_TEXT_PAYMENT_REPEATING_DELETE_ALL = "info.text.payment.repeating.delete.all";
     public static final String INFO_TEXT_PAYMENT_REPEATING_DELETE_FUTURES = "info.text.payment.repeating.delete.futures";
     public static final String INFO_TEXT_PAYMENT_REPEATING_DELETE_CANCEL = "info.text.payment.repeating.delete.cancel";
-    
-    
+    public static final String INFO_FIRST_START = "info.first.start";
     
     //WARNING
+    public static final String WARNING_ENDDATE_BEFORE_STARTDATE = "warning.enddate.before.startdate";
     
     //ERROR
     public static final String ERROR_UNKNOWN_HOST = "error.unknown.host";
@@ -81,4 +92,7 @@ public class Strings
     public static final String ERROR_400 = "error.400";
     public static final String ERROR_401 = "error.401";
     public static final String ERROR_500 = "error.500";
+    public static final String ERROR_CREATE_UI = "error.create.ui";
+    public static final String ERROR_SERVER_CONNECTION = "error.server.connection";
+    public static final String ERROR_SERVER_CONNECTION_WITH_DETAILS = "error.server.connection.with.details";
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/main/_de.properties b/src/de/deadlocker8/budgetmaster/main/_de.properties
index af8b8c38a..86ba0e9cc 100644
--- a/src/de/deadlocker8/budgetmaster/main/_de.properties
+++ b/src/de/deadlocker8/budgetmaster/main/_de.properties
@@ -18,11 +18,23 @@ title.amount=Betrag
 title.info=Hinweis
 title.warning=Warnung
 title.error=Fehler
+title.category.new=Neue Kategorie
+title.category.edit=Kategorie bearbeiten
+title.chart.export=Diagramm exportieren
+title.modal=Vorgang l�uft
+
+# LOAD
+load.charts=Lade Diagramme...
+load.data=Lade Daten...
 
 # MISC
 category.none=Keine Kategorie
+category.rest=�bertrag
 tooltip.chart.categories={0}\n{1} %\n{2}
 chart.month.line.sum=Summe in {0}
+categories.placeholder=Keine Kategorien verf�gbar
+chart.categories.title.incomes=Einnahmen nach Kategorien
+chart.categories.title.payments=Ausgaben nach Kategorien
 
 # REPORT
 report.position=Nr.
@@ -65,9 +77,10 @@ info.text.payment.repeating.delete=Es handelt sich um eine wiederkehrende Zahlun
 info.text.payment.repeating.delete.all=Alle
 info.text.payment.repeating.delete.futures=Alle zuk�nftigen
 info.text.payment.repeating.delete.cancel=Abbrechen
-
+info.first.start=Vor der ersten Benutzung musst du deine Serverdaten eingeben.
 
 # WARNING
+warning.enddate.before.startdate=Das Enddatum darf nicht vor dem Startdatum liegen.
 
 # ERROR
 error.unknown.host=Es konnte keine Verbindung mit dem Internet hergestellt werden.
@@ -77,3 +90,6 @@ error.https.hostname.wrong=Der Server verwendet ein selbst signiertes Zertifkat
 error.400=Der Server erhielt eine fehlerhafte Anfrage oder ung�ltige Parameter.
 error.401=Ung�ltiges Passwort.
 error.500=Beim Ausf�hren der Anfrage ist ein interner Serverfehler ist aufgetreten.
+error.create.ui=Beim Erstellen der Benutzeroberfl�che ist ein Fehler aufgetreten.
+error.server.connection=Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte �berpr�fe deine Einstellungen.
+error.server.connection.with.details=Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte �berpr�fe deine Einstellungen.\n\nFehlerdetails:\n{0}
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/CategoryController.java b/src/de/deadlocker8/budgetmaster/ui/controller/CategoryController.java
index 2c8762fe1..a00ebacff 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/CategoryController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/CategoryController.java
@@ -9,6 +9,7 @@ import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
 import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import de.deadlocker8.budgetmaster.ui.Refreshable;
 import de.deadlocker8.budgetmaster.ui.cells.CategoryCell;
 import fontAwesome.FontIconType;
@@ -32,6 +33,7 @@ import javafx.stage.Stage;
 import javafx.util.Callback;
 import logger.Logger;
 import tools.ConvertTo;
+import tools.Localization;
 
 public class CategoryController implements Refreshable
 {
@@ -86,7 +88,7 @@ public class CategoryController implements Refreshable
 			}
 		});
 		
-		Label labelPlaceholder = new Label("Keine Kategorien verfügbar");
+		Label labelPlaceholder = new Label(Localization.getString(Strings.CATEGORIES_PLACEHOLDER));
 		labelPlaceholder.setStyle("-fx-font-size: 16");
 		listView.setPlaceholder(labelPlaceholder);
 
@@ -132,11 +134,11 @@ public class CategoryController implements Refreshable
 			
 			if(edit)
 			{
-				newStage.setTitle("Kategorie bearbeiten");
+				newStage.setTitle(Localization.getString(Strings.TITLE_CATEGORY_EDIT));
 			}
 			else
 			{
-				newStage.setTitle("Neue Kategorie");
+				newStage.setTitle(Localization.getString(Strings.TITLE_CATEGORY_NEW));
 			}
 			
 			newStage.setScene(new Scene(root));
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/ChartController.java b/src/de/deadlocker8/budgetmaster/ui/controller/ChartController.java
index 98132a223..6a79ac25a 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/ChartController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/ChartController.java
@@ -19,6 +19,7 @@ import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
 import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import de.deadlocker8.budgetmaster.ui.Refreshable;
 import fontAwesome.FontIconType;
 import javafx.application.Platform;
@@ -45,6 +46,7 @@ import javafx.util.Callback;
 import logger.Logger;
 import tools.AlertGenerator;
 import tools.ConvertTo;
+import tools.Localization;
 import tools.Worker;
 
 public class ChartController implements Refreshable
@@ -145,11 +147,11 @@ public class ChartController implements Refreshable
 
 			Platform.runLater(()->{;
 				vboxChartCategories.getChildren().clear();
-				categoriesChart = new CategoriesChart("Einnahmen nach Kategorien", 
-																	  "Ausgaben nach Kategorien",
-																	  sums,
-																	  controller.getSettings().getCurrency(),
-																	  legendType);
+				categoriesChart = new CategoriesChart(Localization.getString(Strings.CHART_CATEGORIES_TITLE_INCOMES), 
+													  Localization.getString(Strings.CHART_CATEGORIES_TITLE_PAYMENTS),
+													  sums,
+													  controller.getSettings().getCurrency(),
+													  legendType);
 				vboxChartCategories.getChildren().add(categoriesChart);
 				VBox.setVgrow(categoriesChart, Priority.ALWAYS);
 			});
@@ -200,7 +202,7 @@ public class ChartController implements Refreshable
 					Stage newStage = new Stage();
 					newStage.initOwner(controller.getStage());
 					newStage.initModality(Modality.APPLICATION_MODAL);
-					newStage.setTitle("Diagramm exportieren");
+					newStage.setTitle(Localization.getString(Strings.TITLE_CHART_EXPORT));
 					newStage.setScene(new Scene(root));
 					newStage.getIcons().add(controller.getIcon());
 					newStage.setResizable(false);
@@ -236,7 +238,7 @@ public class ChartController implements Refreshable
 		if(endDate.isBefore(startDate))
 		{
 			Platform.runLater(() -> {
-				AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Das Enddatum darf nicht vor dem Startdatum liegen.", controller.getIcon(), controller.getStage(), null, false);
+				AlertGenerator.showAlert(AlertType.WARNING, Localization.getString(Strings.TITLE_WARNING), "", Localization.getString(Strings.WARNING_ENDDATE_BEFORE_STARTDATE), controller.getIcon(), controller.getStage(), null, false);
 			});
 			return;
 		}
@@ -290,11 +292,11 @@ public class ChartController implements Refreshable
 	@Override
 	public void refresh()
 	{
-		Stage modalStage = Helpers.showModal("Vorgang läuft", "Lade Diagramme...", controller.getStage(), controller.getIcon());
+		Stage modalStage = Helpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_CHARTS), controller.getStage(), controller.getIcon());
 
 		// prepare chart categories
 		LocalDate startDate = LocalDate.parse(controller.getCurrentDate().withDayOfMonth(1).toString("yyyy-MM-dd"));
-		LocalDate endDate = LocalDate.parse(controller.getCurrentDate().dayOfMonth().withMaximumValue().toString("yyy-MM-dd"));
+		LocalDate endDate = LocalDate.parse(controller.getCurrentDate().dayOfMonth().withMaximumValue().toString("yyyy-MM-dd"));
 
 		datePickerStart.setValue(startDate);
 		datePickerEnd.setValue(endDate);
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java b/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
index 4dd5b17e7..34c50c7e3 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
@@ -138,7 +138,7 @@ public class Controller
 		{
 			Logger.error(e);
 			Platform.runLater(() -> {
-				AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Erstellen der Benutzeroberfläche ist ein Fehler aufgetreten", icon, stage, null, false);
+				AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", Localization.getString(Strings.ERROR_CREATE_UI), icon, stage, null, false);
 			});			
 		}
 		
@@ -161,7 +161,7 @@ public class Controller
 			Platform.runLater(() -> {
 				toggleAllTabsExceptSettings(true);
 				tabPane.getSelectionModel().select(tabSettings);
-				AlertGenerator.showAlert(AlertType.INFORMATION, "Hinweis", "", "Vor der ersten Benutzung musst du deine Serverdaten eingeben.", icon, stage, null, false);
+				AlertGenerator.showAlert(AlertType.INFORMATION, Localization.getString(Strings.TITLE_INFO), "", Localization.getString(Strings.INFO_FIRST_START), icon, stage, null, false);
 			});
 		}
 		else
@@ -251,16 +251,15 @@ public class Controller
 				
 				alertIsShowing = true;
 				Alert alert = new Alert(AlertType.ERROR);
-				alert.setTitle("Fehler");
+				alert.setTitle(Localization.getString(Strings.TITLE_ERROR));
 				alert.setHeaderText("");
 				if(errorMessage == null)
 				{
-					alert.setContentText("Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte überprüfe deine Einstellungen.");
+					alert.setContentText(Localization.getString(Strings.ERROR_SERVER_CONNECTION));
 				}
 				else
 				{
-					alert.setContentText("Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte überprüfe deine Einstellungen.\n\n"
-							+ "Fehlerdetails:\n" + errorMessage);
+					alert.setContentText(Localization.getString(Strings.ERROR_SERVER_CONNECTION_WITH_DETAILS, errorMessage));
 				}
 				
 				Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow();
@@ -333,7 +332,7 @@ public class Controller
 	
 	public void refresh(FilterSettings newFilterSettings)
 	{
-		Stage modalStage = Helpers.showModal("Vorgang läuft", "Lade Daten...", stage, icon);
+		Stage modalStage = Helpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DATA), stage, icon);
 
 		Worker.runLater(() -> {
 			try
@@ -348,7 +347,7 @@ public class Controller
 				{
 					int rest = connection.getRestForAllPreviousMonths(currentDate.getYear(), currentDate.getMonthOfYear());
 					//categoryID 2 = Rest
-					paymentHandler.getPayments().add(new NormalPayment(-1, rest, currentDate.withDayOfMonth(1).toString("yyyy-MM-dd"), 2, "Übertrag", ""));				
+					paymentHandler.getPayments().add(new NormalPayment(-1, rest, currentDate.withDayOfMonth(1).toString("yyyy-MM-dd"), 2, Localization.getString(Strings.CATEGORY_REST), ""));				
 				}
 				
 				categoryHandler = new CategoryHandler(connection.getCategories());
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/ExportChartController.java b/src/de/deadlocker8/budgetmaster/ui/controller/ExportChartController.java
index eb8037e92..bae56d216 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/ExportChartController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/ExportChartController.java
@@ -10,6 +10,7 @@ import javax.imageio.ImageIO;
 import de.deadlocker8.budgetmaster.logic.charts.ChartExportable;
 import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import fontAwesome.FontIconType;
 import javafx.embed.swing.SwingFXUtils;
 import javafx.fxml.FXML;
@@ -28,6 +29,7 @@ import javafx.stage.Stage;
 import logger.Logger;
 import tools.AlertGenerator;
 import tools.ConvertTo;
+import tools.Localization;
 
 public class ExportChartController
 {
@@ -106,7 +108,7 @@ public class ExportChartController
 	public void chooseFile()
 	{
 		FileChooser fileChooser = new FileChooser();
-		fileChooser.setTitle("Diagramm exportieren");
+		fileChooser.setTitle(Localization.getString(Strings.TITLE_CHART_EXPORT));
 		FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("PNG (*.png)", "*.png");
 		if(savePath != null)
 		{
@@ -127,7 +129,7 @@ public class ExportChartController
 		String widthText = textFieldWidth.getText();
 		if(widthText == null || widthText.equals(""))
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Bitte gib eine Breite in Pixeln an.", controller.getControlle().getIcon(), stage, null, false);
+			AlertGenerator.showAlert(AlertType.WARNING, Localization.getString(Strings.TITLE_WARNING), "", "Bitte gib eine Breite in Pixeln an.", controller.getControlle().getIcon(), stage, null, false);
 			return;
 		}
 		
@@ -138,14 +140,14 @@ public class ExportChartController
 		}
 		catch(Exception e)
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Nur ganzahlige Werte sind für das Feld Breite erlaubt.", controller.getControlle().getIcon(), stage, null, false);
+			AlertGenerator.showAlert(AlertType.WARNING, Localization.getString(Strings.TITLE_WARNING), "", "Nur ganzahlige Werte sind für das Feld Breite erlaubt.", controller.getControlle().getIcon(), stage, null, false);
 			return;
 		}
 		
 		String heightText = textFieldHeight.getText();
 		if(heightText == null || heightText.equals(""))
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Bitte gib eine Höhe in Pixeln an.", controller.getControlle().getIcon(), stage, null, false);
+			AlertGenerator.showAlert(AlertType.WARNING, Localization.getString(Strings.TITLE_WARNING), "", "Bitte gib eine Höhe in Pixeln an.", controller.getControlle().getIcon(), stage, null, false);
 			return;
 		}
 		
@@ -156,13 +158,13 @@ public class ExportChartController
 		}
 		catch(Exception e)
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Nur ganzahlige Werte sind für das Feld Höhe erlaubt.", controller.getControlle().getIcon(), stage, null, false);
+			AlertGenerator.showAlert(AlertType.WARNING, Localization.getString(Strings.TITLE_WARNING), "", "Nur ganzahlige Werte sind für das Feld Höhe erlaubt.", controller.getControlle().getIcon(), stage, null, false);
 			return;
 		}
 
 		if(savePath == null)
 		{
-			AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Wähle einen Speicherort für das Diagramm aus.", controller.getControlle().getIcon(), stage, null, false);
+			AlertGenerator.showAlert(AlertType.WARNING, Localization.getString(Strings.TITLE_WARNING), "", "Wähle einen Speicherort für das Diagramm aus.", controller.getControlle().getIcon(), stage, null, false);
 			return;
 		}
 		
@@ -197,7 +199,7 @@ public class ExportChartController
 				catch(IOException e1)
 				{
 					Logger.error(e1);
-					AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Der Ordner konnte nicht geöffnet werden\n\n" + e1.getMessage(), controller.getControlle().getIcon(), stage, null, false);
+					AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", "Der Ordner konnte nicht geöffnet werden\n\n" + e1.getMessage(), controller.getControlle().getIcon(), stage, null, false);
 				}
 			}
 			else if (result.get() == buttonTypeTwo)
@@ -209,7 +211,7 @@ public class ExportChartController
 				catch(IOException e1)
 				{
 					Logger.error(e1);
-					AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Das Diagramm konnte nicht geöffnet werden\n\n" + e1.getMessage(), controller.getControlle().getIcon(), stage, null, false);
+					AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", "Das Diagramm konnte nicht geöffnet werden\n\n" + e1.getMessage(), controller.getControlle().getIcon(), stage, null, false);
 				}
 			}
 			else
@@ -220,7 +222,7 @@ public class ExportChartController
 		catch(IOException e)
 		{
 			Logger.error(e);
-			AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Exportieren des Diagramms ist ein Fehler aufgetreten:\n\n" + e.getMessage(), controller.getControlle().getIcon(), stage, null, false);
+			AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", "Beim Exportieren des Diagramms ist ein Fehler aufgetreten:\n\n" + e.getMessage(), controller.getControlle().getIcon(), stage, null, false);
 		}
 		
 		stage.close();	
-- 
GitLab