From d9114d51330cd0f4559e5fa172da2bc7aa3dc370 Mon Sep 17 00:00:00 2001 From: Pierre-Charles David Date: Tue, 31 Jan 2023 10:08:10 +0100 Subject: [PATCH] [1463] Do not assume there is always at least a center label on an edge Bug: https://github.com/eclipse-sirius/sirius-components/issues/1463 Signed-off-by: Pierre-Charles David --- .../handlers/EditLabelEventHandler.java | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/EditLabelEventHandler.java b/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/EditLabelEventHandler.java index 8b02145313..ad3694fbf5 100644 --- a/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/EditLabelEventHandler.java +++ b/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/EditLabelEventHandler.java @@ -153,28 +153,33 @@ private void invokeDirectEditTool(Edge edge, String labelId, IEditingContext edi if (optionalSelf.isPresent()) { Object self = optionalSelf.get(); - var edgeLabelKind = EdgeLabelKind.CENTER_LABEL; + Optional optionalEdgeLabelKind = Optional.empty(); if (edge.getBeginLabel() != null && edge.getBeginLabel().getId().equals(labelId)) { - edgeLabelKind = EdgeLabelKind.BEGIN_LABEL; + optionalEdgeLabelKind = Optional.of(EdgeLabelKind.BEGIN_LABEL); + } else if (edge.getCenterLabel() != null && edge.getCenterLabel().getId().equals(labelId)) { + optionalEdgeLabelKind = Optional.of(EdgeLabelKind.CENTER_LABEL); } else if (edge.getEndLabel() != null && edge.getEndLabel().getId().equals(labelId)) { - edgeLabelKind = EdgeLabelKind.END_LABEL; + optionalEdgeLabelKind = Optional.of(EdgeLabelKind.END_LABEL); + } + if (optionalEdgeLabelKind.isPresent()) { + VariableManager variableManager = new VariableManager(); + variableManager.put(Environment.ENVIRONMENT, new Environment(Environment.SIRIUS_COMPONENTS)); + variableManager.put(VariableManager.SELF, self); + // @formatter:off + var semanticEdgeSource = this.diagramQueryService.findNodeById(diagram, edge.getSourceId()) + .flatMap(node -> this.objectService.getObject(editingContext, node.getTargetObjectId())) + .orElse(null); + var semanticEdgeTarget = this.diagramQueryService.findNodeById(diagram, edge.getTargetId()) + .flatMap(node -> this.objectService.getObject(editingContext, node.getTargetObjectId())) + .orElse(null); + variableManager.put(EdgeDescription.SEMANTIC_EDGE_SOURCE, semanticEdgeSource); + variableManager.put(EdgeDescription.SEMANTIC_EDGE_TARGET, semanticEdgeTarget); + // @formatter:on + edgeDescription.getLabelEditHandler().editLabel(variableManager, optionalEdgeLabelKind.get(), newText); + this.logger.debug("Edited label of diagram element {} to {}", edge.getId(), newText); + } else { + this.logger.debug("No label with id {} to edit on edge {}", labelId, edge.getId()); } - - VariableManager variableManager = new VariableManager(); - variableManager.put(Environment.ENVIRONMENT, new Environment(Environment.SIRIUS_COMPONENTS)); - variableManager.put(VariableManager.SELF, self); - // @formatter:off - var semanticEdgeSource = this.diagramQueryService.findNodeById(diagram, edge.getSourceId()) - .flatMap(node -> this.objectService.getObject(editingContext, node.getTargetObjectId())) - .orElse(null); - var semanticEdgeTarget = this.diagramQueryService.findNodeById(diagram, edge.getTargetId()) - .flatMap(node -> this.objectService.getObject(editingContext, node.getTargetObjectId())) - .orElse(null); - variableManager.put(EdgeDescription.SEMANTIC_EDGE_SOURCE, semanticEdgeSource); - variableManager.put(EdgeDescription.SEMANTIC_EDGE_TARGET, semanticEdgeTarget); - // @formatter:on - edgeDescription.getLabelEditHandler().editLabel(variableManager, edgeLabelKind, newText); - this.logger.debug("Edited label of diagram element {} to {}", edge.getId(), newText); } } }