diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ChartController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ChartController.java index f6149de7ca9c251099db96221f959ec1979f3b9a..438092c0968b2bfecaf8abb643c0d0ca39571fae 100644 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ChartController.java +++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ChartController.java @@ -21,7 +21,7 @@ import de.deadlocker8.budgetmaster.logic.utils.Helpers; import de.deadlocker8.budgetmaster.logic.utils.Strings; import de.deadlocker8.budgetmasterclient.ui.Refreshable; import de.deadlocker8.budgetmasterclient.ui.Styleable; -import de.deadlocker8.budgetmasterclient.utils.UIHelpers; +import de.deadlocker8.budgetmasterclient.utils.LoadingModal; import fontAwesome.FontIcon; import fontAwesome.FontIconType; import javafx.application.Platform; @@ -39,7 +39,6 @@ import javafx.scene.layout.AnchorPane; import javafx.scene.layout.Priority; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; -import javafx.stage.Stage; import logger.Logger; import tools.AlertGenerator; import tools.ConvertTo; @@ -249,7 +248,7 @@ public class ChartController implements Refreshable, Styleable @Override public void refresh() { - Stage modalStage = UIHelpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_CHARTS), controller.getStage(), controller.getIcon()); + LoadingModal.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")); @@ -270,10 +269,7 @@ public class ChartController implements Refreshable, Styleable chartMonthShow(); Platform.runLater(() -> { - if(modalStage != null) - { - modalStage.close(); - } + LoadingModal.closeModal(); }); }); } diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java index f27efd179b5bef763882fe3eece03f01e20a1509..10642b8d4253316d7e111b72dcf5cdddbe5c7d1d 100644 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java +++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java @@ -31,7 +31,7 @@ import de.deadlocker8.budgetmaster.logic.utils.Colors; import de.deadlocker8.budgetmaster.logic.utils.Strings; import de.deadlocker8.budgetmasterclient.ui.commandLine.CommandBundle; import de.deadlocker8.budgetmasterclient.ui.commandLine.CommandLine; -import de.deadlocker8.budgetmasterclient.utils.UIHelpers; +import de.deadlocker8.budgetmasterclient.utils.LoadingModal; import fontAwesome.FontIcon; import fontAwesome.FontIconType; import javafx.animation.FadeTransition; @@ -132,26 +132,36 @@ public class Controller extends BaseController stage.getScene().getStylesheets().add("/de/deadlocker8/budgetmaster/ui/style.css"); } + public void shutdown() + { + Logger.debug("Stopping local BudgetMasterServer..."); + try + { + ServerConnection connection = new ServerConnection(settings); + connection.shutdownServer(); + } + catch(Exception e) + { + Logger.error(e); + } + + Worker.shutdown(); + System.exit(0); + } + @Override public void init() { + Thread shutdownThread = new Thread(() -> { + shutdown(); + }); + getStage().setOnCloseRequest((event)->{ - Worker.shutdown(); + Runtime.getRuntime().removeShutdownHook(shutdownThread); + shutdown(); }); - Runtime.getRuntime().addShutdownHook(new Thread(() -> { - Logger.debug("Stopping local BudgetMasterServer..."); - try - { - ServerConnection connection = new ServerConnection(settings); - connection.shutdownServer(); - } - catch(Exception e) - { - Logger.error(e); - } - System.exit(0); - })); + Runtime.getRuntime().addShutdownHook(shutdownThread); if(settings.getServerType() == null) { @@ -614,32 +624,26 @@ public class Controller extends BaseController Optional<ButtonType> result = alert.showAndWait(); if (result.get() == buttonTypeOne) { - Stage modalStage = UIHelpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_UPDATE), getStage(), icon); + LoadingModal.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_UPDATE), getStage(), icon); Worker.runLater(() -> { try { updater.downloadLatestVersion(); Platform.runLater(() -> { - if(modalStage != null) - { - modalStage.close(); - } + LoadingModal.closeModal(); }); } catch(Exception ex) { Logger.error(ex); Platform.runLater(() -> { - if(modalStage != null) - { - modalStage.close(); - AlertGenerator.showAlert(AlertType.ERROR, - Localization.getString(Strings.TITLE_ERROR), - "", - Localization.getString(Strings.ERROR_UPDATER_DOWNLOAD_LATEST_VERSION, ex.getMessage()), - icon, getStage(), null, true); - } + LoadingModal.closeModal(); + AlertGenerator.showAlert(AlertType.ERROR, + Localization.getString(Strings.TITLE_ERROR), + "", + Localization.getString(Strings.ERROR_UPDATER_DOWNLOAD_LATEST_VERSION, ex.getMessage()), + icon, getStage(), null, true); }); } }); @@ -784,7 +788,7 @@ public class Controller extends BaseController public void refresh(FilterSettings newFilterSettings) { - Stage modalStage = UIHelpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DATA), getStage(), icon); + LoadingModal.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DATA), getStage(), icon); Worker.runLater(() -> { try @@ -804,10 +808,7 @@ public class Controller extends BaseController Localization.getString(Strings.WARNING_SERVER_VERSION, serverVersion.getVersionName(), Localization.getString(Strings.VERSION_NAME)), icon, getStage(), null, false); - if(modalStage != null) - { - modalStage.close(); - }; + LoadingModal.closeModal(); categoryHandler = new CategoryHandler(null); toggleAllTabsExceptSettings(true); tabPane.getSelectionModel().select(tabSettings); @@ -819,10 +820,7 @@ public class Controller extends BaseController { Logger.error(e1); Platform.runLater(()->{ - if(modalStage != null) - { - modalStage.close(); - } + LoadingModal.closeModal(); }); if(e1.getMessage().contains("404")) @@ -865,10 +863,7 @@ public class Controller extends BaseController paymentHandler.filter(newFilterSettings, new TagHandler(settings)); Platform.runLater(() -> { - if(modalStage != null) - { - modalStage.close(); - } + LoadingModal.closeModal(); toggleAllTabsExceptSettings(false); refreshAllTabs(); }); @@ -877,11 +872,7 @@ public class Controller extends BaseController { Logger.error(e); Platform.runLater(() -> { - if(modalStage != null) - { - modalStage.close(); - } - Logger.error(e); + LoadingModal.closeModal(); categoryHandler = new CategoryHandler(null); showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); refreshAllTabs(); diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/LocalServerSettingsController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/LocalServerSettingsController.java index 0429ffb17eb32eb8e2ca2fc32ad34843164c2e2f..7494734c76e5c329780be2fa74e1767e79415c5e 100644 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/LocalServerSettingsController.java +++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/LocalServerSettingsController.java @@ -16,6 +16,8 @@ import de.deadlocker8.budgetmaster.logic.utils.LanguageType; import de.deadlocker8.budgetmaster.logic.utils.Strings; import de.deadlocker8.budgetmasterclient.ui.RestartHandler; import de.deadlocker8.budgetmasterclient.ui.cells.LanguageCell; +import de.deadlocker8.budgetmasterclient.utils.LoadingModal; +import javafx.application.Platform; import javafx.fxml.FXML; import javafx.scene.control.Alert.AlertType; import javafx.scene.control.Button; @@ -34,6 +36,7 @@ import tools.AlertGenerator; import tools.ConvertTo; import tools.HashUtils; import tools.Localization; +import tools.Worker; public class LocalServerSettingsController extends SettingsController { @@ -88,8 +91,6 @@ public class LocalServerSettingsController extends SettingsController previousLanguage = LanguageType.ENGLISH; checkboxEnableAutoUpdate.setSelected(true); - prefill(); - applyStyle(); textFieldCurrency.setPromptText(Localization.getString(Strings.CURRENCY_PLACEHOLDER)); @@ -101,15 +102,13 @@ public class LocalServerSettingsController extends SettingsController hboxSettings.prefWidthProperty().bind(scrollPane.widthProperty().subtract(25)); refreshLabelsUpdate(); - - save(); + + prefill(); } @Override public void prefill() { - checkServerStatus(); - textFieldCurrency.setText(controller.getSettings().getCurrency()); if(controller.getSettings().isRestActivated()) @@ -129,6 +128,8 @@ public class LocalServerSettingsController extends SettingsController } checkboxEnableAutoUpdate.setSelected(controller.getSettings().isAutoUpdateCheckEnabled()); + + checkServerStatus(); } private void checkServerStatus() @@ -143,40 +144,57 @@ public class LocalServerSettingsController extends SettingsController RestartHandler restartHandler = new RestartHandler(controller); restartHandler.handleRestart(controller.getSettings().getLanguage()); refreshLabelsUpdate(); + save(); break; case INACTIVE: + LoadingModal.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_LOCAL_SERVER), controller.getStage(), controller.getIcon()); labelLocalServerStatus.setText(Localization.getString(Strings.LOCAL_SERVER_STATUS_NOT_STARTED)); buttonLocalServerAction.setVisible(false); - try - { - Logger.debug("Starting local Server..."); - serverHandler.createServerSettingsIfNotExists(); - serverHandler.startServer(); + Worker.runLater(() -> { try { - //DEBUG magic number - Thread.sleep(2000); + Logger.debug("Starting local Server..."); + serverHandler.createServerSettingsIfNotExists(); + serverHandler.startServer(); + try + { + //DEBUG magic number + //TODO retry reconnecting + System.out.println("Start sleep"); + Thread.sleep(2000); + System.out.println("End sleep"); + } + catch(InterruptedException e) + { + } + + if(!serverHandler.getServerStatus().equals(LocalServerStatus.ACTIVE)) + { + throw new LocalServerException(""); + } } - catch(InterruptedException e) + catch(IOException e) { + Logger.debug("Error while starting local server"); + Logger.error(e); + Platform.runLater(()->{ + LoadingModal.closeModal(); + AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", Localization.getString(Strings.ERROR_LOCAL_SERVER_START, e.getMessage()), controller.getIcon(), controller.getStage(), null, false); + }); } - - if(!serverHandler.getServerStatus().equals(LocalServerStatus.ACTIVE)) + catch(LocalServerException ex) { - throw new LocalServerException(""); + Logger.debug("Error while starting local server"); + Platform.runLater(()->{ + LoadingModal.closeModal(); + AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", Localization.getString(Strings.ERROR_LOCAL_SERVER_START, ""), controller.getIcon(), controller.getStage(), null, false); + }); } - } - catch(IOException e) - { - Logger.debug("Error while starting local server"); - Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", Localization.getString(Strings.ERROR_LOCAL_SERVER_START, e.getMessage()), controller.getIcon(), controller.getStage(), null, false); - } - catch(LocalServerException ex) - { - Logger.debug("Error while starting local server"); - AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", Localization.getString(Strings.ERROR_LOCAL_SERVER_START, ""), controller.getIcon(), controller.getStage(), null, false); - } + Platform.runLater(()->{ + checkServerStatus(); + LoadingModal.closeModal(); + }); + }); break; case MISSING: labelLocalServerStatus.setText(Localization.getString(Strings.LOCAL_SERVER_STATUS_NOT_PRESENT)); @@ -185,19 +203,29 @@ public class LocalServerSettingsController extends SettingsController buttonLocalServerAction.setDisable(false); buttonLocalServerAction.setOnAction((event) -> { - try - { - buttonLocalServerAction.setDisable(true); - serverHandler.downloadServer(Localization.getString(Strings.VERSION_NAME)); - serverHandler.createServerSettingsIfNotExists(); - checkServerStatus(); - } - catch(Exception e) - { - Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", Localization.getString(Strings.ERROR_LOCAL_SERVER_DOWNLOAD, e.getMessage()), controller.getIcon(), controller.getStage(), null, false); - buttonLocalServerAction.setDisable(false); - } + buttonLocalServerAction.setDisable(true); + LoadingModal.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_LOCAL_SERVER), controller.getStage(), controller.getIcon()); + + Worker.runLater(() -> { + try + { + serverHandler.downloadServer(Localization.getString(Strings.VERSION_NAME)); + serverHandler.createServerSettingsIfNotExists(); + Platform.runLater(()->{ + checkServerStatus(); + LoadingModal.closeModal(); + }); + } + catch(Exception e) + { + Logger.error(e); + Platform.runLater(()->{ + LoadingModal.closeModal(); + AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", Localization.getString(Strings.ERROR_LOCAL_SERVER_DOWNLOAD, e.getMessage()), controller.getIcon(), controller.getStage(), null, false); + buttonLocalServerAction.setDisable(false); + }); + } + }); }); break; } diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ReportController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ReportController.java index 60e77dd17d55ea750cb1f38850768dd6432b804e..2442ef3037439f8d39068adacf09da61e5cb8574 100644 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ReportController.java +++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/ReportController.java @@ -34,7 +34,7 @@ import de.deadlocker8.budgetmasterclient.ui.Refreshable; import de.deadlocker8.budgetmasterclient.ui.Styleable; import de.deadlocker8.budgetmasterclient.ui.cells.report.table.ReportTableRatingCell; import de.deadlocker8.budgetmasterclient.ui.cells.report.table.ReportTableRepeatingCell; -import de.deadlocker8.budgetmasterclient.utils.UIHelpers; +import de.deadlocker8.budgetmasterclient.utils.LoadingModal; import fontAwesome.FontIcon; import fontAwesome.FontIconType; import javafx.application.Platform; @@ -653,7 +653,7 @@ public class ReportController implements Refreshable, Styleable controller.getCurrentDate(), budget); - Stage modalStage = UIHelpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_REPORT), controller.getStage(), controller.getIcon()); + LoadingModal.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_REPORT), controller.getStage(), controller.getIcon()); Worker.runLater(() -> { try @@ -661,10 +661,7 @@ public class ReportController implements Refreshable, Styleable reportGenerator.generate(); Platform.runLater(() -> { - if(modalStage != null) - { - modalStage.close(); - } + LoadingModal.closeModal(); controller.showNotification(Localization.getString(Strings.NOTIFICATION_REPORT_SAVE)); @@ -738,10 +735,7 @@ public class ReportController implements Refreshable, Styleable { Logger.error(e); Platform.runLater(() -> { - if(modalStage != null) - { - modalStage.close(); - } + LoadingModal.closeModal(); AlertGenerator.showAlert(AlertType.ERROR, Localization.getString(Strings.TITLE_ERROR), "", @@ -764,7 +758,7 @@ public class ReportController implements Refreshable, Styleable @Override public void refresh() { - Stage modalStage = UIHelpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_REPORT_TAB), controller.getStage(), controller.getIcon()); + LoadingModal.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_REPORT_TAB), controller.getStage(), controller.getIcon()); if(controller.getFilterSettings().equals(new FilterSettings())) { @@ -788,11 +782,7 @@ public class ReportController implements Refreshable, Styleable refreshTableView(); Platform.runLater(() -> { - if(modalStage != null) - { - modalStage.close(); - } - + LoadingModal.closeModal(); applyReportPreferences(); tableView.refresh(); }); diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/SearchController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/SearchController.java index dee576ff899eaa083561734589a8627ed11f23c4..358adb7ca1c3c8d150ee4fc106a1cd0784fa7e59 100644 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/SearchController.java +++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/SearchController.java @@ -12,7 +12,7 @@ import de.deadlocker8.budgetmaster.logic.utils.Colors; import de.deadlocker8.budgetmaster.logic.utils.Strings; import de.deadlocker8.budgetmasterclient.ui.Styleable; import de.deadlocker8.budgetmasterclient.ui.cells.SearchCell; -import de.deadlocker8.budgetmasterclient.utils.UIHelpers; +import de.deadlocker8.budgetmasterclient.utils.LoadingModal; import fontAwesome.FontIcon; import fontAwesome.FontIconType; import javafx.application.Platform; @@ -262,7 +262,7 @@ public class SearchController extends BaseController implements Styleable searchPreferences.setMinAmount((int)rangeSlider.getLowValue()); searchPreferences.setMaxAmount((int)rangeSlider.getHighValue()); - Stage modalStage = UIHelpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_SEARCH), getStage(), controller.getIcon()); + LoadingModal.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_SEARCH), getStage(), controller.getIcon()); Worker.runLater(() -> { try @@ -284,20 +284,14 @@ public class SearchController extends BaseController implements Styleable listView.getItems().setAll(payments); } - if(modalStage != null) - { - modalStage.close(); - } + LoadingModal.closeModal(); }); } catch(Exception e) { Logger.error(e); Platform.runLater(() -> { - if(modalStage != null) - { - modalStage.close(); - } + LoadingModal.closeModal(); controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); }); } diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseDeleter.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseDeleter.java index b750a8bf09a5f29f61907fe00da10f0fbee5c48e..8d17b1817bc8e4913aeebfe70d27294c0ba00c65 100644 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseDeleter.java +++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseDeleter.java @@ -44,7 +44,7 @@ public class DatabaseDeleter { if(result.get().equals(verificationCode)) { - Stage modalStage = UIHelpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DATABASE_DELETE), controller.getStage(), controller.getIcon()); + LoadingModal.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DATABASE_DELETE), controller.getStage(), controller.getIcon()); Worker.runLater(() -> { try @@ -52,18 +52,15 @@ public class DatabaseDeleter ServerConnection connection = new ServerConnection(controller.getSettings()); connection.deleteDatabase(); Platform.runLater(() -> { - if(modalStage != null) + LoadingModal.closeModal(); + if(importPending) { - modalStage.close(); - if(importPending) - { - DatabaseImporter importer = new DatabaseImporter(controller); - importer.importDatabase(); - } - else - { - controller.refresh(controller.getFilterSettings()); - } + DatabaseImporter importer = new DatabaseImporter(controller); + importer.importDatabase(); + } + else + { + controller.refresh(controller.getFilterSettings()); } }); } @@ -71,10 +68,7 @@ public class DatabaseDeleter { Logger.error(e); Platform.runLater(() -> { - if(modalStage != null) - { - modalStage.close(); - } + LoadingModal.closeModal(); controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); }); } diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseExporter.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseExporter.java index 43ebbd852b68b0bf033de21d0633db13a707a02e..59904cd95c2094df5f75cf6cedf0f6198b595664 100644 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseExporter.java +++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseExporter.java @@ -7,11 +7,9 @@ import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; import de.deadlocker8.budgetmaster.logic.utils.FileHelper; import de.deadlocker8.budgetmaster.logic.utils.Strings; import de.deadlocker8.budgetmasterclient.ui.controller.Controller; -import de.deadlocker8.budgetmasterclient.utils.UIHelpers; import javafx.application.Platform; import javafx.scene.control.Alert.AlertType; import javafx.stage.FileChooser; -import javafx.stage.Stage; import logger.Logger; import tools.AlertGenerator; import tools.Localization; @@ -35,7 +33,7 @@ public class DatabaseExporter File file = fileChooser.showSaveDialog(controller.getStage()); if(file != null) { - Stage modalStage = UIHelpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DATABASE_EXPORT), controller.getStage(), controller.getIcon()); + LoadingModal.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DATABASE_EXPORT), controller.getStage(), controller.getIcon()); Worker.runLater(() -> { try @@ -45,10 +43,7 @@ public class DatabaseExporter FileHelper.saveDatabaseJSON(file, databaseJSON); Platform.runLater(() -> { - if(modalStage != null) - { - modalStage.close(); - } + LoadingModal.closeModal(); AlertGenerator.showAlert(AlertType.INFORMATION, Localization.getString(Strings.INFO_TITLE_DATABASE_EXPORT), "", @@ -63,10 +58,7 @@ public class DatabaseExporter { Logger.error(e); Platform.runLater(() -> { - if(modalStage != null) - { - modalStage.close(); - } + LoadingModal.closeModal(); controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); }); } diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseImporter.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseImporter.java index 1213adb50e9fba4bc99c8afc311ac54282192763..bfbca38196c60c51b653f13268b42b83c7c60442 100644 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseImporter.java +++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/DatabaseImporter.java @@ -10,14 +10,13 @@ import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; import de.deadlocker8.budgetmaster.logic.utils.FileHelper; import de.deadlocker8.budgetmaster.logic.utils.Strings; import de.deadlocker8.budgetmasterclient.ui.controller.Controller; -import de.deadlocker8.budgetmasterclient.utils.UIHelpers; import javafx.application.Platform; import javafx.scene.control.Alert; +import javafx.scene.control.Alert.AlertType; import javafx.scene.control.Button; +import javafx.scene.control.ButtonBar.ButtonData; import javafx.scene.control.ButtonType; import javafx.scene.control.DialogPane; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.control.ButtonBar.ButtonData; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.stage.FileChooser; @@ -115,7 +114,7 @@ public class DatabaseImporter return; } - Stage modalStage = UIHelpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DATABASE_IMPORT), controller.getStage(), controller.getIcon()); + LoadingModal.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_DATABASE_IMPORT), controller.getStage(), controller.getIcon()); Worker.runLater(() -> { try @@ -124,10 +123,7 @@ public class DatabaseImporter connection.importDatabase(database); Platform.runLater(() -> { - if(modalStage != null) - { - modalStage.close(); - } + LoadingModal.closeModal(); AlertGenerator.showAlert(AlertType.INFORMATION, Localization.getString(Strings.INFO_TITLE_DATABASE_IMPORT), @@ -145,10 +141,7 @@ public class DatabaseImporter { Logger.error(e); Platform.runLater(() -> { - if(modalStage != null) - { - modalStage.close(); - } + LoadingModal.closeModal(); controller.showConnectionErrorAlert(ExceptionHandler.getMessageForException(e)); }); } diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/UIHelpers.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/LoadingModal.java similarity index 65% rename from BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/UIHelpers.java rename to BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/LoadingModal.java index 88035fcb1da69d55f23adf6570343466f034dc26..42a6edf03c2d29c0c37a0c1278cd5afe87d2b4dc 100644 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/UIHelpers.java +++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/utils/LoadingModal.java @@ -13,9 +13,32 @@ import javafx.stage.Stage; import logger.Logger; import tools.Localization; -public class UIHelpers +public class LoadingModal { - public static Stage showModal(String title, String message, Stage owner, Image icon) + private static Stage modalStage; + + public static void showModal(String title, String message, Stage owner, Image icon) + { + closeModal(); + modalStage = createModal(title, message, owner, icon); + } + + public static void closeModal() + { + System.out.println(Thread.currentThread().getStackTrace()[2]); + if(modalStage != null) + { + modalStage.close(); + modalStage = null; + } + } + + public static boolean isShowing() + { + return modalStage != null && modalStage.isShowing(); + } + + private static Stage createModal(String title, String message, Stage owner, Image icon) { try { @@ -41,4 +64,4 @@ public class UIHelpers return null; } } -} \ No newline at end of file +} diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties index 60a51f2f1c95696a0896f898be9b115cadb95d5f..cb57ced7af0a4f0df38b86a4a5abd890ea607b47 100644 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties +++ b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties @@ -47,6 +47,8 @@ load.database.import=Die Datenbank wird importiert, bitte warten... load.database.delete=Die Datenbank wird gel�scht, bitte warten... load.update=Update wird heruntergeladen, bitte warten... load.search=Buchungen werden gesucht, bitte warten... +load.local.server=Der lokale Server wird gestartet, bitte warten... +load.download.local.server=Der lokale Server wird heruntergeladen, bitte warten... # MISC category.none=Keine Kategorie diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties index 2601c54fa92fc323089391423d7eccd2fa1ca988..a17ec01f1722c18448710d456679d94750b6543e 100644 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties +++ b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties @@ -47,6 +47,8 @@ load.database.import=Please wait while the database is being imported... load.database.delete=Please wait while the database is being deleted... load.update=Please wait while the update is being downloaded... load.search=Please wait while payments are being searched... +load.local.server=Please wait while the local server is being started... +load.download.local.server=Please wait while the local server is being downloaded... # MISC category.none=No Category diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java index 4f8cd1db24fa7baa7168dcbe0f388a5ebc3086da..950b24b67191e3bd89da234864066f9eeed34a17 100644 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java +++ b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java @@ -49,6 +49,8 @@ public class Strings public static final String LOAD_DATABASE_DELETE = "load.database.delete"; public static final String LOAD_UPDATE = "load.update"; public static final String LOAD_SEARCH = "load.search"; + public static final String LOAD_LOCAL_SERVER = "load.local.server"; + public static final String LOAD_DOWNLOAD_LOCAL_SERVER = "load.download.local.server"; //MISC public static final String CATEGORY_NONE = "category.none";