diff --git a/corefx/src/main/java/com/core/Controller.java b/corefx/src/main/java/com/core/Controller.java index 3ffdaf32..4023869a 100644 --- a/corefx/src/main/java/com/core/Controller.java +++ b/corefx/src/main/java/com/core/Controller.java @@ -84,7 +84,6 @@ public class Controller implements Initializable { private ConnectDialog connectDialog = new ConnectDialog(this); private GuiPreferencesDialog guiPreferencesDialog = new GuiPreferencesDialog(this); private NodeTypeCreateDialog nodeTypeCreateDialog = new NodeTypeCreateDialog(this); - private TerminalDialog terminalDialog = new TerminalDialog(this); public void connectToCore(String address, int port) { coreWebSocket.stop(); @@ -288,7 +287,6 @@ public class Controller implements Initializable { connectDialog.setOwner(window); guiPreferencesDialog.setOwner(window); nodeTypeCreateDialog.setOwner(window); - terminalDialog.setOwner(window); } @FXML diff --git a/corefx/src/main/java/com/core/graph/NetworkGraph.java b/corefx/src/main/java/com/core/graph/NetworkGraph.java index c63b6a18..c1dc04fd 100644 --- a/corefx/src/main/java/com/core/graph/NetworkGraph.java +++ b/corefx/src/main/java/com/core/graph/NetworkGraph.java @@ -3,6 +3,7 @@ package com.core.graph; import com.core.Controller; import com.core.data.*; import com.core.ui.Toast; +import com.core.ui.dialogs.TerminalDialog; import com.core.utils.Configuration; import com.core.utils.IconUtils; import com.google.common.base.Supplier; @@ -141,7 +142,11 @@ public class NetworkGraph { Toast.error("Node terminal failed to start"); } } else { - Platform.runLater(() -> controller.getTerminalDialog().showDialog(node)); + Platform.runLater(() -> { + TerminalDialog terminalDialog = new TerminalDialog(controller); + terminalDialog.setOwner(controller.getWindow()); + terminalDialog.showDialog(node); + }); } } } diff --git a/corefx/src/main/java/com/core/ui/dialogs/StageDialog.java b/corefx/src/main/java/com/core/ui/dialogs/StageDialog.java index 13634bb5..f6d3a603 100644 --- a/corefx/src/main/java/com/core/ui/dialogs/StageDialog.java +++ b/corefx/src/main/java/com/core/ui/dialogs/StageDialog.java @@ -35,6 +35,10 @@ public class StageDialog { private final HBox buttonBar = new HBox(); public StageDialog(Controller controller, String fxmlPath) { + this(controller, fxmlPath, Modality.APPLICATION_MODAL); + } + + public StageDialog(Controller controller, String fxmlPath, Modality modality) { this.controller = controller; JFXDecorator decorator = new JFXDecorator(stage, gridPane); @@ -69,7 +73,7 @@ public class StageDialog { buttonBar.setAlignment(Pos.CENTER_RIGHT); buttonBar.setSpacing(10); - stage.initModality(Modality.APPLICATION_MODAL); + stage.initModality(modality); FXMLLoader loader = new FXMLLoader(getClass().getResource(fxmlPath)); loader.setController(this); diff --git a/corefx/src/main/java/com/core/ui/dialogs/TerminalDialog.java b/corefx/src/main/java/com/core/ui/dialogs/TerminalDialog.java index e22b9874..6e0b8db8 100644 --- a/corefx/src/main/java/com/core/ui/dialogs/TerminalDialog.java +++ b/corefx/src/main/java/com/core/ui/dialogs/TerminalDialog.java @@ -8,6 +8,7 @@ import com.jfoenix.controls.JFXTextArea; import com.jfoenix.controls.JFXTextField; import javafx.concurrent.Task; import javafx.fxml.FXML; +import javafx.stage.Modality; import lombok.Data; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -18,12 +19,12 @@ public class TerminalDialog extends StageDialog { private String address; private int port; private JFXButton saveButton; - @FXML JFXTextArea outputTextArea; - @FXML JFXTextField commandTextField; + private @FXML JFXTextArea outputTextArea; + private @FXML JFXTextField commandTextField; private CoreNode node; public TerminalDialog(Controller controller) { - super(controller, "/fxml/terminal_dialog.fxml"); + super(controller, "/fxml/terminal_dialog.fxml", Modality.NONE); commandTextField.setOnAction(event -> { String command = commandTextField.getText(); addOutput(String.format("$> %s", command));