From 09a13775c4ae300539611e664bb456930474efb7 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Fri, 11 Aug 2017 18:44:59 +0200
Subject: [PATCH] #120 - localized package "main" and "ui/cells"

---
 .../budgetmaster/logic/utils/Strings.java     | 15 ++++++++++++
 .../deadlocker8/budgetmaster/main/Main.java   | 23 ++++++++++---------
 .../budgetmaster/main/_de.properties          | 13 +++++++++++
 .../ui/cells/CategoryBudgetCell.java          | 10 ++------
 .../budgetmaster/ui/cells/CategoryCell.java   |  8 ++++---
 .../budgetmaster/ui/cells/PaymentCell.java    | 14 ++++++-----
 .../ui/controller/Controller.java             | 21 ++++++++---------
 .../ui/controller/SplashScreenController.java | 17 +++++++-------
 8 files changed, 73 insertions(+), 48 deletions(-)

diff --git a/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java b/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
index 61d2132d3..4e5682972 100644
--- a/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
+++ b/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
@@ -58,6 +58,21 @@ public class Strings
     public static final String MONTH_NOVEMBER ="month.november"; 
     public static final String MONTH_DECEMBER ="month.december"; 
     
+    
+    //INFO
+    public static final String INFO_TITLE_CATEGORY_DELETE = "info.title.category.delete";
+    public static final String INFO_TEXT_CATEGORY_DELETE = "info.text.category.delete";
+    public static final String INFO_TITLE_PAYMENT_DELETE = "info.title.payment.delete";
+    public static final String INFO_TEXT_PAYMENT_DELETE = "info.text.payment.delete";
+    public static final String INFO_TEXT_PAYMENT_REPEATING_DELETE = "info.text.payment.repeating.delete";
+    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";
+    
+    
+    
+    //WARNING
+    
     //ERROR
     public static final String ERROR_UNKNOWN_HOST = "error.unknown.host";
     public static final String ERROR_UNKNOWN_ERROR = "error.unknown.error";
diff --git a/src/de/deadlocker8/budgetmaster/main/Main.java b/src/de/deadlocker8/budgetmaster/main/Main.java
index 84931641e..f838aa925 100644
--- a/src/de/deadlocker8/budgetmaster/main/Main.java
+++ b/src/de/deadlocker8/budgetmaster/main/Main.java
@@ -2,8 +2,8 @@ package de.deadlocker8.budgetmaster.main;
 
 import java.io.File;
 import java.util.Locale;
-import java.util.ResourceBundle;
 
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import de.deadlocker8.budgetmaster.ui.controller.SplashScreenController;
 import javafx.application.Application;
 import javafx.fxml.FXMLLoader;
