From f17b030682e113d78aa38a5446a09767d97c2eb8 Mon Sep 17 00:00:00 2001 From: Pierre-Charles David Date: Thu, 4 Aug 2022 15:01:59 +0200 Subject: [PATCH] [1320] Ensure selectedNode variable is always defined Bug: https://github.com/eclipse-sirius/sirius-components/issues/1320 Signed-off-by: Pierre-Charles David --- CHANGELOG.adoc | 2 +- .../diagrams/handlers/DropOnDiagramEventHandler.java | 4 +--- .../InvokeSingleClickOnDiagramElementToolEventHandler.java | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index cdfa49edce..6b91cf4943 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -27,7 +27,7 @@ This allows representation precondition expressions to be more precise as they k - https://github.com/eclipse-sirius/sirius-components/issues/1281[#1281] [form] The `LinkDescription` now requires a `displayProvider` and a `styleProvider`. The `displayProvider` is used to display the text of the hyperLink. The GraphQL API has also been changed with two additional fields on the type `Link`: `display` and `style` (optional). The front-end use the `display` value instead of the `label` value to display the hyperlink text. The `label` value is displayed before the widget to be consistent with other properties sections. - +- https://github.com/eclipse-sirius/sirius-components/issues/1320[#1320] [diagram] The `selectedNode` variable is now always _defined_ in the context of drop hanlders and single-click tools. Previously, if the target of the drop or single-click tool was the diagram itself (instead of a node), the variable was not defined at all. Now it is defined but `null` in these cases. === Dependency update diff --git a/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/DropOnDiagramEventHandler.java b/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/DropOnDiagramEventHandler.java index 48495eb824..46a9b6f705 100644 --- a/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/DropOnDiagramEventHandler.java +++ b/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/DropOnDiagramEventHandler.java @@ -123,9 +123,7 @@ private IStatus executeTool(IEditingContext editingContext, IDiagramContext diag for (Object self : objects) { VariableManager variableManager = new VariableManager(); - if (node.isPresent()) { - variableManager.put(Node.SELECTED_NODE, node.get()); - } + variableManager.put(Node.SELECTED_NODE, node.orElse(null)); variableManager.put(IEditingContext.EDITING_CONTEXT, editingContext); variableManager.put(IDiagramContext.DIAGRAM_CONTEXT, diagramContext); variableManager.put(Environment.ENVIRONMENT, new Environment(Environment.SIRIUS_COMPONENTS)); diff --git a/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/InvokeSingleClickOnDiagramElementToolEventHandler.java b/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/InvokeSingleClickOnDiagramElementToolEventHandler.java index d013ed075a..db0fbee742 100644 --- a/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/InvokeSingleClickOnDiagramElementToolEventHandler.java +++ b/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/InvokeSingleClickOnDiagramElementToolEventHandler.java @@ -153,7 +153,7 @@ private IStatus executeTool(IEditingContext editingContext, IDiagramContext diag variableManager.put(IEditingContext.EDITING_CONTEXT, editingContext); variableManager.put(Environment.ENVIRONMENT, new Environment(Environment.SIRIUS_COMPONENTS)); variableManager.put(VariableManager.SELF, self.get()); - node.ifPresent(selectedNode -> variableManager.put(Node.SELECTED_NODE, selectedNode)); + variableManager.put(Node.SELECTED_NODE, node.orElse(null)); String selectionDescriptionId = tool.getSelectionDescriptionId(); if (selectionDescriptionId != null && selectedObjectId != null) {