diff --git a/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java b/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java index 61d2132d333c84ec7bb48debf8610464975ba826..4e5682972a38d7840fbe5417bc2175eb6501a820 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 84931641e70e53791440c025e49aa2a8bcc95941..f838aa925915b299e58481e934c5a28d9811edfe 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 2e420091c9a2451d1bbe791984b50f4bf7ca472f..af8b8c38a6860864863c9d99d19ca83616ccbf01 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 11296797f1be9efd9bf0b607b8f7cf746fe5e4c9..fcf752dd7e294c7e57e52c486d14c1df69d4794b 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 3d4b91854244fe5ded12664c68f2ae55e72797a0..057d8ce7158ea699afb16b201506bbd49be1d0c5 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 e10dfdf31e46914685255a60f5deb6d5c4088903..71e3b3e09828bc12d62c0ae0d5143827f4f71354 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 711c4a64ae321b41c4537cd2fc45af9845227b99..4dd5b17e70694d3368be8b844a6299380a0ea291 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 fadccd9c0f5a841ba59955282c936463a0c3d9a7..0d766cb34278c27290fddfcb920b6b812c0f0404 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)