From eacb4d0cc02e61c6824b9f1f4b81b65e66d084a6 Mon Sep 17 00:00:00 2001 From: "Blake J. Harnden" Date: Mon, 26 Nov 2018 14:18:07 -0800 Subject: [PATCH] corefx - updated node types dialog to display services for a given node type --- corefx/src/main/java/com/core/Controller.java | 9 +++++---- .../main/java/com/core/client/ICoreClient.java | 2 ++ .../com/core/client/rest/CoreRestClient.java | 7 +++++++ .../com/core/client/rest/GetDefaultServices.java | 16 ++++++++++++++++ .../main/java/com/core/graph/NetworkGraph.java | 10 +++++----- .../com/core/ui/dialogs/NodeTypesDialog.java | 16 ++++++++++++++++ .../main/resources/fxml/node_types_dialog.fxml | 4 +++- 7 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 corefx/src/main/java/com/core/client/rest/GetDefaultServices.java diff --git a/corefx/src/main/java/com/core/Controller.java b/corefx/src/main/java/com/core/Controller.java index 2ac2fc63..776939af 100644 --- a/corefx/src/main/java/com/core/Controller.java +++ b/corefx/src/main/java/com/core/Controller.java @@ -80,10 +80,6 @@ public class Controller implements Initializable { private GuiPreferencesDialog guiPreferencesDialog = new GuiPreferencesDialog(this); public void connectToCore(String coreUrl) { - // clear out any previously set information - bottom.getChildren().remove(mobilityPlayer); - mobilityDialog.setNode(null); - coreWebSocket.stop(); ExecutorService executorService = Executors.newSingleThreadExecutor(); @@ -131,6 +127,10 @@ public class Controller implements Initializable { // clear graph networkGraph.reset(); + // clear out any previously set information + bottom.getChildren().remove(mobilityPlayer); + mobilityDialog.setNode(null); + // get session to join Session session = coreClient.getSession(joinId); SessionState sessionState = SessionState.get(session.getState()); @@ -168,6 +168,7 @@ public class Controller implements Initializable { // update other components for new session graphToolbar.setRunButton(coreClient.isRunning()); hooksDialog.updateHooks(); + nodeTypesDialog.updateDefaultServices(); // display first mobility script in player Map mobilityConfigMap = coreClient.getMobilityConfigs(); diff --git a/corefx/src/main/java/com/core/client/ICoreClient.java b/corefx/src/main/java/com/core/client/ICoreClient.java index 8f36d1da..b1a4eabb 100644 --- a/corefx/src/main/java/com/core/client/ICoreClient.java +++ b/corefx/src/main/java/com/core/client/ICoreClient.java @@ -31,6 +31,8 @@ public interface ICoreClient { Map> getServices() throws IOException; + Map> defaultServices() throws IOException; + CoreService getService(CoreNode node, String serviceName) throws IOException; boolean setService(CoreNode node, String serviceName, CoreService service) throws IOException; diff --git a/corefx/src/main/java/com/core/client/rest/CoreRestClient.java b/corefx/src/main/java/com/core/client/rest/CoreRestClient.java index 6303bf99..c70e356e 100644 --- a/corefx/src/main/java/com/core/client/rest/CoreRestClient.java +++ b/corefx/src/main/java/com/core/client/rest/CoreRestClient.java @@ -128,6 +128,13 @@ public class CoreRestClient implements ICoreClient { return WebUtils.postFile(url, file); } + @Override + public Map> defaultServices() throws IOException { + String url = getUrl(String.format("sessions/%s/services/default", sessionId)); + GetDefaultServices getDefaultServices = WebUtils.getJson(url, GetDefaultServices.class); + return getDefaultServices.getDefaults(); + } + @Override public CoreService getService(CoreNode node, String serviceName) throws IOException { String url = getUrl(String.format("sessions/%s/nodes/%s/services/%s", sessionId, node.getId(), serviceName)); diff --git a/corefx/src/main/java/com/core/client/rest/GetDefaultServices.java b/corefx/src/main/java/com/core/client/rest/GetDefaultServices.java new file mode 100644 index 00000000..b134cbc0 --- /dev/null +++ b/corefx/src/main/java/com/core/client/rest/GetDefaultServices.java @@ -0,0 +1,16 @@ +package com.core.client.rest; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class GetDefaultServices { + private Map> defaults = new HashMap<>(); +} diff --git a/corefx/src/main/java/com/core/graph/NetworkGraph.java b/corefx/src/main/java/com/core/graph/NetworkGraph.java index 3a47937f..c2ad5b8c 100644 --- a/corefx/src/main/java/com/core/graph/NetworkGraph.java +++ b/corefx/src/main/java/com/core/graph/NetworkGraph.java @@ -72,7 +72,7 @@ public class NetworkGraph { // node render properties renderContext.setVertexLabelTransformer(CoreNode::getName); renderContext.setVertexShapeTransformer(node -> { - double offset = -(IconUtils.ICON_SIZE / 2); + double offset = -(IconUtils.ICON_SIZE / 2.0); return new Ellipse2D.Double(offset, offset, IconUtils.ICON_SIZE, IconUtils.ICON_SIZE); }); renderContext.setVertexIconTransformer(vertex -> { @@ -348,8 +348,8 @@ public class NetworkGraph { public void addNode(CoreNode node) { vertexId = Math.max(node.getId() + 1, node.getId()); - Double x = Math.abs(node.getPosition().getX()); - Double y = Math.abs(node.getPosition().getY()); + double x = Math.abs(node.getPosition().getX()); + double y = Math.abs(node.getPosition().getY()); logger.info("adding session node: {}", node); graph.addVertex(node); graphLayout.setLocation(node, x, y); @@ -363,8 +363,8 @@ public class NetworkGraph { node.getPosition().setY(nodeData.getPosition().getY()); // set graph node location - Double x = Math.abs(node.getPosition().getX()); - Double y = Math.abs(node.getPosition().getY()); + double x = Math.abs(node.getPosition().getX()); + double y = Math.abs(node.getPosition().getY()); graphLayout.setLocation(node, x, y); graphViewer.repaint(); } diff --git a/corefx/src/main/java/com/core/ui/dialogs/NodeTypesDialog.java b/corefx/src/main/java/com/core/ui/dialogs/NodeTypesDialog.java index dda57deb..ae816966 100644 --- a/corefx/src/main/java/com/core/ui/dialogs/NodeTypesDialog.java +++ b/corefx/src/main/java/com/core/ui/dialogs/NodeTypesDialog.java @@ -15,13 +15,17 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.File; +import java.io.IOException; +import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; public class NodeTypesDialog extends StageDialog { private static final Logger logger = LogManager.getLogger(); private final Map nodeTypeMap = new HashMap<>(); private NodeType selectedNodeType; + private Map> defaultServices = new HashMap<>(); @FXML private JFXListView listView; @FXML private JFXTextField modelTextField; @FXML private JFXTextField displayTextField; @@ -31,6 +35,7 @@ public class NodeTypesDialog extends StageDialog { @FXML private JFXButton saveButton; @FXML private JFXButton addButton; @FXML private JFXButton deleteButton; + @FXML private JFXListView nodeServicesListView; public NodeTypesDialog(Controller controller) { super(controller, "/fxml/node_types_dialog.fxml"); @@ -48,6 +53,8 @@ public class NodeTypesDialog extends StageDialog { iconTextField.setText(nodeType.getIcon()); iconImage.setImage(new Image(nodeType.getIcon())); selectedNodeType = nodeType; + List services = defaultServices.getOrDefault(nodeType.getModel(), Collections.emptyList()); + nodeServicesListView.getItems().setAll(services); }); iconButton.setOnAction(event -> { @@ -79,6 +86,15 @@ public class NodeTypesDialog extends StageDialog { }); } + public void updateDefaultServices() { + try { + defaultServices = getCoreClient().defaultServices(); + listView.getSelectionModel().selectFirst(); + } catch (IOException ex) { + Toast.error("Error getting default services", ex); + } + } + public void showDialog() { listView.getItems().clear(); nodeTypeMap.clear(); diff --git a/corefx/src/main/resources/fxml/node_types_dialog.fxml b/corefx/src/main/resources/fxml/node_types_dialog.fxml index bbc83833..3cbf566b 100644 --- a/corefx/src/main/resources/fxml/node_types_dialog.fxml +++ b/corefx/src/main/resources/fxml/node_types_dialog.fxml @@ -11,7 +11,7 @@ - + @@ -66,6 +66,8 @@ +