Skip to content

Commit 842e700

Browse files
committed
[2113] Handle control node graphical nodes on AFV diagram background
Bug:#2113 Signed-off-by: Jerome Gout <jerome.gout@obeosoft.com>
1 parent 4d138b4 commit 842e700

16 files changed

Lines changed: 112 additions & 27 deletions

backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/nodes/AbstractControlNodeActionNodeDescriptionProvider.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,8 @@ private OutsideLabelStyle createOutsideLabelStyle() {
129129

130130
@Override
131131
public void link(DiagramDescription diagramDescription, IViewDiagramElementFinder cache) {
132-
// this nodeDescription has not been added to the diagramDescription children but to the fakeNodeDescription
133-
// children instead
134132
cache.getNodeDescription(this.descriptionNameGenerator.getNodeName(this.getNodeDescriptionName())).ifPresent(nodeDescription -> {
133+
diagramDescription.getNodeDescriptions().add(nodeDescription);
135134
nodeDescription.setPalette(this.createNodePalette(cache));
136135
});
137136
}

backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/nodes/AbstractFakeNodeDescriptionProvider.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -112,18 +112,6 @@ protected NodeStyleDescription createFakeNodeStyle() {
112112
}
113113

114114
protected void addReusableCustomNodes(IViewDiagramElementFinder cache, List<NodeDescription> childrenNodes) {
115-
cache.getNodeDescription(this.descriptionNameGenerator.getNodeName(DecisionActionNodeDescriptionProvider.DECISION_ACTION_NAME))
116-
.ifPresent(childrenNodes::add);
117-
cache.getNodeDescription(this.descriptionNameGenerator.getNodeName(ForkActionNodeDescriptionProvider.FORK_ACTION_NAME))
118-
.ifPresent(childrenNodes::add);
119-
cache.getNodeDescription(this.descriptionNameGenerator.getNodeName(JoinActionNodeDescriptionProvider.JOIN_ACTION_NAME))
120-
.ifPresent(childrenNodes::add);
121-
cache.getNodeDescription(this.descriptionNameGenerator.getNodeName(MergeActionNodeDescriptionProvider.MERGE_ACTION_NAME))
122-
.ifPresent(childrenNodes::add);
123-
cache.getNodeDescription(this.descriptionNameGenerator.getNodeName(StartActionNodeDescriptionProvider.START_ACTION_NAME))
124-
.ifPresent(childrenNodes::add);
125-
cache.getNodeDescription(this.descriptionNameGenerator.getNodeName(DoneActionNodeDescriptionProvider.DONE_ACTION_NAME))
126-
.ifPresent(childrenNodes::add);
127115
cache.getNodeDescription(this.descriptionNameGenerator.getNodeName(StartStateNodeDescriptionProvider.START_STATE_NAME))
128116
.ifPresent(childrenNodes::add);
129117
cache.getNodeDescription(this.descriptionNameGenerator.getNodeName(DoneStateNodeDescriptionProvider.DONE_STATE_NAME))

backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/nodes/DecisionActionNodeDescriptionProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
*/
2727
public class DecisionActionNodeDescriptionProvider extends AbstractControlNodeActionNodeDescriptionProvider {
2828

29-
public static final String DECISION_ACTION_NAME = "DecisionAction";
29+
public static final String DECISION_ACTION_NAME = SysmlPackage.eINSTANCE.getDecisionNode().getName();
3030

3131
public DecisionActionNodeDescriptionProvider(IColorProvider colorProvider, IDescriptionNameGenerator descriptionNameGenerator) {
3232
super(colorProvider, descriptionNameGenerator);

backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/nodes/DoneActionNodeDescriptionProvider.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,8 @@ public NodeDescription create() {
6161

6262
@Override
6363
public void link(DiagramDescription diagramDescription, IViewDiagramElementFinder cache) {
64-
// this nodeDescription has not been added to the diagramDescription children but to the fakeNodeDescription
65-
// children instead
6664
cache.getNodeDescription(this.descriptionNameGenerator.getNodeName(DONE_ACTION_NAME)).ifPresent(nodeDescription -> {
65+
diagramDescription.getNodeDescriptions().add(nodeDescription);
6766
nodeDescription.setPalette(this.createNodePalette());
6867
});
6968
}

backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/nodes/ForkActionNodeDescriptionProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
*/
2727
public class ForkActionNodeDescriptionProvider extends AbstractControlNodeActionNodeDescriptionProvider {
2828

29-
public static final String FORK_ACTION_NAME = "ForkAction";
29+
public static final String FORK_ACTION_NAME = SysmlPackage.eINSTANCE.getForkNode().getName();
3030

3131
public ForkActionNodeDescriptionProvider(IColorProvider colorProvider, IDescriptionNameGenerator descriptionNameGenerator) {
3232
super(colorProvider, descriptionNameGenerator);

backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/nodes/JoinActionNodeDescriptionProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
*/
2727
public class JoinActionNodeDescriptionProvider extends AbstractControlNodeActionNodeDescriptionProvider {
2828

29-
public static final String JOIN_ACTION_NAME = "JoinAction";
29+
public static final String JOIN_ACTION_NAME = SysmlPackage.eINSTANCE.getJoinNode().getName();
3030

3131
public JoinActionNodeDescriptionProvider(IColorProvider colorProvider, IDescriptionNameGenerator descriptionNameGenerator) {
3232
super(colorProvider, descriptionNameGenerator);

backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/nodes/MergeActionNodeDescriptionProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
*/
2727
public class MergeActionNodeDescriptionProvider extends AbstractControlNodeActionNodeDescriptionProvider {
2828

29-
public static final String MERGE_ACTION_NAME = "MergeAction";
29+
public static final String MERGE_ACTION_NAME = SysmlPackage.eINSTANCE.getMergeNode().getName();
3030

3131
public MergeActionNodeDescriptionProvider(IColorProvider colorProvider, IDescriptionNameGenerator descriptionNameGenerator) {
3232
super(colorProvider, descriptionNameGenerator);

backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/nodes/StartActionNodeDescriptionProvider.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,8 @@ public NodeDescription create() {
6868

6969
@Override
7070
public void link(DiagramDescription diagramDescription, IViewDiagramElementFinder cache) {
71-
// this nodeDescription has not been added to the diagramDescription children but to the fakeNodeDescription
72-
// children instead
7371
cache.getNodeDescription(this.descriptionNameGenerator.getNodeName(START_ACTION_NAME)).ifPresent(nodeDescription -> {
72+
diagramDescription.getNodeDescriptions().add(nodeDescription);
7473
nodeDescription.setPalette(this.createNodePalette(cache));
7574
});
7675
}

backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/tools/AbstractFreeFormCompartmentNodeToolProvider.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import org.eclipse.sirius.components.view.diagram.NodeTool;
2626
import org.eclipse.sirius.components.view.emf.diagram.ViewDiagramDescriptionConverter;
2727
import org.eclipse.syson.diagram.services.aql.DiagramMutationAQLService;
28+
import org.eclipse.syson.services.UtilService;
29+
import org.eclipse.syson.util.AQLConstants;
2830
import org.eclipse.syson.util.IDescriptionNameGenerator;
2931
import org.eclipse.syson.util.ServiceMethod;
3032

@@ -115,18 +117,30 @@ public NodeTool create(IViewDiagramElementFinder cache) {
115117
ViewDiagramDescriptionConverter.CONVERTED_NODES_VARIABLE));
116118

117119
var revealOperation = this.viewBuilderHelper.newChangeContext()
118-
.expression(ServiceMethod.of4(DiagramMutationAQLService::revealCompartment)
119-
.aql(Node.SELECTED_NODE, "self", DiagramContext.DIAGRAM_CONTEXT, IEditingContext.EDITING_CONTEXT, ViewDiagramDescriptionConverter.CONVERTED_NODES_VARIABLE));
120+
.expression(ServiceMethod.of4(DiagramMutationAQLService::revealCompartment).aql(Node.SELECTED_NODE, AQLConstants.SELF, DiagramContext.DIAGRAM_CONTEXT, IEditingContext.EDITING_CONTEXT,
121+
ViewDiagramDescriptionConverter.CONVERTED_NODES_VARIABLE));
122+
123+
var conditionalRevealOperation = this.viewBuilderHelper.newIf()
124+
.conditionExpression(AQLConstants.AQL + Node.SELECTED_NODE + " <> null")
125+
.children(revealOperation.build());
120126

121-
var creationServiceCall = this.viewBuilderHelper.newChangeContext()
127+
var changeContextCreateInstance = this.viewBuilderHelper.newChangeContext()
122128
.expression(this.getCreationServiceCallExpression())
123-
.children(addToExposedElements.build(), revealOperation.build());
129+
.children(conditionalRevealOperation.build(), addToExposedElements.build());
130+
131+
var changeContextViewUsageOwner = this.viewBuilderHelper.newChangeContext()
132+
.expression(ServiceMethod.of0(UtilService::getViewUsageOwner).aqlSelf())
133+
.children(changeContextCreateInstance.build());
134+
135+
var changeContextRoot = this.viewBuilderHelper.newChangeContext()
136+
.expression(AQLConstants.AQL_SELF)
137+
.children(changeContextViewUsageOwner.build());
124138

125139
String preconditionExpression = this.getPreconditionServiceCallExpression();
126140

127141
return builder.name(this.getLabel())
128142
.iconURLsExpression(this.getIconPath())
129-
.body(creationServiceCall.build())
143+
.body(changeContextRoot.build())
130144
.preconditionExpression(preconditionExpression)
131145
.build();
132146
}

backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/tools/DecisionActionNodeToolProvider.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,16 @@
1313
package org.eclipse.syson.diagram.common.view.tools;
1414

1515
import org.eclipse.emf.ecore.EClass;
16+
import org.eclipse.sirius.components.collaborative.diagrams.DiagramContext;
17+
import org.eclipse.sirius.components.core.api.IEditingContext;
1618
import org.eclipse.syson.diagram.common.view.nodes.ActionFlowCompartmentNodeDescriptionProvider;
1719
import org.eclipse.syson.diagram.common.view.nodes.DecisionActionNodeDescriptionProvider;
1820
import org.eclipse.syson.diagram.common.view.services.ViewCreateService;
21+
import org.eclipse.syson.diagram.common.view.services.ViewToolService;
22+
import org.eclipse.syson.sysml.SysmlPackage;
1923
import org.eclipse.syson.util.IDescriptionNameGenerator;
2024
import org.eclipse.syson.util.ServiceMethod;
25+
import org.eclipse.syson.util.SysMLMetamodelHelper;
2126

2227
/**
2328
* Used to add the decision action in actions body for all diagrams.
@@ -49,4 +54,10 @@ protected String getLabel() {
4954
protected String getIconPath() {
5055
return "/icons/full/obj16/DecisionNode.svg";
5156
}
57+
58+
@Override
59+
protected String getPreconditionServiceCallExpression() {
60+
return ServiceMethod.of3(ViewToolService::toolShouldBeAvailable).aqlSelf(IEditingContext.EDITING_CONTEXT, DiagramContext.DIAGRAM_CONTEXT,
61+
SysMLMetamodelHelper.buildQualifiedName(SysmlPackage.eINSTANCE.getDecisionNode()));
62+
}
5263
}

0 commit comments

Comments
 (0)