@@ -18,27 +18,22 @@ import tools.PathUtils;
 
 public class Main extends Application
 {
-	public static ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/budgetmaster/main/", Locale.GERMANY);
-
 	@Override
 	public void start(Stage stage)
 	{
 		try
-		{
-			Localization.init("de/deadlocker8/budgetmaster/main/");
-			Localization.loadLanguage(Locale.GERMANY);
-			
+		{			
 		    Image icon = new Image("/de/deadlocker8/budgetmaster/resources/icon.png");
 			FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("de/deadlocker8/budgetmaster/ui/fxml/SplashScreen.fxml"));
 			Parent root = (Parent)loader.load();
 			
 			Scene scene = new Scene(root, 450, 230);
 
-			((SplashScreenController)loader.getController()).init(stage, icon, bundle);
+			((SplashScreenController)loader.getController()).init(stage, icon);
 
 			stage.setResizable(false);			
 			stage.getIcons().add(icon);
-			stage.setTitle(bundle.getString("app.name"));
+			stage.setTitle(Localization.getString(Strings.APP_NAME));
 			stage.setScene(scene);			
 			stage.show();
 		}
@@ -51,15 +46,21 @@ public class Main extends Application
 	@Override
 	public void init() throws Exception
 	{
+		Localization.init("de/deadlocker8/budgetmaster/main/");
+		Localization.loadLanguage(Locale.GERMANY);
+		
 		Parameters params = getParameters();
 		String logLevelParam = params.getNamed().get("loglevel");
 		Logger.setLevel(logLevelParam);
 		
-		File logFolder = new File(PathUtils.getOSindependentPath() + bundle.getString("folder"));
+		File logFolder = new File(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER));
 		PathUtils.checkFolder(logFolder);
 		Logger.enableFileOutput(logFolder, System.out, System.err, FileOutputMode.COMBINED);
 
-		Logger.appInfo(bundle.getString("app.name"), bundle.getString("version.name"), bundle.getString("version.code"), bundle.getString("version.date"));
+		Logger.appInfo(Localization.getString(Strings.APP_NAME),
+						Localization.getString(Strings.VERSION_NAME),
+						Localization.getString(Strings.VERSION_CODE),
+						Localization.getString(Strings.VERSION_DATE));
 	}
 
 	public static void main(String[] args)
diff --git a/src/de/deadlocker8/budgetmaster/main/_de.properties b/src/de/deadlocker8/budgetmaster/main/_de.properties
index 2e420091c..af8b8c38a 100644
--- a/src/de/deadlocker8/budgetmaster/main/_de.properties
+++ b/src/de/deadlocker8/budgetmaster/main/_de.properties
@@ -56,6 +56,19 @@ month.october=Oktober
 month.november=November
 month.december=Dezember
 
+# INFO
+info.title.category.delete=Kategorie l�schen
+info.text.category.delete=M�chtest du diese Kategorie wirklich unwiderruflich l�schen?
+info.title.payment.delete=Zahlung l�schen
+info.text.payment.delete=M�chtest du diese Zahlung wirklich unwiderruflich l�schen?
+info.text.payment.repeating.delete=Es handelt sich um eine wiederkehrende Zahlung. Welche Zahlungen sollen gel�scht werden?
+info.text.payment.repeating.delete.all=Alle
+info.text.payment.repeating.delete.futures=Alle zuk�nftigen
+info.text.payment.repeating.delete.cancel=Abbrechen
+
+
+# WARNING
+
 # ERROR
 error.unknown.host=Es konnte keine Verbindung mit dem Internet hergestellt werden.
 error.unknown.error=Unbekannter Fehler ({0})
diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java
index 11296797f..fcf752dd7 100644
--- a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java
+++ b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java
@@ -30,15 +30,9 @@ public class CategoryBudgetCell extends ListCell<CategoryBudget>
 
 		if(!empty)
 		{
-			String name = item.getName();
-			if(item.getName().equals("NONE"))
-			{
-				name = "Keine Kategorie";
-			}
-			
 			HBox hbox = new HBox();
 
-			Label labelCircle = new Label(name.substring(0, 1).toUpperCase());
+			Label labelCircle = new Label(item.getName().substring(0, 1).toUpperCase());
 			labelCircle.setPrefWidth(HEIGHT);
 			labelCircle.setPrefHeight(HEIGHT);
 			labelCircle.setAlignment(Pos.CENTER);
@@ -47,7 +41,7 @@ public class CategoryBudgetCell extends ListCell<CategoryBudget>
 			labelCircle.setStyle("-fx-background-color: " + ConvertTo.toRGBHex(item.getColor()) + "; -fx-background-radius: 50%; -fx-text-fill: " + textColor + "; -fx-font-weight: bold; -fx-font-size: 20;");
 			hbox.getChildren().add(labelCircle);
 
-			Label labelName = new Label(name);
+			Label labelName = new Label(item.getName());
 			labelName.setPrefHeight(HEIGHT);
 			labelName.setStyle("-fx-font-weight: bold; -fx-font-size: 16; -fx-text-fill: #212121");
 			labelName.setAlignment(Pos.CENTER);
diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryCell.java
index 3d4b91854..057d8ce71 100644
--- a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryCell.java
+++ b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryCell.java
@@ -4,6 +4,7 @@ import java.util.Optional;
 
 import de.deadlocker8.budgetmaster.logic.Category;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import de.deadlocker8.budgetmaster.ui.controller.CategoryController;
 import fontAwesome.FontIconType;
 import javafx.geometry.Insets;
@@ -19,6 +20,7 @@ import javafx.scene.layout.Region;
 import javafx.scene.paint.Color;
 import javafx.stage.Stage;
 import tools.ConvertTo;
+import tools.Localization;
 
 public class CategoryCell extends ListCell<Category>
 {		
@@ -79,9 +81,9 @@ public class CategoryCell extends ListCell<Category>
 			buttonDelete.setStyle("-fx-background-color: transparent");
 			buttonDelete.setOnAction((event)->{
 				 Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
-                 alert.setTitle("Kategorie löschen");
+                 alert.setTitle(Localization.getString(Strings.INFO_TITLE_CATEGORY_DELETE));
                  alert.setHeaderText("");
-                 alert.setContentText("Möchtest du diese Kategorie wirklich unwiderruflich löschen?");
+                 alert.setContentText(Localization.getString(Strings.INFO_TEXT_CATEGORY_DELETE));
                  Stage dialogStage = (Stage) alert.getDialogPane().getScene().getWindow();
                  dialogStage.getIcons().add(categoryController.getController().getIcon());
                  dialogStage.centerOnScreen();
@@ -92,7 +94,7 @@ public class CategoryCell extends ListCell<Category>
                 	 categoryController.deleteCategory(item.getID());
                  }				
 			});
-			//don't allow category "Übertrag" to be deleted
+			//don't allow category "rest" to be deleted
 			if(item.getID() != 2)
 			{
 				hbox.getChildren().add(buttonDelete);
diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java
index e10dfdf31..71e3b3e09 100644
--- a/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java
+++ b/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java
@@ -11,6 +11,7 @@ import de.deadlocker8.budgetmaster.logic.NormalPayment;
 import de.deadlocker8.budgetmaster.logic.Payment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPaymentEntry;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import de.deadlocker8.budgetmaster.ui.controller.PaymentController;
 import fontAwesome.FontIconType;
 import javafx.geometry.Insets;
@@ -29,6 +30,7 @@ import javafx.scene.paint.Color;
 import javafx.stage.Stage;
 import logger.Logger;
 import tools.ConvertTo;
+import tools.Localization;
 
 public class PaymentCell extends ListCell<Payment>
 {
@@ -138,20 +140,20 @@ public class PaymentCell extends ListCell<Payment>
 			buttonDelete.setStyle("-fx-background-color: transparent");			
 			buttonDelete.setOnAction((event) -> {
 				Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
-				alert.setTitle("Zahlung löschen");
+				alert.setTitle(Localization.getString(Strings.INFO_TITLE_PAYMENT_DELETE));
 				alert.setHeaderText("");
-				alert.setContentText("Diese Zahlung wirklich unwiderruflich löschen?");
+				alert.setContentText(Localization.getString(Strings.INFO_TEXT_PAYMENT_DELETE));
 				Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow();
 				dialogStage.getIcons().add(paymentController.getController().getIcon());
 				dialogStage.centerOnScreen();
 
 				if(item instanceof RepeatingPaymentEntry)
 				{
-					alert.setContentText("Es handelt sich um eine wiederkehrende Zahlung. Welche Zahlungen sollen gelöscht werden?");
+					alert.setContentText(Localization.getString(Strings.INFO_TEXT_PAYMENT_REPEATING_DELETE));
 					
-					ButtonType buttonTypeOne = new ButtonType("Alle");
-					ButtonType buttonTypeTwo = new ButtonType("Alle zukünftigen");				
-					ButtonType buttonTypeCancel = new ButtonType("Abbrechen", ButtonData.CANCEL_CLOSE);
+					ButtonType buttonTypeOne = new ButtonType(Localization.getString(Strings.INFO_TEXT_PAYMENT_REPEATING_DELETE_ALL));
+					ButtonType buttonTypeTwo = new ButtonType(Localization.getString(Strings.INFO_TEXT_PAYMENT_REPEATING_DELETE_FUTURES));			
+					ButtonType buttonTypeCancel = new ButtonType(Localization.getString(Strings.INFO_TEXT_PAYMENT_REPEATING_DELETE_CANCEL), ButtonData.CANCEL_CLOSE);
 
 					alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeTwo, buttonTypeCancel);
 
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java b/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
index 711c4a64a..4dd5b17e7 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
@@ -2,7 +2,6 @@ package de.deadlocker8.budgetmaster.ui.controller;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.ResourceBundle;
 
 import org.joda.time.DateTime;
 
@@ -16,6 +15,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 fontAwesome.FontIconType;
 import javafx.animation.FadeTransition;
 import javafx.animation.SequentialTransition;
@@ -36,6 +36,7 @@ import javafx.util.Duration;
 import logger.Logger;
 import tools.AlertGenerator;
 import tools.ConvertTo;
+import tools.Localization;
 import tools.Worker;
 
 public class Controller
@@ -63,8 +64,7 @@ public class Controller
 	private SettingsController settingsController;
 
 	private Stage stage;
-	private Image icon = new Image("de/deadlocker8/budgetmaster/resources/icon.png");
-	private ResourceBundle bundle;
+	private Image icon = new Image("de/deadlocker8/budgetmaster/resources/icon.png");	
 	private Settings settings;
 	private DateTime currentDate;
 	private ArrayList<CategoryBudget> categoryBudgets;
@@ -74,10 +74,9 @@ public class Controller
 
 	private boolean alertIsShowing = false;
 
-	public void init(Stage stage, ResourceBundle bundle, Settings settings)
+	public void init(Stage stage, Settings settings)
 	{
 		this.stage = stage;
-		this.bundle = bundle;
 		this.settings = settings;
 		
 		stage.setOnCloseRequest((event)->{
@@ -181,11 +180,6 @@ public class Controller
 		return icon;
 	}
 
-	public ResourceBundle getBundle()
-	{
-		return bundle;
-	}
-
 	public Settings getSettings()
 	{
 		return settings;
@@ -329,7 +323,12 @@ public class Controller
 
 	public void about()
 	{
-		AlertGenerator.showAboutAlert(bundle.getString("app.name"), bundle.getString("version.name"), bundle.getString("version.code"), bundle.getString("version.date"), bundle.getString("author"), icon, stage, null, false);
+		AlertGenerator.showAboutAlert(Localization.getString(Strings.APP_NAME),
+									Localization.getString(Strings.VERSION_NAME),
+									Localization.getString(Strings.VERSION_CODE),
+									Localization.getString(Strings.VERSION_DATE),
+									Localization.getString(Strings.AUTHOR),
+									icon, stage, null, false);
 	}	
 	
 	public void refresh(FilterSettings newFilterSettings)
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java b/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java
index fadccd9c0..0d766cb34 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java
@@ -1,12 +1,12 @@
 package de.deadlocker8.budgetmaster.ui.controller;
 
 import java.io.IOException;
-import java.util.ResourceBundle;
 
 import de.deadlocker8.budgetmaster.logic.Settings;
 import de.deadlocker8.budgetmaster.logic.utils.Colors;
 import de.deadlocker8.budgetmaster.logic.utils.FileHelper;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import fontAwesome.FontIconType;
 import javafx.application.Platform;
 import javafx.fxml.FXML;
@@ -27,29 +27,28 @@ import logger.Logger;
 import tools.AlertGenerator;
 import tools.ConvertTo;
 import tools.HashUtils;
+import tools.Localization;
 
 public class SplashScreenController
 {
 	@FXML private ImageView imageViewLogo;
 	@FXML private Label labelVersion;
 	@FXML private PasswordField textFieldPassword;
-	@FXML private Button buttonLogin;
-	
-	private ResourceBundle bundle;
+	@FXML private Button buttonLogin;	
+
 	private Stage stage;
 	private Image icon;
 	private Settings settings;
 	private boolean isFirstStart;
 
-	public void init(Stage stage, Image icon, ResourceBundle bundle)
+	public void init(Stage stage, Image icon)
 	{
 		this.stage = stage;
 		this.icon = icon;
-		this.bundle = bundle;
 		
 		imageViewLogo.setImage(icon);
 		
-		labelVersion.setText("v" + bundle.getString("version.name"));
+		labelVersion.setText("v" + Localization.getString(Strings.VERSION_NAME));
 	
 		buttonLogin.setGraphic(Helpers.getFontIcon(FontIconType.SIGN_IN, 18, Color.WHITE));
 		buttonLogin.setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(Colors.BACKGROUND_BUTTON_BLUE) + "; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
@@ -136,7 +135,7 @@ public class SplashScreenController
 			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/GUI.fxml"));
 			Parent root = (Parent)fxmlLoader.load();
 			Stage newStage = new Stage();
-			newStage.setTitle(bundle.getString("app.name"));
+			newStage.setTitle(Localization.getString(Strings.APP_NAME));
 			newStage.setScene(new Scene(root, 650, 650));
 			newStage.getIcons().add(icon);			
 			newStage.setResizable(true);
@@ -144,7 +143,7 @@ public class SplashScreenController
 			newStage.setMinWidth(610);
 			newStage.getScene().getStylesheets().add("/de/deadlocker8/budgetmaster/ui/style.css");
 			Controller newController = fxmlLoader.getController();
-			newController.init(newStage, bundle, settings);
+			newController.init(newStage, settings);
 			newStage.show();
 		}
 		catch(IOException e)
-- 
GitLab