From 3b1459c5adb796374bc11e2fa18a17fa39157e02 Mon Sep 17 00:00:00 2001 From: Gerard Szczepanski Date: Sun, 5 Feb 2017 16:54:37 +0100 Subject: [PATCH] Fix refresh settings tabs after settings restore --- runit-common/src/main/resources/log4j.xml | 2 +- ...ava => AbstractSettingsTabController.java} | 6 +++-- .../SettingsDirectoriesPaneTabController.java | 7 +++++- .../SettingsGeneralPaneTabController.java | 8 ++++--- .../SettingsWebPaneTabController.java | 7 +++++- .../controller/mediator/TabsMediator.java | 23 +++++++++++++++++++ .../tab/factory/SettingsDirTabFactory.java | 8 +++++-- .../factory/SettingsGeneralTabFactory.java | 8 +++++-- .../tab/factory/SettingsWebTabFactory.java | 8 +++++-- 9 files changed, 63 insertions(+), 14 deletions(-) rename runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/{AbstractSettingsController.java => AbstractSettingsTabController.java} (78%) create mode 100644 runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/mediator/TabsMediator.java diff --git a/runit-common/src/main/resources/log4j.xml b/runit-common/src/main/resources/log4j.xml index 90b3e3f..2ae6c05 100644 --- a/runit-common/src/main/resources/log4j.xml +++ b/runit-common/src/main/resources/log4j.xml @@ -11,7 +11,7 @@ - + diff --git a/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/AbstractSettingsController.java b/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/AbstractSettingsTabController.java similarity index 78% rename from runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/AbstractSettingsController.java rename to runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/AbstractSettingsTabController.java index 72ddda3..1678cf8 100644 --- a/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/AbstractSettingsController.java +++ b/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/AbstractSettingsTabController.java @@ -7,8 +7,8 @@ import javafx.stage.Stage; import szczepanski.gerard.runnit.view.tray.ProgramTrayManager; -public abstract class AbstractSettingsController extends AbstractController { - private static final Logger LOG = Logger.getLogger(AbstractSettingsController.class); +public abstract class AbstractSettingsTabController extends AbstractController { + private static final Logger LOG = Logger.getLogger(AbstractSettingsTabController.class); @FXML private Button cancelButton; @@ -20,4 +20,6 @@ public void handleCancelButton() { ProgramTrayManager.setAlwaysOnTop(true); settingsStage.close(); } + + public abstract void reloadTab(); } diff --git a/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/SettingsDirectoriesPaneTabController.java b/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/SettingsDirectoriesPaneTabController.java index c8a2e4b..5a3e227 100644 --- a/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/SettingsDirectoriesPaneTabController.java +++ b/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/SettingsDirectoriesPaneTabController.java @@ -19,7 +19,7 @@ import szczepanski.gerard.runnit.view.util.DialogDisplayer; @RequiredArgsConstructor -public class SettingsDirectoriesPaneTabController extends AbstractSettingsController { +public class SettingsDirectoriesPaneTabController extends AbstractSettingsTabController { private static final Logger LOG = Logger.getLogger(SettingsDirectoriesPaneTabController.class); private final SettingsLoader settingsLoader; @@ -38,6 +38,11 @@ public class SettingsDirectoriesPaneTabController extends AbstractSettingsContro @FXML public void initialize() { LOG.debug("Initialize"); + reloadTab(); + } + + @Override + public void reloadTab() { Settings settings = settingsLoader.getSettings(); updateDirAliases(settings); } diff --git a/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/SettingsGeneralPaneTabController.java b/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/SettingsGeneralPaneTabController.java index e3c2f0e..55c3d1c 100644 --- a/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/SettingsGeneralPaneTabController.java +++ b/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/SettingsGeneralPaneTabController.java @@ -13,10 +13,11 @@ import szczepanski.gerard.runit.settings.service.loader.SettingsLoader; import szczepanski.gerard.runit.settings.service.validator.Validator; import szczepanski.gerard.runit.settings.service.writer.SettingsWriter; +import szczepanski.gerard.runnit.view.controller.mediator.TabsMediator; import szczepanski.gerard.runnit.view.util.DialogDisplayer; @RequiredArgsConstructor -public class SettingsGeneralPaneTabController extends AbstractSettingsController { +public class SettingsGeneralPaneTabController extends AbstractSettingsTabController { private static final Logger LOG = Logger.getLogger(SettingsGeneralPaneTabController.class); private final SettingsLoader settingsLoader; @@ -36,7 +37,8 @@ public void initialize() { reloadTab(); } - private void reloadTab() { + @Override + public void reloadTab() { Settings settings = settingsLoader.getSettings(); updateRootPaths(settings); updateFileExtensions(settings); @@ -145,7 +147,7 @@ public void handleLoadDefaultSettings() { LOG.debug("handleLoadDefaultSettings"); settingsWriter.restoreDefaultSettings(); DialogDisplayer.showConfirmationMessageDialog("Default settings are successfully loaded and saved!"); - reloadTab(); + TabsMediator.updateTabs(); } } diff --git a/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/SettingsWebPaneTabController.java b/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/SettingsWebPaneTabController.java index 0b25e7d..26de4a1 100644 --- a/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/SettingsWebPaneTabController.java +++ b/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/SettingsWebPaneTabController.java @@ -18,7 +18,7 @@ import szczepanski.gerard.runnit.view.util.DialogDisplayer; @RequiredArgsConstructor -public class SettingsWebPaneTabController extends AbstractSettingsController { +public class SettingsWebPaneTabController extends AbstractSettingsTabController { private static final Logger LOG = Logger.getLogger(SettingsWebPaneTabController.class); private final SettingsLoader settingsLoader; @@ -37,6 +37,11 @@ public class SettingsWebPaneTabController extends AbstractSettingsController { @FXML public void initialize() { LOG.debug("Initialize"); + reloadTab(); + } + + @Override + public void reloadTab() { Settings settings = settingsLoader.getSettings(); updateWebAliases(settings); } diff --git a/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/mediator/TabsMediator.java b/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/mediator/TabsMediator.java new file mode 100644 index 0000000..5fde310 --- /dev/null +++ b/runit-view/src/main/java/szczepanski/gerard/runnit/view/controller/mediator/TabsMediator.java @@ -0,0 +1,23 @@ +package szczepanski.gerard.runnit.view.controller.mediator; + +import java.util.ArrayList; +import java.util.List; + +import lombok.AccessLevel; +import lombok.NoArgsConstructor; +import szczepanski.gerard.runnit.view.controller.AbstractSettingsTabController; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class TabsMediator { + + private static final List settingsTabsContollers = new ArrayList<>(); + + public static void registerController(AbstractSettingsTabController controller) { + settingsTabsContollers.add(controller); + } + + public static void updateTabs() { + settingsTabsContollers.forEach(AbstractSettingsTabController::reloadTab); + } + +} diff --git a/runit-view/src/main/java/szczepanski/gerard/runnit/view/tab/factory/SettingsDirTabFactory.java b/runit-view/src/main/java/szczepanski/gerard/runnit/view/tab/factory/SettingsDirTabFactory.java index df362fa..df0366b 100644 --- a/runit-view/src/main/java/szczepanski/gerard/runnit/view/tab/factory/SettingsDirTabFactory.java +++ b/runit-view/src/main/java/szczepanski/gerard/runnit/view/tab/factory/SettingsDirTabFactory.java @@ -7,15 +7,17 @@ import javafx.scene.layout.Pane; import szczepanski.gerard.runit.common.exception.ExceptionCode; import szczepanski.gerard.runit.common.exception.RunitRuntimeException; +import szczepanski.gerard.runnit.view.controller.AbstractSettingsTabController; +import szczepanski.gerard.runnit.view.controller.mediator.TabsMediator; import szczepanski.gerard.runnit.view.factory.FxmlComponentFactory; public class SettingsDirTabFactory extends FxmlComponentFactory{ private static final String PATH = "/templates/panes/SettingsDirectoriesTabPane.fxml"; private static final String TAB_TITLE = "Directory aliases"; - private final Object settingsDirTabController; + private final AbstractSettingsTabController settingsDirTabController; - public SettingsDirTabFactory(Object settingsDirTabController) { + public SettingsDirTabFactory(AbstractSettingsTabController settingsDirTabController) { super(PATH); this.settingsDirTabController = settingsDirTabController; } @@ -23,6 +25,8 @@ public SettingsDirTabFactory(Object settingsDirTabController) { @Override protected Tab generateFxmlComponent(FXMLLoader loader) { loader.setController(settingsDirTabController); + TabsMediator.registerController(settingsDirTabController); + Pane tabContentPane; try { tabContentPane = (Pane) loader.load(); diff --git a/runit-view/src/main/java/szczepanski/gerard/runnit/view/tab/factory/SettingsGeneralTabFactory.java b/runit-view/src/main/java/szczepanski/gerard/runnit/view/tab/factory/SettingsGeneralTabFactory.java index 954b9d6..6ca9bfd 100644 --- a/runit-view/src/main/java/szczepanski/gerard/runnit/view/tab/factory/SettingsGeneralTabFactory.java +++ b/runit-view/src/main/java/szczepanski/gerard/runnit/view/tab/factory/SettingsGeneralTabFactory.java @@ -7,15 +7,17 @@ import javafx.scene.layout.Pane; import szczepanski.gerard.runit.common.exception.ExceptionCode; import szczepanski.gerard.runit.common.exception.RunitRuntimeException; +import szczepanski.gerard.runnit.view.controller.AbstractSettingsTabController; +import szczepanski.gerard.runnit.view.controller.mediator.TabsMediator; import szczepanski.gerard.runnit.view.factory.FxmlComponentFactory; public class SettingsGeneralTabFactory extends FxmlComponentFactory{ private static final String PATH = "/templates/panes/SettingsGeneralTabPane.fxml"; private static final String TAB_TITLE = "General"; - private final Object settingsGeneralTabController; + private final AbstractSettingsTabController settingsGeneralTabController; - public SettingsGeneralTabFactory(Object settingsGeneralTabController) { + public SettingsGeneralTabFactory(AbstractSettingsTabController settingsGeneralTabController) { super(PATH); this.settingsGeneralTabController = settingsGeneralTabController; } @@ -23,6 +25,8 @@ public SettingsGeneralTabFactory(Object settingsGeneralTabController) { @Override protected Tab generateFxmlComponent(FXMLLoader loader) { loader.setController(settingsGeneralTabController); + TabsMediator.registerController(settingsGeneralTabController); + Pane tabContentPane; try { tabContentPane = (Pane) loader.load(); diff --git a/runit-view/src/main/java/szczepanski/gerard/runnit/view/tab/factory/SettingsWebTabFactory.java b/runit-view/src/main/java/szczepanski/gerard/runnit/view/tab/factory/SettingsWebTabFactory.java index 82bddb5..9f1773e 100644 --- a/runit-view/src/main/java/szczepanski/gerard/runnit/view/tab/factory/SettingsWebTabFactory.java +++ b/runit-view/src/main/java/szczepanski/gerard/runnit/view/tab/factory/SettingsWebTabFactory.java @@ -7,15 +7,17 @@ import javafx.scene.layout.Pane; import szczepanski.gerard.runit.common.exception.ExceptionCode; import szczepanski.gerard.runit.common.exception.RunitRuntimeException; +import szczepanski.gerard.runnit.view.controller.AbstractSettingsTabController; +import szczepanski.gerard.runnit.view.controller.mediator.TabsMediator; import szczepanski.gerard.runnit.view.factory.FxmlComponentFactory; public class SettingsWebTabFactory extends FxmlComponentFactory{ private static final String PATH = "/templates/panes/SettingsWebTabPane.fxml"; private static final String TAB_TITLE = "Web aliases"; - private final Object settingsWebTabController; + private final AbstractSettingsTabController settingsWebTabController; - public SettingsWebTabFactory(Object settingsWebTabController) { + public SettingsWebTabFactory(AbstractSettingsTabController settingsWebTabController) { super(PATH); this.settingsWebTabController = settingsWebTabController; } @@ -23,6 +25,8 @@ public SettingsWebTabFactory(Object settingsWebTabController) { @Override protected Tab generateFxmlComponent(FXMLLoader loader) { loader.setController(settingsWebTabController); + TabsMediator.registerController(settingsWebTabController); + Pane tabContentPane; try { tabContentPane = (Pane) loader.load();