diff --git a/src/de/deadlocker8/budgetmaster/logic/ExceptionHandler.java b/src/de/deadlocker8/budgetmaster/logic/ExceptionHandler.java index 65c70667af0213cb7ce5e1bc6030893935939ae5..40aa9bbc3f3b3087a356a9f710e16c893d4fd6a3 100644 --- a/src/de/deadlocker8/budgetmaster/logic/ExceptionHandler.java +++ b/src/de/deadlocker8/budgetmaster/logic/ExceptionHandler.java @@ -7,8 +7,13 @@ public class ExceptionHandler if(e instanceof ServerConnectionException) { return handleServerConnectionException(e); - } + } + if(e.getMessage() == null) + { + return "Unbekannter Fehler (" + e.getClass() + ")"; + } + if(e.getMessage().contains("Connection refused")) { return "Server nicht erreichbar."; diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChartGenerator.java index 70c380cdd257b9892694009c2f1d265eb76213a6..77efcd715afaed985db53c936ea3e37041b3d6fc 100644 --- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChartGenerator.java +++ b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/CategoriesChartGenerator.java @@ -25,10 +25,17 @@ public class CategoriesChartGenerator public CategoriesChartGenerator(String title, ArrayList<CategoryInOutSum> categoryInOutSums, boolean useBudgetIN, String currency) { this.title = title; - this.categoryInOutSums = categoryInOutSums; + if(categoryInOutSums == null) + { + this.categoryInOutSums = new ArrayList<>(); + } + else + { + this.categoryInOutSums = categoryInOutSums; + } this.useBudgetIN = useBudgetIN; this.currency = currency; - this.total = getTotal(categoryInOutSums, useBudgetIN); + this.total = getTotal(this.categoryInOutSums, useBudgetIN); } public VBox generate() @@ -64,7 +71,7 @@ public class CategoriesChartGenerator currentPart.prefWidthProperty().bind(chart.widthProperty().multiply(percentage)); Tooltip tooltip = new Tooltip(); - tooltip.setText(Helpers.NUMBER_FORMAT.format(percentage*100) + " %\n" + Helpers.NUMBER_FORMAT.format(value).replace(".", ",") + currency);// + tooltip.setText(currentItem.getName() + "\n" + Helpers.NUMBER_FORMAT.format(percentage*100) + " %\n" + Helpers.NUMBER_FORMAT.format(value).replace(".", ",") + currency);// currentPart.setTooltip(tooltip); } @@ -75,6 +82,18 @@ public class CategoriesChartGenerator public GridPane generateLegend() { + GridPane legend = new GridPane(); + legend.setPadding(new Insets(10)); + legend.setHgap(20); + legend.setVgap(10); + legend.setAlignment(Pos.CENTER); + legend.setStyle("-fx-background-color: #EEEEEE; -fx-border-color: #212121; -fx-border-width: 1; -fx-border-radius: 5;"); + + if(categoryInOutSums.size() == 0) + { + return legend; + } + ArrayList<HBox> legendItems = new ArrayList<>(); for(CategoryInOutSum currentItem : categoryInOutSums) { @@ -87,13 +106,7 @@ public class CategoriesChartGenerator } int legendWidth = (int)Math.ceil(Math.sqrt(legendItems.size())); - GridPane legend = new GridPane(); - legend.setPadding(new Insets(10)); - legend.setHgap(20); - legend.setVgap(10); - legend.setAlignment(Pos.CENTER); - legend.setStyle("-fx-background-color: #EEEEEE; -fx-border-color: #212121; -fx-border-width: 1; -fx-border-radius: 5;"); - + for(int i = 0; i < legendItems.size(); i++) { int columnIndex = i % legendWidth; @@ -123,7 +136,7 @@ public class CategoriesChartGenerator } private double getTotal(ArrayList<CategoryInOutSum> categoryInOutSums, boolean useBudgetIN) - { + { double total = 0; for(CategoryInOutSum currentItem : categoryInOutSums) { diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java index 3b5140da494b0ad1fae519f54e6452b4a70ae759..35ae4150cb591b96c5bab30029a588107b5f55d3 100644 --- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java +++ b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/MonthChartGenerator.java @@ -26,7 +26,14 @@ public class MonthChartGenerator public MonthChartGenerator(ArrayList<MonthInOutSum> monthInOutSums, String currency) { - this.monthInOutSums = monthInOutSums; + if(monthInOutSums == null) + { + this.monthInOutSums = new ArrayList<>(); + } + else + { + this.monthInOutSums = monthInOutSums; + } this.currency = currency; } @@ -37,7 +44,7 @@ public class MonthChartGenerator generatedChart.setSpacing(25); double total = getMaximum(monthInOutSums); - + for(MonthInOutSum currentMonthSum : monthInOutSums) { VBox chartPart = new VBox(); @@ -115,6 +122,18 @@ public class MonthChartGenerator public GridPane generateLegend() { + GridPane legend = new GridPane(); + legend.setPadding(new Insets(10)); + legend.setHgap(20); + legend.setVgap(10); + legend.setAlignment(Pos.CENTER); + legend.setStyle("-fx-background-color: #EEEEEE; -fx-border-color: #212121; -fx-border-width: 1; -fx-border-radius: 5;"); + + if(monthInOutSums.size() == 0) + { + return legend; + } + ArrayList<HBox> legendItems = new ArrayList<>(); for(CategoryInOutSum currentItem : monthInOutSums.get(0).getSums()) { @@ -126,13 +145,7 @@ public class MonthChartGenerator legendItems.add(getLegendItem(label, currentItem.getColor())); } - int legendWidth = (int)Math.ceil(Math.sqrt(legendItems.size())); - GridPane legend = new GridPane(); - legend.setPadding(new Insets(10)); - legend.setHgap(20); - legend.setVgap(10); - legend.setAlignment(Pos.CENTER); - legend.setStyle("-fx-background-color: #EEEEEE; -fx-border-color: #212121; -fx-border-width: 1; -fx-border-radius: 5;"); + int legendWidth = (int)Math.ceil(Math.sqrt(legendItems.size())); for(int i = 0; i < legendItems.size(); i++) { @@ -180,7 +193,7 @@ public class MonthChartGenerator } private double getMaximum(ArrayList<MonthInOutSum> monthInOutSums) - { + { double maximum = 0; for(MonthInOutSum currentItem : monthInOutSums) { diff --git a/src/de/deadlocker8/budgetmaster/ui/CategoryController.java b/src/de/deadlocker8/budgetmaster/ui/CategoryController.java index 52e908a7fbafa75bb17f8e33b56ac056b2413b14..8a86686a8d5455a544882ddc0253e741c337d537 100644 --- a/src/de/deadlocker8/budgetmaster/ui/CategoryController.java +++ b/src/de/deadlocker8/budgetmaster/ui/CategoryController.java @@ -162,7 +162,7 @@ public class CategoryController implements Refreshable } catch(Exception e) { - e.printStackTrace(); + Logger.error(e); controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); } } diff --git a/src/de/deadlocker8/budgetmaster/ui/ChartController.java b/src/de/deadlocker8/budgetmaster/ui/ChartController.java index 8f441807532cee530bc2a21df8dae0dcf4670831..6f9e336ddcd7a7a27f4a9e367f14103874b7e9b8 100644 --- a/src/de/deadlocker8/budgetmaster/ui/ChartController.java +++ b/src/de/deadlocker8/budgetmaster/ui/ChartController.java @@ -7,6 +7,7 @@ import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormat; import de.deadlocker8.budgetmaster.logic.CategoryInOutSum; +import de.deadlocker8.budgetmaster.logic.ExceptionHandler; import de.deadlocker8.budgetmaster.logic.Helpers; import de.deadlocker8.budgetmaster.logic.MonthInOutSum; import de.deadlocker8.budgetmaster.logic.ServerConnection; @@ -146,8 +147,7 @@ public class ChartController implements Refreshable catch(Exception e) { Logger.error(e); - // TODO - // controller.showConnectionErrorAlert(e.getMessage()); + controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); } } @@ -206,8 +206,7 @@ public class ChartController implements Refreshable catch(Exception e) { Logger.error(e); - // TODO - // controller.showConnectionErrorAlert(e.getMessage()); + controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); } } diff --git a/src/de/deadlocker8/budgetmaster/ui/Controller.java b/src/de/deadlocker8/budgetmaster/ui/Controller.java index 1888e00c172aa44f43048e5eed571a1b914f8647..408d23943441fc9ab15b41c4f58e3cae847b9362 100644 --- a/src/de/deadlocker8/budgetmaster/ui/Controller.java +++ b/src/de/deadlocker8/budgetmaster/ui/Controller.java @@ -232,6 +232,7 @@ public class Controller { if(!alertIsShowing) { + alertIsShowing = true; Platform.runLater(() -> { toggleAllTabsExceptSettings(true); tabPane.getSelectionModel().select(tabSettings); @@ -242,11 +243,11 @@ public class Controller alert.setHeaderText(""); if(errorMessage == null) { - alert.setContentText("Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte überprüfe deine Einstellungen und ob der Server läuft."); + alert.setContentText("Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte überprüfe deine Einstellungen."); } else { - alert.setContentText("Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte überprüfe deine Einstellungen und ob der Server läuft.\n\n" + alert.setContentText("Beim Herstellen der Verbindung zum Server ist ein Fehler aufgetreten. Bitte überprüfe deine Einstellungen.\n\n" + "Fehlerdetails:\n" + errorMessage); }