diff --git a/owlplug-client/src/main/java/com/owlplug/core/components/DialogManager.java b/owlplug-client/src/main/java/com/owlplug/core/components/DialogManager.java index 4828454e..01a713a4 100644 --- a/owlplug-client/src/main/java/com/owlplug/core/components/DialogManager.java +++ b/owlplug-client/src/main/java/com/owlplug/core/components/DialogManager.java @@ -28,13 +28,15 @@ import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller; +import java.util.Stack; + @Component public class DialogManager { @Autowired private MainController mainController; - private JFXDialog dialog; + private Stack dialogStack = new Stack<>(); /** * Creates a new dialog. @@ -42,8 +44,13 @@ public class DialogManager { * @return */ public JFXDialog newDialog() { - dialog = new JFXDialog(); + JFXDialog dialog = new JFXDialog(); dialog.setDialogContainer(mainController.getRootPane()); + dialogStack.push(dialog); + + dialog.setOnDialogClosed(e -> { + dialogStack.pop(); + }); return dialog; } @@ -124,7 +131,7 @@ public JFXDialog newDialog(double width, double height, Node body, Node heading) */ public JFXDialog newDialog(JFXDialogLayout layout) { - newDialog(); + JFXDialog dialog = newDialog(); dialog.setContent(layout); return dialog; } @@ -143,6 +150,7 @@ public JFXDialog newSimpleInfoDialog(String title, String body) { */ public JFXDialog newSimpleInfoDialog(Node title, Node body) { JFXDialogLayout layout = new JFXDialogLayout(); + JFXDialog dialog = newDialog(layout); layout.setHeading(title); layout.setBody(body); @@ -154,12 +162,12 @@ public JFXDialog newSimpleInfoDialog(Node title, Node body) { }); layout.setActions(button); - return newDialog(layout); + return dialog; } public JFXDialog getDialog() { - return dialog; + return dialogStack.peek(); } } diff --git a/owlplug-client/src/main/java/com/owlplug/core/controllers/dialogs/ListDirectoryDialogController.java b/owlplug-client/src/main/java/com/owlplug/core/controllers/dialogs/ListDirectoryDialogController.java index ac1aeea7..cf498885 100644 --- a/owlplug-client/src/main/java/com/owlplug/core/controllers/dialogs/ListDirectoryDialogController.java +++ b/owlplug-client/src/main/java/com/owlplug/core/controllers/dialogs/ListDirectoryDialogController.java @@ -38,6 +38,9 @@ public class ListDirectoryDialogController extends AbstractDialogController impl @Autowired private OptionsController optionsController; + @Autowired + private WelcomeDialogController welcomeDialogController; + @Autowired private LazyViewRegistry lazyViewRegistry; @@ -45,6 +48,8 @@ public class ListDirectoryDialogController extends AbstractDialogController impl private JFXButton addDirectoryButton; @FXML private ListView directoryListView; + @FXML + private JFXButton closeButton; private final String newDirectoryItem = "[New directory] (double-click to update)"; private String currentPreferenceKey; @@ -56,6 +61,9 @@ public void initialize() { observableItems.add(newDirectoryItem); }); directoryListView.setCellFactory(TextFieldListCell.forListView()); + closeButton.setOnAction(e -> { + this.close(); + }); } public void configure (String preferenceKey) { @@ -87,6 +95,7 @@ public void onChanged(Change change) { this.getPreferences().putList(currentPreferenceKey, prefList); optionsController.refreshView(); + welcomeDialogController.refreshView(); } diff --git a/owlplug-client/src/main/resources/fxml/dialogs/ListDirectoryView.fxml b/owlplug-client/src/main/resources/fxml/dialogs/ListDirectoryView.fxml index 7a12ff3f..8f6b8083 100644 --- a/owlplug-client/src/main/resources/fxml/dialogs/ListDirectoryView.fxml +++ b/owlplug-client/src/main/resources/fxml/dialogs/ListDirectoryView.fxml @@ -13,5 +13,10 @@ + + + + +