corefx - modified base dialogs to allow modality configuration, updated terminal dialogs to not have modality and can be instanced per node

This commit is contained in:
Blake J. Harnden 2018-11-30 16:24:21 -08:00
parent e37caedf61
commit 9b1bc3e444
4 changed files with 15 additions and 7 deletions

View file

@ -84,7 +84,6 @@ public class Controller implements Initializable {
private ConnectDialog connectDialog = new ConnectDialog(this); private ConnectDialog connectDialog = new ConnectDialog(this);
private GuiPreferencesDialog guiPreferencesDialog = new GuiPreferencesDialog(this); private GuiPreferencesDialog guiPreferencesDialog = new GuiPreferencesDialog(this);
private NodeTypeCreateDialog nodeTypeCreateDialog = new NodeTypeCreateDialog(this); private NodeTypeCreateDialog nodeTypeCreateDialog = new NodeTypeCreateDialog(this);
private TerminalDialog terminalDialog = new TerminalDialog(this);
public void connectToCore(String address, int port) { public void connectToCore(String address, int port) {
coreWebSocket.stop(); coreWebSocket.stop();
@ -288,7 +287,6 @@ public class Controller implements Initializable {
connectDialog.setOwner(window); connectDialog.setOwner(window);
guiPreferencesDialog.setOwner(window); guiPreferencesDialog.setOwner(window);
nodeTypeCreateDialog.setOwner(window); nodeTypeCreateDialog.setOwner(window);
terminalDialog.setOwner(window);
} }
@FXML @FXML

View file

@ -3,6 +3,7 @@ package com.core.graph;
import com.core.Controller; import com.core.Controller;
import com.core.data.*; import com.core.data.*;
import com.core.ui.Toast; import com.core.ui.Toast;
import com.core.ui.dialogs.TerminalDialog;
import com.core.utils.Configuration; import com.core.utils.Configuration;
import com.core.utils.IconUtils; import com.core.utils.IconUtils;
import com.google.common.base.Supplier; import com.google.common.base.Supplier;
@ -141,7 +142,11 @@ public class NetworkGraph {
Toast.error("Node terminal failed to start"); Toast.error("Node terminal failed to start");
} }
} else { } else {
Platform.runLater(() -> controller.getTerminalDialog().showDialog(node)); Platform.runLater(() -> {
TerminalDialog terminalDialog = new TerminalDialog(controller);
terminalDialog.setOwner(controller.getWindow());
terminalDialog.showDialog(node);
});
} }
} }
} }

View file

@ -35,6 +35,10 @@ public class StageDialog {
private final HBox buttonBar = new HBox(); private final HBox buttonBar = new HBox();
public StageDialog(Controller controller, String fxmlPath) { public StageDialog(Controller controller, String fxmlPath) {
this(controller, fxmlPath, Modality.APPLICATION_MODAL);
}
public StageDialog(Controller controller, String fxmlPath, Modality modality) {
this.controller = controller; this.controller = controller;
JFXDecorator decorator = new JFXDecorator(stage, gridPane); JFXDecorator decorator = new JFXDecorator(stage, gridPane);
@ -69,7 +73,7 @@ public class StageDialog {
buttonBar.setAlignment(Pos.CENTER_RIGHT); buttonBar.setAlignment(Pos.CENTER_RIGHT);
buttonBar.setSpacing(10); buttonBar.setSpacing(10);
stage.initModality(Modality.APPLICATION_MODAL); stage.initModality(modality);
FXMLLoader loader = new FXMLLoader(getClass().getResource(fxmlPath)); FXMLLoader loader = new FXMLLoader(getClass().getResource(fxmlPath));
loader.setController(this); loader.setController(this);

View file

@ -8,6 +8,7 @@ import com.jfoenix.controls.JFXTextArea;
import com.jfoenix.controls.JFXTextField; import com.jfoenix.controls.JFXTextField;
import javafx.concurrent.Task; import javafx.concurrent.Task;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.stage.Modality;
import lombok.Data; import lombok.Data;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@ -18,12 +19,12 @@ public class TerminalDialog extends StageDialog {
private String address; private String address;
private int port; private int port;
private JFXButton saveButton; private JFXButton saveButton;
@FXML JFXTextArea outputTextArea; private @FXML JFXTextArea outputTextArea;
@FXML JFXTextField commandTextField; private @FXML JFXTextField commandTextField;
private CoreNode node; private CoreNode node;
public TerminalDialog(Controller controller) { public TerminalDialog(Controller controller) {
super(controller, "/fxml/terminal_dialog.fxml"); super(controller, "/fxml/terminal_dialog.fxml", Modality.NONE);
commandTextField.setOnAction(event -> { commandTextField.setOnAction(event -> {
String command = commandTextField.getText(); String command = commandTextField.getText();
addOutput(String.format("$> %s", command)); addOutput(String.format("$> %s", command));