Skip to content

Commit

Permalink
[269] Handle start action in GV
Browse files Browse the repository at this point in the history
Bug: eclipse-syson#269
Signed-off-by: Jerome Gout <jerome.gout@obeosoft.com>
  • Loading branch information
jerome-obeo authored and AxelRICHARD committed Jun 4, 2024
1 parent 135ba81 commit a626ca2
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import org.eclipse.syson.diagram.common.view.nodes.ActionFlowCompartmentNodeDescriptionProvider;
import org.eclipse.syson.diagram.common.view.nodes.CompartmentItemNodeDescriptionProvider;
import org.eclipse.syson.diagram.common.view.nodes.InheritedCompartmentItemNodeDescriptionProvider;
import org.eclipse.syson.diagram.common.view.nodes.StartActionNodeDescriptionProvider;
import org.eclipse.syson.diagram.common.view.tools.ToolSectionDescription;
import org.eclipse.syson.diagram.general.view.edges.AllocateEdgeDescriptionProvider;
import org.eclipse.syson.diagram.general.view.edges.DefinitionOwnedActionUsageEdgeDescriptionProvider;
Expand Down Expand Up @@ -226,6 +227,7 @@ public RepresentationDescription create(IColorProvider colorProvider) {
diagramElementDescriptionProviders.add(new CompartmentItemNodeDescriptionProvider(SysmlPackage.eINSTANCE.getAllocationDefinition(), SysmlPackage.eINSTANCE.getConnectionDefinition_ConnectionEnd(), colorProvider, this.nameGenerator));
diagramElementDescriptionProviders.add(new ActionFlowCompartmentNodeDescriptionProvider(SysmlPackage.eINSTANCE.getActionUsage(), SysmlPackage.eINSTANCE.getUsage_NestedAction(), colorProvider, this.nameGenerator));
diagramElementDescriptionProviders.add(new ActionFlowCompartmentNodeDescriptionProvider(SysmlPackage.eINSTANCE.getActionDefinition(), SysmlPackage.eINSTANCE.getDefinition_OwnedAction(), colorProvider, this.nameGenerator));
diagramElementDescriptionProviders.add(new StartActionNodeDescriptionProvider(colorProvider, this.getNameGenerator()));

// create a node description provider for each element found in a section
var nodeDescriptionProviderSwitch = new GeneralViewNodeDescriptionProviderSwitch(colorProvider);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.eclipse.sirius.components.view.builder.providers.IColorProvider;
import org.eclipse.sirius.components.view.diagram.NodeDescription;
import org.eclipse.syson.diagram.common.view.edges.AbstractSuccessionEdgeDescriptionProvider;
import org.eclipse.syson.diagram.common.view.nodes.StartActionNodeDescriptionProvider;
import org.eclipse.syson.diagram.general.view.GVDescriptionNameGenerator;
import org.eclipse.syson.diagram.general.view.GeneralViewDiagramDescriptionProvider;

Expand All @@ -33,23 +34,26 @@ public SuccessionEdgeDescriptionProvider(IColorProvider colorProvider) {
super(colorProvider, new GVDescriptionNameGenerator());
}

private List<NodeDescription> getSourceAndTargetNodes(IViewDiagramElementFinder cache) {
private List<NodeDescription> getAllUsages(IViewDiagramElementFinder cache) {
var sourcesAndTargets = new ArrayList<NodeDescription>();

GeneralViewDiagramDescriptionProvider.USAGES.forEach(usage -> {
cache.getNodeDescription(nameGenerator.getNodeName(usage)).ifPresent(sourcesAndTargets::add);
cache.getNodeDescription(this.nameGenerator.getNodeName(usage)).ifPresent(sourcesAndTargets::add);
});

return sourcesAndTargets;
}

@Override
protected List<NodeDescription> getSourceNodes(IViewDiagramElementFinder cache) {
return this.getSourceAndTargetNodes(cache);
var sources = this.getAllUsages(cache);
// the start node can be the source of a succession
cache.getNodeDescription(this.nameGenerator.getNodeName(StartActionNodeDescriptionProvider.START_ACTION_NAME)).ifPresent(sources::add);
return sources;
}

@Override
protected List<NodeDescription> getTargetNodes(IViewDiagramElementFinder cache) {
return this.getSourceAndTargetNodes(cache);
return this.getAllUsages(cache);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ protected List<NodeDescription> getAllNodeDescriptions(IViewDiagramElementFinder

@Override
protected List<NodeToolSection> getToolSections(NodeDescription nodeDescription, IViewDiagramElementFinder cache) {
GeneralViewNodeToolSectionSwitch toolSectionSwitch = new GeneralViewNodeToolSectionSwitch(this.getAllNodeDescriptions(cache));
GeneralViewNodeToolSectionSwitch toolSectionSwitch = new GeneralViewNodeToolSectionSwitch(cache, this.getAllNodeDescriptions(cache));
return toolSectionSwitch.doSwitch(this.eClass);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ protected List<NodeDescription> getAllNodeDescriptions(IViewDiagramElementFinder

@Override
protected List<NodeToolSection> getToolSections(NodeDescription nodeDescription, IViewDiagramElementFinder cache) {
GeneralViewNodeToolSectionSwitch toolSectionSwitch = new GeneralViewNodeToolSectionSwitch(this.getAllNodeDescriptions(cache));
GeneralViewNodeToolSectionSwitch toolSectionSwitch = new GeneralViewNodeToolSectionSwitch(cache, this.getAllNodeDescriptions(cache));
return toolSectionSwitch.doSwitch(this.eClass);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.sirius.components.view.builder.IViewDiagramElementFinder;
import org.eclipse.sirius.components.view.diagram.NodeDescription;
import org.eclipse.sirius.components.view.diagram.NodeTool;
import org.eclipse.sirius.components.view.diagram.NodeToolSection;
Expand All @@ -26,6 +27,7 @@
import org.eclipse.syson.diagram.common.view.tools.ActionFlowCompartmentNodeToolProvider;
import org.eclipse.syson.diagram.common.view.tools.CompartmentNodeToolProvider;
import org.eclipse.syson.diagram.common.view.tools.ObjectiveRequirementCompartmentNodeToolProvider;
import org.eclipse.syson.diagram.common.view.tools.StartActionNodeToolProvider;
import org.eclipse.syson.diagram.common.view.tools.SubjectCompartmentNodeToolProvider;
import org.eclipse.syson.diagram.general.view.GVDescriptionNameGenerator;
import org.eclipse.syson.diagram.general.view.GeneralViewDiagramDescriptionProvider;
Expand Down Expand Up @@ -58,8 +60,11 @@ public class GeneralViewNodeToolSectionSwitch extends AbstractViewNodeToolSectio

private final List<NodeDescription> allNodeDescriptions;

public GeneralViewNodeToolSectionSwitch(List<NodeDescription> allNodeDescriptions) {
private final IViewDiagramElementFinder cache;

public GeneralViewNodeToolSectionSwitch(IViewDiagramElementFinder cache, List<NodeDescription> allNodeDescriptions) {
super(new GVDescriptionNameGenerator());
this.cache = Objects.requireNonNull(cache);
this.allNodeDescriptions = Objects.requireNonNull(allNodeDescriptions);
}

Expand Down Expand Up @@ -90,6 +95,7 @@ public List<NodeToolSection> caseAcceptActionUsage(AcceptActionUsage object) {
@Override
public List<NodeToolSection> caseActionUsage(ActionUsage object) {
var createSection = this.buildCreateSection(
new StartActionNodeToolProvider(SysmlPackage.eINSTANCE.getActionUsage(), this.descriptionNameGenerator).create(this.cache),
this.createNestedUsageNodeTool(SysmlPackage.eINSTANCE.getAttributeUsage()),
this.createNestedUsageNodeTool(SysmlPackage.eINSTANCE.getPartUsage()),
this.createNestedUsageNodeTool(SysmlPackage.eINSTANCE.getPortUsage()));
Expand All @@ -100,7 +106,7 @@ public List<NodeToolSection> caseActionUsage(ActionUsage object) {

@Override
public List<NodeToolSection> caseActionDefinition(ActionDefinition object) {
var createSection = this.buildCreateSection();
var createSection = this.buildCreateSection(new StartActionNodeToolProvider(SysmlPackage.eINSTANCE.getActionDefinition(), this.descriptionNameGenerator).create(this.cache));
createSection.getNodeTools().add(new ActionFlowCompartmentNodeToolProvider(SysmlPackage.eINSTANCE.getActionDefinition(), this.descriptionNameGenerator).create(null));
return List.of(createSection, this.addElementsToolSection());
}
Expand Down

0 comments on commit a626ca2

Please sign in to comment.