Skip to content

Commit

Permalink
Fix refresh settings tabs after settings restore
Browse files Browse the repository at this point in the history
  • Loading branch information
gerardszczepanski committed Feb 5, 2017
1 parent 6bd4e14 commit 3b1459c
Show file tree
Hide file tree
Showing 9 changed files with 63 additions and 14 deletions.
2 changes: 1 addition & 1 deletion runit-common/src/main/resources/log4j.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
</appender>

<root>
<level value="DEBUG" />
<level value="OFF" />
<appender-ref ref="console" />
</root>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -20,4 +20,6 @@ public void handleCancelButton() {
ProgramTrayManager.setAlwaysOnTop(true);
settingsStage.close();
}

public abstract void reloadTab();
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -36,7 +37,8 @@ public void initialize() {
reloadTab();
}

private void reloadTab() {
@Override
public void reloadTab() {
Settings settings = settingsLoader.getSettings();
updateRootPaths(settings);
updateFileExtensions(settings);
Expand Down Expand Up @@ -145,7 +147,7 @@ public void handleLoadDefaultSettings() {
LOG.debug("handleLoadDefaultSettings");
settingsWriter.restoreDefaultSettings();
DialogDisplayer.showConfirmationMessageDialog("Default settings are successfully loaded and saved!");
reloadTab();
TabsMediator.updateTabs();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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<AbstractSettingsTabController> settingsTabsContollers = new ArrayList<>();

public static void registerController(AbstractSettingsTabController controller) {
settingsTabsContollers.add(controller);
}

public static void updateTabs() {
settingsTabsContollers.forEach(AbstractSettingsTabController::reloadTab);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,26 @@
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<Tab>{

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;
}

@Override
protected Tab generateFxmlComponent(FXMLLoader loader) {
loader.setController(settingsDirTabController);
TabsMediator.registerController(settingsDirTabController);

Pane tabContentPane;
try {
tabContentPane = (Pane) loader.load();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,26 @@
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<Tab>{

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;
}

@Override
protected Tab generateFxmlComponent(FXMLLoader loader) {
loader.setController(settingsGeneralTabController);
TabsMediator.registerController(settingsGeneralTabController);

Pane tabContentPane;
try {
tabContentPane = (Pane) loader.load();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,26 @@
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<Tab>{

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;
}

@Override
protected Tab generateFxmlComponent(FXMLLoader loader) {
loader.setController(settingsWebTabController);
TabsMediator.registerController(settingsWebTabController);

Pane tabContentPane;
try {
tabContentPane = (Pane) loader.load();
Expand Down

0 comments on commit 3b1459c

Please sign in to comment.