Skip to content

Commit

Permalink
Improve General View
Browse files Browse the repository at this point in the history
Signed-off-by: Axel RICHARD <axel.richard@obeo.fr>
  • Loading branch information
AxelRICHARD committed Dec 1, 2023
1 parent 720691d commit 0970864
Show file tree
Hide file tree
Showing 17 changed files with 170 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -121,8 +121,8 @@ private FormDescription createDetailsView() {
pageCore.setPreconditionExpression("");
pageCore.setLabelExpression("Core");
pageCore.getGroups().add(this.createCorePropertiesGroup());
pageCore.getGroups().add(this.createRedefinitionPropertiesGroup());
pageCore.getGroups().add(this.createSubclassificationPropertiesGroup());
pageCore.getGroups().add(this.createExtraRedefinitionPropertiesGroup());
pageCore.getGroups().add(this.createExtraSubclassificationPropertiesGroup());

PageDescription pageAdvanced = FormFactory.eINSTANCE.createPageDescription();
pageAdvanced.setDomainType("sysml::Element");
Expand All @@ -140,7 +140,7 @@ private GroupDescription createCorePropertiesGroup() {
GroupDescription group = FormFactory.eINSTANCE.createGroupDescription();
group.setDisplayMode(GroupDisplayMode.LIST);
group.setName(CORE_PROPERTIES);
group.setLabelExpression(CORE_PROPERTIES);
group.setLabelExpression("aql:self.eClass().name + ' Properties'");
group.setSemanticCandidatesExpression("aql:self");

group.getChildren().add(this.createCoreWidgets());
Expand All @@ -152,34 +152,54 @@ private GroupDescription createAdvancedPropertiesGroup() {
GroupDescription group = FormFactory.eINSTANCE.createGroupDescription();
group.setDisplayMode(GroupDisplayMode.LIST);
group.setName(ADVANCED_PROPERTIES);
group.setLabelExpression(ADVANCED_PROPERTIES);
group.setLabelExpression("aql:self.eClass().name + ' Properties'");
group.setSemanticCandidatesExpression("aql:self");

group.getChildren().add(this.createAdvancedWidgets());

return group;
}

private GroupDescription createRedefinitionPropertiesGroup() {
private GroupDescription createExtraRedefinitionPropertiesGroup() {
GroupDescription group = FormFactory.eINSTANCE.createGroupDescription();
group.setDisplayMode(GroupDisplayMode.LIST);
group.setName(REDEFINITION_PROPERTIES);
group.setLabelExpression(REDEFINITION_PROPERTIES);
group.setSemanticCandidatesExpression("aql:self.ownedRelationship->filter(sysml::Redefinition)");

group.getChildren().add(this.createCoreWidgets());
ReferenceWidgetDescription refWidget = ReferenceFactory.eINSTANCE.createReferenceWidgetDescription();
refWidget.setName("ExtraReferenceWidget");
refWidget.setLabelExpression("Redefines");
refWidget.setReferenceNameExpression("redefinedFeature");
refWidget.setReferenceOwnerExpression("aql:self");
refWidget.setIsEnabledExpression("aql:true");
ChangeContext setNewValueOperation = ViewFactory.eINSTANCE.createChangeContext();
setNewValueOperation.setExpression("aql:self.setNewValue(self.eClass().getEStructuralFeature(redefinedFeature), " + ViewFormDescriptionConverter.NEW_VALUE + ")");
refWidget.getBody().add(setNewValueOperation);

group.getChildren().add(refWidget);

return group;
}

private GroupDescription createSubclassificationPropertiesGroup() {
private GroupDescription createExtraSubclassificationPropertiesGroup() {
GroupDescription group = FormFactory.eINSTANCE.createGroupDescription();
group.setDisplayMode(GroupDisplayMode.LIST);
group.setName(SUBCLASSIFICATION_PROPERTIES);
group.setLabelExpression(SUBCLASSIFICATION_PROPERTIES);
group.setSemanticCandidatesExpression("aql:self.ownedRelationship->filter(sysml::Subclassification)");

group.getChildren().add(this.createCoreWidgets());
ReferenceWidgetDescription refWidget = ReferenceFactory.eINSTANCE.createReferenceWidgetDescription();
refWidget.setName("ExtraReferenceWidget");
refWidget.setLabelExpression("Specializes");
refWidget.setReferenceNameExpression("superclassifier");
refWidget.setReferenceOwnerExpression("aql:self");
refWidget.setIsEnabledExpression("aql:true");
ChangeContext setNewValueOperation = ViewFactory.eINSTANCE.createChangeContext();
setNewValueOperation.setExpression("aql:self.setNewValue(self.eClass().getEStructuralFeature(superclassifier), " + ViewFormDescriptionConverter.NEW_VALUE + ")");
refWidget.getBody().add(setNewValueOperation);

group.getChildren().add(refWidget);

return group;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.syson.sysml.Dependency;
import org.eclipse.syson.sysml.Element;
import org.eclipse.syson.sysml.FeatureTyping;
import org.eclipse.syson.sysml.Redefinition;
Expand All @@ -41,12 +42,20 @@ public List<EStructuralFeature> defaultCase(EObject object) {
@Override
public List<EStructuralFeature> caseElement(Element object) {
var features = new ArrayList<EStructuralFeature>();
features.add(SysmlPackage.eINSTANCE.getElement_ElementId());
features.add(SysmlPackage.eINSTANCE.getElement_DeclaredName());
features.add(SysmlPackage.eINSTANCE.getElement_QualifiedName());
return features;
}

@Override
public List<EStructuralFeature> caseDependency(Dependency object) {
var features = new ArrayList<EStructuralFeature>();
features.addAll(this.caseElement(object));
features.add(SysmlPackage.eINSTANCE.getDependency_Client());
features.add(SysmlPackage.eINSTANCE.getDependency_Supplier());
return features;
}

@Override
public List<EStructuralFeature> caseFeatureTyping(FeatureTyping object) {
var features = new ArrayList<EStructuralFeature>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ protected NodeDescription createDefinitionAttributesCompartmentItem(String name)
.semanticCandidatesExpression(AQLConstants.AQL_SELF + "." + SysmlPackage.eINSTANCE.getDefinition_OwnedAttribute().getName())
.style(this.createDefinitionCompartmentItemNodeStyle())
.userResizable(false)
.palette(this.createDefaultNodePalette())
.palette(this.createCompartmentItemNodePalette())
.synchronizationPolicy(SynchronizationPolicy.SYNCHRONIZED)
.build();
}
Expand Down Expand Up @@ -108,7 +108,7 @@ protected NodeDescription createDefinitionPortsCompartmentItem(String name) {
.semanticCandidatesExpression(AQLConstants.AQL_SELF + "." + SysmlPackage.eINSTANCE.getDefinition_OwnedPort().getName())
.style(this.createDefinitionCompartmentItemNodeStyle())
.userResizable(false)
.palette(this.createDefaultNodePalette())
.palette(this.createCompartmentItemNodePalette())
.synchronizationPolicy(SynchronizationPolicy.SYNCHRONIZED)
.build();
}
Expand Down Expand Up @@ -140,7 +140,7 @@ protected NodeDescription createDefinitionItemsCompartmentItem(String name) {
.semanticCandidatesExpression(AQLConstants.AQL_SELF + "." + SysmlPackage.eINSTANCE.getDefinition_OwnedItem().getName())
.style(this.createDefinitionCompartmentItemNodeStyle())
.userResizable(false)
.palette(this.createDefaultNodePalette())
.palette(this.createCompartmentItemNodePalette())
.synchronizationPolicy(SynchronizationPolicy.SYNCHRONIZED)
.build();
}
Expand Down Expand Up @@ -208,7 +208,7 @@ protected NodeDescription createUsageAttributesCompartmentItem(String name) {
.semanticCandidatesExpression(AQLConstants.AQL_SELF + "." + SysmlPackage.eINSTANCE.getUsage_NestedAttribute().getName())
.style(this.createUsageCompartmentItemNodeStyle())
.userResizable(false)
.palette(this.createDefaultNodePalette())
.palette(this.createCompartmentItemNodePalette())
.synchronizationPolicy(SynchronizationPolicy.SYNCHRONIZED)
.build();
}
Expand Down Expand Up @@ -240,7 +240,7 @@ protected NodeDescription createUsagePortsCompartmentItem(String name) {
.semanticCandidatesExpression(AQLConstants.AQL_SELF + "." + SysmlPackage.eINSTANCE.getUsage_NestedPort().getName())
.style(this.createUsageCompartmentItemNodeStyle())
.userResizable(false)
.palette(this.createDefaultNodePalette())
.palette(this.createCompartmentItemNodePalette())
.synchronizationPolicy(SynchronizationPolicy.SYNCHRONIZED)
.build();
}
Expand Down Expand Up @@ -281,7 +281,7 @@ protected NodeStyleDescription createUsageCompartmentItemNodeStyle() {
.build();
}

protected NodePalette createDefaultNodePalette() {
protected NodePalette createCompartmentItemNodePalette() {
var callDeleteService = this.viewBuilderHelper.newChangeContext()
.expression(AQLConstants.AQL_SELF + ".deleteFromModel()");

Expand All @@ -294,7 +294,7 @@ protected NodePalette createDefaultNodePalette() {

var editTool = this.diagramBuilderHelper.newLabelEditTool()
.name("Edit")
.initialDirectEditLabelExpression(AQLConstants.AQL_SELF + ".getInitialDirectEditLabel()")
.initialDirectEditLabelExpression(AQLConstants.AQL_SELF + ".getCompartmentItemInitialDirectEditLabel()")
.body(callEditService.build());

return this.diagramBuilderHelper.newNodePalette()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ private NodePalette createNodePalette(NodeDescription nodeDescription, List<Node

var editTool = this.diagramBuilderHelper.newLabelEditTool()
.name("Edit")
.initialDirectEditLabelExpression(AQLConstants.AQL_SELF + ".getInitialDirectEditLabel()")
.initialDirectEditLabelExpression(AQLConstants.AQL_SELF + ".getDefaultInitialDirectEditLabel()")
.body(callEditService.build());

return this.diagramBuilderHelper.newNodePalette()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import org.eclipse.sirius.components.view.diagram.NodePalette;
import org.eclipse.sirius.components.view.diagram.NodeStyleDescription;
import org.eclipse.sirius.components.view.diagram.SynchronizationPolicy;
import org.eclipse.syson.diagram.general.view.AQLConstants;
import org.eclipse.syson.diagram.general.view.GeneralViewDiagramDescriptionProvider;
import org.eclipse.syson.diagram.general.view.SysMLMetamodelHelper;
import org.eclipse.syson.sysml.SysmlPackage;
Expand Down Expand Up @@ -51,7 +52,6 @@ public NodeDescription create() {
.semanticCandidatesExpression("aql:self.getAllReachable(" + domainType + ")")
.style(this.createUsageNodeStyle())
.userResizable(true)
.palette(this.createDefaultNodePalette())
.synchronizationPolicy(SynchronizationPolicy.UNSYNCHRONIZED)
.build();
}
Expand Down Expand Up @@ -115,8 +115,17 @@ private NodePalette createNodePalette(NodeDescription nodeDescription, List<Node
.name("Delete from Model")
.body(changeContext.build());

var callEditService = this.viewBuilderHelper.newChangeContext()
.expression(AQLConstants.AQL_SELF + ".directEdit(newLabel)");

var editTool = this.diagramBuilderHelper.newLabelEditTool()
.name("Edit")
.initialDirectEditLabelExpression(AQLConstants.AQL_SELF + ".getDefaultInitialDirectEditLabel()")
.body(callEditService.build());

return this.diagramBuilderHelper.newNodePalette()
.deleteTool(deleteTool.build())
.labelEditTool(editTool.build())
.edgeTools(this.createDependencyEdgeTool(allNodeDescriptions),
this.createRedefinitionEdgeTool(allNodeDescriptions.stream().filter(nodeDesc -> NAME.equals(nodeDesc.getName())).toList()))
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import org.eclipse.sirius.components.view.diagram.NodePalette;
import org.eclipse.sirius.components.view.diagram.NodeStyleDescription;
import org.eclipse.sirius.components.view.diagram.SynchronizationPolicy;
import org.eclipse.syson.diagram.general.view.AQLConstants;
import org.eclipse.syson.diagram.general.view.GeneralViewDiagramDescriptionProvider;
import org.eclipse.syson.diagram.general.view.SysMLMetamodelHelper;
import org.eclipse.syson.sysml.SysmlPackage;
Expand Down Expand Up @@ -51,7 +52,6 @@ public NodeDescription create() {
.semanticCandidatesExpression("aql:self.getAllReachable(" + domainType + ")")
.style(this.createDefinitionNodeStyle())
.userResizable(true)
.palette(this.createDefaultNodePalette())
.synchronizationPolicy(SynchronizationPolicy.UNSYNCHRONIZED)
.build();
}
Expand Down Expand Up @@ -114,8 +114,17 @@ private NodePalette createNodePalette(NodeDescription nodeDescription, List<Node
.name("Delete from Model")
.body(changeContext.build());

var callEditService = this.viewBuilderHelper.newChangeContext()
.expression(AQLConstants.AQL_SELF + ".directEdit(newLabel)");

var editTool = this.diagramBuilderHelper.newLabelEditTool()
.name("Edit")
.initialDirectEditLabelExpression(AQLConstants.AQL_SELF + ".getDefaultInitialDirectEditLabel()")
.body(callEditService.build());

return this.diagramBuilderHelper.newNodePalette()
.deleteTool(deleteTool.build())
.labelEditTool(editTool.build())
.edgeTools(this.createDependencyEdgeTool(allNodeDescriptions),
this.createSubclassificationEdgeTool(allNodeDescriptions.stream().filter(nodeDesc -> NAME.equals(nodeDesc.getName())).toList()))
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import org.eclipse.sirius.components.view.diagram.NodeDescription;
import org.eclipse.sirius.components.view.diagram.NodePalette;
import org.eclipse.sirius.components.view.diagram.SynchronizationPolicy;
import org.eclipse.syson.diagram.general.view.AQLConstants;
import org.eclipse.syson.diagram.general.view.GeneralViewDiagramDescriptionProvider;
import org.eclipse.syson.diagram.general.view.SysMLMetamodelHelper;
import org.eclipse.syson.sysml.SysmlPackage;
Expand Down Expand Up @@ -53,7 +54,6 @@ public NodeDescription create() {
.semanticCandidatesExpression("aql:self.getAllReachable(" + domainType + ")")
.style(this.createDefinitionNodeStyle())
.userResizable(true)
.palette(this.createDefaultNodePalette())
.synchronizationPolicy(SynchronizationPolicy.UNSYNCHRONIZED)
.build();
}
Expand Down Expand Up @@ -103,8 +103,17 @@ private NodePalette createNodePalette(NodeDescription nodeDescription, List<Node
.name("Delete from Model")
.body(changeContext.build());

var callEditService = this.viewBuilderHelper.newChangeContext()
.expression(AQLConstants.AQL_SELF + ".directEdit(newLabel)");

var editTool = this.diagramBuilderHelper.newLabelEditTool()
.name("Edit")
.initialDirectEditLabelExpression(AQLConstants.AQL_SELF + ".getDefaultInitialDirectEditLabel()")
.body(callEditService.build());

return this.diagramBuilderHelper.newNodePalette()
.deleteTool(deleteTool.build())
.labelEditTool(editTool.build())
.edgeTools(this.createDependencyEdgeTool(allNodeDescriptions),
this.createSubclassificationEdgeTool(allNodeDescriptions.stream().filter(nodeDesc -> NAME.equals(nodeDesc.getName())).toList()))
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import org.eclipse.sirius.components.view.diagram.NodeDescription;
import org.eclipse.sirius.components.view.diagram.NodePalette;
import org.eclipse.sirius.components.view.diagram.SynchronizationPolicy;
import org.eclipse.syson.diagram.general.view.AQLConstants;
import org.eclipse.syson.diagram.general.view.GeneralViewDiagramDescriptionProvider;
import org.eclipse.syson.diagram.general.view.SysMLMetamodelHelper;
import org.eclipse.syson.sysml.SysmlPackage;
Expand Down Expand Up @@ -53,7 +54,6 @@ public NodeDescription create() {
.semanticCandidatesExpression("aql:self.getAllReachable(" + domainType + ")")
.style(this.createUsageNodeStyle())
.userResizable(true)
.palette(this.createDefaultNodePalette())
.synchronizationPolicy(SynchronizationPolicy.UNSYNCHRONIZED)
.build();
}
Expand Down Expand Up @@ -103,8 +103,17 @@ private NodePalette createNodePalette(NodeDescription nodeDescription, List<Node
.name("Delete from Model")
.body(changeContext.build());

var callEditService = this.viewBuilderHelper.newChangeContext()
.expression(AQLConstants.AQL_SELF + ".directEdit(newLabel)");

var editTool = this.diagramBuilderHelper.newLabelEditTool()
.name("Edit")
.initialDirectEditLabelExpression(AQLConstants.AQL_SELF + ".getDefaultInitialDirectEditLabel()")
.body(callEditService.build());

return this.diagramBuilderHelper.newNodePalette()
.deleteTool(deleteTool.build())
.labelEditTool(editTool.build())
.edgeTools(this.createDependencyEdgeTool(allNodeDescriptions),
this.createRedefinitionEdgeTool(allNodeDescriptions.stream().filter(nodeDesc -> NAME.equals(nodeDesc.getName())).toList()))
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import org.eclipse.sirius.components.view.diagram.NodeDescription;
import org.eclipse.sirius.components.view.diagram.NodePalette;
import org.eclipse.sirius.components.view.diagram.SynchronizationPolicy;
import org.eclipse.syson.diagram.general.view.AQLConstants;
import org.eclipse.syson.diagram.general.view.GeneralViewDiagramDescriptionProvider;
import org.eclipse.syson.diagram.general.view.SysMLMetamodelHelper;
import org.eclipse.syson.sysml.SysmlPackage;
Expand Down Expand Up @@ -53,7 +54,6 @@ public NodeDescription create() {
.semanticCandidatesExpression("aql:self.getAllReachable(" + domainType + ")")
.style(this.createDefinitionNodeStyle())
.userResizable(true)
.palette(this.createDefaultNodePalette())
.synchronizationPolicy(SynchronizationPolicy.UNSYNCHRONIZED)
.build();
}
Expand Down Expand Up @@ -103,8 +103,17 @@ private NodePalette createNodePalette(NodeDescription nodeDescription, List<Node
.name("Delete from Model")
.body(changeContext.build());

var callEditService = this.viewBuilderHelper.newChangeContext()
.expression(AQLConstants.AQL_SELF + ".directEdit(newLabel)");

var editTool = this.diagramBuilderHelper.newLabelEditTool()
.name("Edit")
.initialDirectEditLabelExpression(AQLConstants.AQL_SELF + ".getDefaultInitialDirectEditLabel()")
.body(callEditService.build());

return this.diagramBuilderHelper.newNodePalette()
.deleteTool(deleteTool.build())
.labelEditTool(editTool.build())
.edgeTools(this.createDependencyEdgeTool(allNodeDescriptions),
this.createSubclassificationEdgeTool(allNodeDescriptions.stream().filter(nodeDesc -> NAME.equals(nodeDesc.getName())).toList()))
.build();
Expand Down
Loading

0 comments on commit 0970864

Please sign in to comment.