diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 0562eeb79..3a4a0ba54 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -83,6 +83,10 @@ Consumers may override this by providing an implementation of `org.eclipse.syson - https://github.com/eclipse-syson/syson/issues/1432[#1432] [metamodel] Add implicit `Subclassification` or `Subsetting` when using semantic `MetadataUsage`. - https://github.com/eclipse-syson/syson/issues/1355[#1355] [tests] Add coding rules tests on all modules. - https://github.com/eclipse-syson/syson/issues/1530[#1530] [details] Move `RequirementUsage`'s _ReqId_ property from the _Advanced_ tab to the _Core_ tab of the _Details View_. +- https://github.com/eclipse-syson/syson/issues/1534[#1534] [explorer] Since it is now possible to switch from a _Standard Diagram View_ to another in SysON (for example from _General View_ to _Interconnection View_), the `ViewDefinition` name in displayed in the label of the `ViewUsage` in the _Explorer View_. +With this enhancement, users can now easily identify which `ViewDefinition` is used by a `ViewUsage`. +- https://github.com/eclipse-syson/syson/issues/1535[#1535] [explorer] Since it is now possible to switch from a _Standard Diagram View_ to another in SysON (for example from _General View_ to _Interconnection View_), the `ViewUsages` default name does not contain the name of the `ViewDefinition` anymore. +With this enhancement, users avoid confusion when switching from one _ViewDefinition_ to another one in a `ViewUsage`. === New features diff --git a/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/configuration/SysMLv2PropertiesConfigurer.java b/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/configuration/SysMLv2PropertiesConfigurer.java index e3a5a6e30..573f1e3e7 100644 --- a/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/configuration/SysMLv2PropertiesConfigurer.java +++ b/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/configuration/SysMLv2PropertiesConfigurer.java @@ -126,7 +126,7 @@ public SysMLv2PropertiesConfigurer(ComposedAdapterFactory composedAdapterFactory @Override public void addPropertiesDescriptions(IPropertiesDescriptionRegistry registry) { // Build the actual FormDescription that will be used in Detail view. - FormDescription viewFormDescription = this.createDetailsView(); + FormDescription viewFormDescription = this.createDetailsViewForElement(); // The FormDescription must be part of View inside a proper EMF Resource to be correctly handled URI uri = URI.createURI(IEMFEditingContext.RESOURCE_SCHEME + ":///" + UUID.nameUUIDFromBytes(SysMLv2PropertiesConfigurer.class.getCanonicalName().getBytes())); @@ -150,7 +150,7 @@ public void addPropertiesDescriptions(IPropertiesDescriptionRegistry registry) { } } - private FormDescription createDetailsView() { + private FormDescription createDetailsViewForElement() { String domainType = SysMLMetamodelHelper.buildQualifiedName(SysmlPackage.eINSTANCE.getElement()); FormDescription form = FormFactory.eINSTANCE.createFormDescription(); form.setName("SysON Details View"); @@ -187,6 +187,7 @@ private FormDescription createDetailsView() { return form; } + /** * Creates a group to display the value of a Feature or FeatureValue. * diff --git a/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/sysmlv2/SysMLv2ProjectTemplatesInitializer.java b/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/sysmlv2/SysMLv2ProjectTemplatesInitializer.java index f5c8be8fc..80d0242d2 100644 --- a/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/sysmlv2/SysMLv2ProjectTemplatesInitializer.java +++ b/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/sysmlv2/SysMLv2ProjectTemplatesInitializer.java @@ -104,16 +104,18 @@ private Optional initializeSysMLv2Project(ICause cause, var resource = this.defaultSysMLv2ResourceProvider.getDefaultSysMLv2Resource(UUID.randomUUID(), SYSMLV2_DOCUMENT_NAME); resourceSet.getResources().add(resource); + // General View is the description name of SDVDiagramDescriptionProvider var optionalGeneralViewDiagram = this.findDiagramDescription(editingContext, "General View"); if (optionalGeneralViewDiagram.isPresent()) { DiagramDescription generalViewDiagram = optionalGeneralViewDiagram.get(); - var viewUsage = this.getOrCreateViewUsage(resource); - if (viewUsage.isPresent()) { + var optViewUsage = this.getOrCreateViewUsage(resource); + if (optViewUsage.isPresent()) { var variableManager = new VariableManager(); + var viewUsage = optViewUsage.get(); variableManager.put(VariableManager.SELF, viewUsage); - variableManager.put(DiagramDescription.LABEL, generalViewDiagram.getLabel()); + variableManager.put(DiagramDescription.LABEL, viewUsage.getDeclaredName()); String label = generalViewDiagram.getLabelProvider().apply(variableManager); - Diagram diagram = this.diagramCreationService.create(viewUsage.get(), generalViewDiagram, editingContext); + Diagram diagram = this.diagramCreationService.create(viewUsage, generalViewDiagram, editingContext); List iconURLs = generalViewDiagram.getIconURLsProvider().apply(variableManager); var representationMetadata = RepresentationMetadata.newRepresentationMetadata(diagram.getId()) @@ -139,16 +141,18 @@ private Optional initializeSysMLv2LibraryProject(ICause var resource = this.defaultSysMLv2ResourceProvider.getDefaultSysMLv2LibraryResource(UUID.randomUUID(), SYSMLV2_LIBRARY_DOCUMENT_NAME); resourceSet.getResources().add(resource); + // General View is the description name of SDVDiagramDescriptionProvider var optionalGeneralViewDiagram = this.findDiagramDescription(editingContext, "General View"); if (optionalGeneralViewDiagram.isPresent()) { DiagramDescription generalViewDiagram = optionalGeneralViewDiagram.get(); - var viewUsage = this.getOrCreateViewUsage(resource); - if (viewUsage.isPresent()) { + var optViewUsage = this.getOrCreateViewUsage(resource); + if (optViewUsage.isPresent()) { var variableManager = new VariableManager(); + var viewUsage = optViewUsage.get(); variableManager.put(VariableManager.SELF, viewUsage); - variableManager.put(DiagramDescription.LABEL, generalViewDiagram.getLabel()); + variableManager.put(DiagramDescription.LABEL, viewUsage.getDeclaredName()); String label = generalViewDiagram.getLabelProvider().apply(variableManager); - Diagram diagram = this.diagramCreationService.create(viewUsage.get(), generalViewDiagram, editingContext); + Diagram diagram = this.diagramCreationService.create(viewUsage, generalViewDiagram, editingContext); List iconURLs = generalViewDiagram.getIconURLsProvider().apply(variableManager); var representationMetadata = RepresentationMetadata.newRepresentationMetadata(diagram.getId()) @@ -177,16 +181,18 @@ private Optional initializeBatmobileProject(ICause cause // Load after adding the resource to the resourceSet, to be sure that references will be resolved. this.defaultSysMLv2ResourceProvider.loadBatmobileResource(resource); + // General View is the description name of SDVDiagramDescriptionProvider var optionalGeneralViewDiagram = this.findDiagramDescription(editingContext, "General View"); if (optionalGeneralViewDiagram.isPresent()) { DiagramDescription generalViewDiagram = optionalGeneralViewDiagram.get(); - var viewUsage = this.getOrCreateViewUsage(resource); - if (viewUsage.isPresent()) { + var optViewUsage = this.getOrCreateViewUsage(resource); + if (optViewUsage.isPresent()) { var variableManager = new VariableManager(); + var viewUsage = optViewUsage.get(); variableManager.put(VariableManager.SELF, viewUsage); - variableManager.put(DiagramDescription.LABEL, generalViewDiagram.getLabel()); + variableManager.put(DiagramDescription.LABEL, viewUsage.getDeclaredName()); String label = generalViewDiagram.getLabelProvider().apply(variableManager); - Diagram diagram = this.diagramCreationService.create(viewUsage.get(), generalViewDiagram, editingContext); + Diagram diagram = this.diagramCreationService.create(viewUsage, generalViewDiagram, editingContext); List iconURLs = generalViewDiagram.getIconURLsProvider().apply(variableManager); var representationMetadata = RepresentationMetadata.newRepresentationMetadata(diagram.getId()) @@ -249,7 +255,7 @@ private Optional getViewUsage(Element element) { return element.getOwnedElement().stream() .filter(ViewUsage.class::isInstance) .map(ViewUsage.class::cast) - .filter(vu -> Objects.equals(vu.getDeclaredName(), "General View")) + .filter(vu -> Objects.equals(vu.getDeclaredName(), "view1")) .findFirst(); } @@ -258,7 +264,7 @@ private Optional createViewUsage(Element element) { var viewUsage = SysmlFactory.eINSTANCE.createViewUsage(); element.getOwnedRelationship().add(viewUsageMembership); viewUsageMembership.getOwnedRelatedElement().add(viewUsage); - viewUsage.setDeclaredName("General View"); + viewUsage.setDeclaredName("view1"); viewUsage.setElementId(ElementUtil.generateUUID(viewUsage).toString()); var featureTyping = SysmlFactory.eINSTANCE.createFeatureTyping(); diff --git a/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/sysmlv2/SysONDefaultResourceProvider.java b/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/sysmlv2/SysONDefaultResourceProvider.java index 1ebd038bd..1567876be 100644 --- a/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/sysmlv2/SysONDefaultResourceProvider.java +++ b/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/sysmlv2/SysONDefaultResourceProvider.java @@ -72,7 +72,7 @@ public Resource getDefaultSysMLv2Resource(UUID resourcePath, String name) { var package1 = SysmlFactory.eINSTANCE.createPackage(); rootNamespace.getOwnedRelationship().add(rootMembership); rootMembership.getOwnedRelatedElement().add(package1); - package1.setDeclaredName("Package 1"); + package1.setDeclaredName("Package1"); package1.setElementId(ElementUtil.generateUUID(package1).toString()); resource.getContents().add(rootNamespace); diff --git a/backend/application/syson-application-configuration/src/main/resources/templates/Batmobile.json b/backend/application/syson-application-configuration/src/main/resources/templates/Batmobile.json index ef60286a8..550572285 100644 --- a/backend/application/syson-application-configuration/src/main/resources/templates/Batmobile.json +++ b/backend/application/syson-application-configuration/src/main/resources/templates/Batmobile.json @@ -6276,7 +6276,7 @@ "id": "b38b489f-9052-47f7-a417-0c1e137d0dca", "eClass": "sysml:ViewUsage", "data": { - "declaredName": "General View", + "declaredName": "view1", "elementId": "b63738a8-448c-4de2-a71d-00c512807fdf", "ownedRelationship": [ { diff --git a/backend/application/syson-application-configuration/src/main/resources/templates/Batmobile.sysml b/backend/application/syson-application-configuration/src/main/resources/templates/Batmobile.sysml index 6cecb60cb..7f4f8ebd8 100644 --- a/backend/application/syson-application-configuration/src/main/resources/templates/Batmobile.sysml +++ b/backend/application/syson-application-configuration/src/main/resources/templates/Batmobile.sysml @@ -292,7 +292,7 @@ package Batmobile { part :>> wheels = wheels.xWheel; } - view 'General View' : StandardViewDefinitions::GeneralView { + view 'view1' : StandardViewDefinitions::GeneralView { expose Vehicle; expose Vehicle::driver; expose Vehicle::engine; diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/templates/TemplatesControllerIntegrationTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/templates/TemplatesControllerIntegrationTests.java index 10fae2403..edb9203bc 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/templates/TemplatesControllerIntegrationTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/templates/TemplatesControllerIntegrationTests.java @@ -140,7 +140,7 @@ public void givenSysMLv2ProjectTemplateWhenMutationIsPerformedThenTheProjectIsCr var emfEditingContext = (IEMFEditingContext) editingContext; var rootObject = this.getRooObject(emfEditingContext); assertNotNull(rootObject); - assertEquals("Package 1", rootObject.getDeclaredName()); + assertEquals("Package1", rootObject.getDeclaredName()); } @DisplayName("GIVEN the SysMLv2-Library project template, WHEN the mutation is performed, THEN the project is created") diff --git a/backend/metamodel/syson-sysml-metamodel/src/main/java/org/eclipse/syson/sysml/impl/ViewUsageImpl.java b/backend/metamodel/syson-sysml-metamodel/src/main/java/org/eclipse/syson/sysml/impl/ViewUsageImpl.java index 95dbc5dca..27a326965 100644 --- a/backend/metamodel/syson-sysml-metamodel/src/main/java/org/eclipse/syson/sysml/impl/ViewUsageImpl.java +++ b/backend/metamodel/syson-sysml-metamodel/src/main/java/org/eclipse/syson/sysml/impl/ViewUsageImpl.java @@ -152,13 +152,14 @@ public ViewDefinition getViewDefinition() { /** * * - * @generated + * @generated NOT */ public ViewDefinition basicGetViewDefinition() { - // TODO: implement this method to return the 'View Definition' reference - // -> do not perform proxy resolution - // Ensure that you remove @generated or mark it @generated NOT - return null; + return this.getType().stream() + .filter(ViewDefinition.class::isInstance) + .map(ViewDefinition.class::cast) + .findFirst() + .orElse(null); } /** diff --git a/backend/metamodel/syson-sysml-metamodel/src/main/java/org/eclipse/syson/sysml/util/ElementUtil.java b/backend/metamodel/syson-sysml-metamodel/src/main/java/org/eclipse/syson/sysml/util/ElementUtil.java index 7d0d7467c..be0bdff55 100644 --- a/backend/metamodel/syson-sysml-metamodel/src/main/java/org/eclipse/syson/sysml/util/ElementUtil.java +++ b/backend/metamodel/syson-sysml-metamodel/src/main/java/org/eclipse/syson/sysml/util/ElementUtil.java @@ -230,6 +230,25 @@ public T findByNameAndType(Collection roots, String return null; } + /** + * Count the number of existing elements having the same type than the given Element inside the owning Namespace of + * the given Element. + * + * @param element + * the given {@link Element}. + * @return the number of existing elements having the same type than the given Element inside the owning Namespace + * of the given Element. + */ + public long existingElementsCount(Element element) { + Namespace owningNamespace = element.getOwningNamespace(); + if (owningNamespace != null) { + return owningNamespace.getOwnedMember().stream() + .filter(member -> element.eClass().equals(member.eClass())) + .count(); + } + return 0; + } + /** * Iterate over the children of the given root {@link EObject} to find an {@link Element} with the given qualified * name and type. diff --git a/backend/services/syson-services/src/main/java/org/eclipse/syson/services/ElementInitializerSwitch.java b/backend/services/syson-services/src/main/java/org/eclipse/syson/services/ElementInitializerSwitch.java index 6a4c415b4..71f4cb908 100644 --- a/backend/services/syson-services/src/main/java/org/eclipse/syson/services/ElementInitializerSwitch.java +++ b/backend/services/syson-services/src/main/java/org/eclipse/syson/services/ElementInitializerSwitch.java @@ -119,7 +119,7 @@ public Element caseDependency(Dependency object) { @Override public Element caseDefinition(Definition object) { - var existingElements = this.existingElementsCount(object); + var existingElements = this.elementUtil.existingElementsCount(object); object.setDeclaredName(object.eClass().getName() + existingElements); return object; } @@ -138,7 +138,7 @@ public Element caseElement(Element object) { @Override public Element caseEnumerationDefinition(EnumerationDefinition object) { object.setIsVariation(true); - var existingElements = this.existingElementsCount(object); + var existingElements = this.elementUtil.existingElementsCount(object); object.setDeclaredName(object.eClass().getName() + existingElements); return object; } @@ -155,7 +155,7 @@ public Element caseFlowUsage(FlowUsage object) { @Override public Element casePackage(Package object) { - var existingElements = this.existingElementsCount(object); + var existingElements = this.elementUtil.existingElementsCount(object); object.setDeclaredName(object.eClass().getName() + existingElements); return object; } @@ -193,7 +193,7 @@ public Element casePerformActionUsage(PerformActionUsage object) { @Override public Element casePortDefinition(PortDefinition object) { - var existingElements = this.existingElementsCount(object); + var existingElements = this.elementUtil.existingElementsCount(object); object.setDeclaredName(object.eClass().getName() + existingElements); OwningMembership owningMembership = SysmlFactory.eINSTANCE.createOwningMembership(); object.getOwnedRelationship().add(owningMembership); @@ -272,7 +272,7 @@ public Element caseUsage(Usage object) { defaultName = defaultName.substring(0, defaultName.length() - 5); } - var existingElements = this.existingElementsCount(object); + var existingElements = this.elementUtil.existingElementsCount(object); object.setDeclaredName(defaultName + existingElements); object.setIsComposite(true); @@ -290,16 +290,6 @@ public Element caseViewUsage(ViewUsage object) { return object; } - private long existingElementsCount(Element element) { - Namespace owningNamespace = element.getOwningNamespace(); - if (owningNamespace != null) { - return owningNamespace.getOwnedMember().stream() - .filter(member -> element.eClass().equals(member.eClass())) - .count(); - } - return 0; - } - private ParameterMembership createParameterMembershipWithReferenceUsage(String refName, FeatureDirectionKind direction) { var reference = SysmlFactory.eINSTANCE.createReferenceUsage(); reference.setDirection(direction); diff --git a/backend/services/syson-services/src/main/java/org/eclipse/syson/services/UtilService.java b/backend/services/syson-services/src/main/java/org/eclipse/syson/services/UtilService.java index dde791594..186ab3ddc 100644 --- a/backend/services/syson-services/src/main/java/org/eclipse/syson/services/UtilService.java +++ b/backend/services/syson-services/src/main/java/org/eclipse/syson/services/UtilService.java @@ -976,13 +976,10 @@ public Element getViewUsageOwner(Element element) { * @param editingContext * the {@link IEditingContext} of the element. It corresponds to a variable accessible from the variable * manager. - * @param diagramContext - * the {@link IDiagramContext} of the element. It corresponds to a variable accessible from the variable - * manager. * @return true if the given {@link Element} displayed in the given {@link IDiagramContext} is of the given * {@link ViewDefinition}, false otherwise. */ - public ViewDefinitionKind getViewDefinitionKind(Element element, List ancestors, IEditingContext editingContext, IDiagramContext diagramContext) { + public ViewDefinitionKind getViewDefinitionKind(Element element, List ancestors, IEditingContext editingContext) { ViewDefinitionKind kind = ViewDefinitionKind.GENERAL_VIEW; if (element instanceof ViewUsage viewUsage) { var types = viewUsage.getType(); @@ -995,7 +992,7 @@ public ViewDefinitionKind getViewDefinitionKind(Element element, List an var viewUsageContainingElement = ancestors.stream().filter(ViewUsage.class::isInstance).map(ViewUsage.class::cast).findFirst(); if (viewUsageContainingElement.isPresent()) { ViewUsage viewUsage = viewUsageContainingElement.get(); - kind = this.getViewDefinitionKind(viewUsage, List.of(), editingContext, diagramContext); + kind = this.getViewDefinitionKind(viewUsage, List.of(), editingContext); } } return kind; @@ -1017,6 +1014,19 @@ public boolean isEmptyObjectiveRequirement(Element self) { .isEmpty(); } + /** + * Count the number of existing elements having the same type than the given Element inside the owning Namespace of + * the given Element. + * + * @param element + * the given {@link Element}. + * @return the number of existing elements having the same type than the given Element inside the owning Namespace + * of the given Element. + */ + public long existingElementsCount(Element element) { + return this.elementUtil.existingElementsCount(element); + } + private ReferenceUsage addConnectorEnd(ConnectorAsUsage connectorAsUsage, Feature end, Type connectorContainer) { FeatureChainComputer cmp = new FeatureChainComputer(); List sourceFeaturePath = cmp.computeShortestPath(connectorContainer, end).orElse(List.of()); diff --git a/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/services/ViewNodeService.java b/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/services/ViewNodeService.java index 325ace6f9..47de90afd 100644 --- a/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/services/ViewNodeService.java +++ b/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/services/ViewNodeService.java @@ -140,7 +140,7 @@ public List getExposedElements(Element element, Element parent, EClass elementsToExpose.addAll(filteredExposedElements); // if it is not a General View, we don't want to display nested nodes as tree (i.e. sibling nodes + // composition edges), if it an ActionFlow view, we only want to display Action Nodes as root nodes, ... - var viewDefKind = this.utilService.getViewDefinitionKind(viewUsage, ancestors, editingContext, diagramContext); + var viewDefKind = this.utilService.getViewDefinitionKind(viewUsage, ancestors, editingContext); for (Element filteredExposedElement : filteredExposedElements) { boolean canBeDisplayed = new ViewFilterSwitch(viewDefKind, exposedElements, parent).doSwitch(filteredExposedElement); if (!canBeDisplayed) { diff --git a/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/services/ViewToolService.java b/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/services/ViewToolService.java index e000406d5..9350bafda 100644 --- a/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/services/ViewToolService.java +++ b/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/services/ViewToolService.java @@ -328,7 +328,7 @@ public Element dropElementFromDiagram(Element droppedElement, Node droppedNode, * @return true if the tool should be available, false otherwise. */ public boolean toolShouldBeAvailable(Element element, IEditingContext editingContext, DiagramContext diagramContext, EClass newElementType) { - ViewDefinitionKind viewDefinitionKind = this.utilService.getViewDefinitionKind(element, List.of(), editingContext, diagramContext); + ViewDefinitionKind viewDefinitionKind = this.utilService.getViewDefinitionKind(element, List.of(), editingContext); var elt = this.utilService.getViewUsageOwner(element); return switch (viewDefinitionKind) { diff --git a/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/ActionFlowViewDiagramDescriptionProvider.java b/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/ActionFlowViewDiagramDescriptionProvider.java index 0f7232020..7bef6b2e0 100644 --- a/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/ActionFlowViewDiagramDescriptionProvider.java +++ b/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/ActionFlowViewDiagramDescriptionProvider.java @@ -50,7 +50,7 @@ public RepresentationDescription create(IColorProvider colorProvider) { .domainType(SysMLMetamodelHelper.buildQualifiedName(SysmlPackage.eINSTANCE.getNamespace())) .preconditionExpression(AQLUtils.getSelfServiceCallExpression("canCreateDiagram")) .name(DESCRIPTION_NAME) - .titleExpression(DESCRIPTION_NAME) + .titleExpression("aql:'view'+ Sequence{self.existingElementsCount(), 1}->sum()") .build(); } }; diff --git a/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/ActionFlowViewJavaServiceProvider.java b/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/ActionFlowViewJavaServiceProvider.java index bb25ef940..5738ea48a 100644 --- a/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/ActionFlowViewJavaServiceProvider.java +++ b/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/ActionFlowViewJavaServiceProvider.java @@ -16,6 +16,7 @@ import org.eclipse.sirius.components.view.View; import org.eclipse.sirius.components.view.emf.IJavaServiceProvider; +import org.eclipse.syson.services.UtilService; import org.eclipse.syson.standard.diagrams.view.services.ActionFlowViewCreateService; import org.springframework.context.annotation.Configuration; @@ -34,7 +35,7 @@ public List> getServiceClasses(View view) { .filter(desc -> ActionFlowViewDiagramDescriptionProvider.DESCRIPTION_NAME.equals(desc.getName())) .findFirst(); if (optGVDescription.isPresent()) { - return List.of(ActionFlowViewCreateService.class); + return List.of(ActionFlowViewCreateService.class, UtilService.class); } return List.of(); } diff --git a/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/InterconnectionViewDiagramDescriptionProvider.java b/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/InterconnectionViewDiagramDescriptionProvider.java index 04b12a0bb..ba7b626e7 100644 --- a/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/InterconnectionViewDiagramDescriptionProvider.java +++ b/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/InterconnectionViewDiagramDescriptionProvider.java @@ -50,7 +50,7 @@ public RepresentationDescription create(IColorProvider colorProvider) { .domainType(SysMLMetamodelHelper.buildQualifiedName(SysmlPackage.eINSTANCE.getElement())) .preconditionExpression(AQLUtils.getSelfServiceCallExpression("canCreateDiagram")) .name(DESCRIPTION_NAME) - .titleExpression(DESCRIPTION_NAME) + .titleExpression("aql:'view'+ Sequence{self.existingElementsCount(), 1}->sum()") .build(); } }; diff --git a/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/InterconnectionViewJavaServiceProvider.java b/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/InterconnectionViewJavaServiceProvider.java index b86ce6692..6cda10845 100644 --- a/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/InterconnectionViewJavaServiceProvider.java +++ b/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/InterconnectionViewJavaServiceProvider.java @@ -16,6 +16,7 @@ import org.eclipse.sirius.components.view.View; import org.eclipse.sirius.components.view.emf.IJavaServiceProvider; +import org.eclipse.syson.services.UtilService; import org.eclipse.syson.standard.diagrams.view.services.InterconnectionViewCreateService; import org.springframework.context.annotation.Configuration; @@ -34,7 +35,7 @@ public List> getServiceClasses(View view) { .filter(desc -> InterconnectionViewDiagramDescriptionProvider.DESCRIPTION_NAME.equals(desc.getName())) .findFirst(); if (optGVDescription.isPresent()) { - return List.of(InterconnectionViewCreateService.class); + return List.of(InterconnectionViewCreateService.class, UtilService.class); } return List.of(); } diff --git a/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/SDVDiagramDescriptionProvider.java b/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/SDVDiagramDescriptionProvider.java index bd658f401..e9d5a00a7 100644 --- a/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/SDVDiagramDescriptionProvider.java +++ b/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/SDVDiagramDescriptionProvider.java @@ -297,7 +297,7 @@ public RepresentationDescription create(IColorProvider colorProvider) { .domainType(domainType) .preconditionExpression(AQLUtils.getSelfServiceCallExpression("canCreateDiagram")) .name(DESCRIPTION_NAME) - .titleExpression(DESCRIPTION_NAME); + .titleExpression("aql:'view'+ Sequence{self.existingElementsCount(), 1}->sum()"); var diagramDescription = diagramDescriptionBuilder.build(); diff --git a/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/StateTransitionViewDiagramDescriptionProvider.java b/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/StateTransitionViewDiagramDescriptionProvider.java index 537e3b602..5805ca9ff 100644 --- a/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/StateTransitionViewDiagramDescriptionProvider.java +++ b/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/StateTransitionViewDiagramDescriptionProvider.java @@ -51,7 +51,7 @@ public RepresentationDescription create(IColorProvider colorProvider) { .domainType(SysMLMetamodelHelper.buildQualifiedName(SysmlPackage.eINSTANCE.getNamespace())) .preconditionExpression(AQLUtils.getSelfServiceCallExpression("canCreateDiagram")) .name(DESCRIPTION_NAME) - .titleExpression(DESCRIPTION_NAME) + .titleExpression("aql:'view'+ Sequence{self.existingElementsCount(), 1}->sum()") .build(); } }; diff --git a/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/StateTransitionViewJavaServiceProvider.java b/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/StateTransitionViewJavaServiceProvider.java index fb4067eea..eb3e7aef0 100644 --- a/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/StateTransitionViewJavaServiceProvider.java +++ b/backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/StateTransitionViewJavaServiceProvider.java @@ -16,6 +16,7 @@ import org.eclipse.sirius.components.view.View; import org.eclipse.sirius.components.view.emf.IJavaServiceProvider; +import org.eclipse.syson.services.UtilService; import org.eclipse.syson.standard.diagrams.view.services.StateTransitionViewCreateService; import org.springframework.context.annotation.Configuration; @@ -34,7 +35,7 @@ public List> getServiceClasses(View view) { .filter(desc -> StateTransitionViewDiagramDescriptionProvider.DESCRIPTION_NAME.equals(desc.getName())) .findFirst(); if (optGVDescription.isPresent()) { - return List.of(StateTransitionViewCreateService.class); + return List.of(StateTransitionViewCreateService.class, UtilService.class); } return List.of(); } diff --git a/backend/views/syson-tree-explorer-view/.settings/org.eclipse.core.resources.prefs b/backend/views/syson-tree-explorer-view/.settings/org.eclipse.core.resources.prefs index 839d647ee..29abf9995 100644 --- a/backend/views/syson-tree-explorer-view/.settings/org.eclipse.core.resources.prefs +++ b/backend/views/syson-tree-explorer-view/.settings/org.eclipse.core.resources.prefs @@ -2,4 +2,5 @@ eclipse.preferences.version=1 encoding//src/main/java=UTF-8 encoding//src/main/resources=UTF-8 encoding//src/test/java=UTF-8 +encoding//src/test/resources=UTF-8 encoding/=UTF-8 diff --git a/backend/views/syson-tree-explorer-view/.settings/org.eclipse.core.runtime.prefs b/backend/views/syson-tree-explorer-view/.settings/org.eclipse.core.runtime.prefs new file mode 100644 index 000000000..a287fefdb --- /dev/null +++ b/backend/views/syson-tree-explorer-view/.settings/org.eclipse.core.runtime.prefs @@ -0,0 +1,3 @@ +#Mon Sep 24 15:04:19 CEST 2007 +eclipse.preferences.version=1 +line.separator=\n diff --git a/backend/views/syson-tree-explorer-view/.settings/org.eclipse.jdt.core.prefs b/backend/views/syson-tree-explorer-view/.settings/org.eclipse.jdt.core.prefs index ddb620c4a..c71ec9c98 100644 --- a/backend/views/syson-tree-explorer-view/.settings/org.eclipse.jdt.core.prefs +++ b/backend/views/syson-tree-explorer-view/.settings/org.eclipse.jdt.core.prefs @@ -1,13 +1,120 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullable.secondary= +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.methodParameters=generate org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.APILeak=warning +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=warning +org.eclipse.jdt.core.compiler.problem.deprecation=warning +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=warning org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore +org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore +org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.missingDefaultCase=warning +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore +org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning +org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore +org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore +org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore +org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled +org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled +org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning +org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning org.eclipse.jdt.core.compiler.processAnnotations=disabled org.eclipse.jdt.core.compiler.release=enabled org.eclipse.jdt.core.compiler.source=17 +org.eclipse.jdt.core.formatter.align_arrows_in_switch_on_columns=false org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 org.eclipse.jdt.core.formatter.align_selector_in_method_invocation_on_expression_first_line=false @@ -85,6 +192,7 @@ org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case_after_arrow=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line @@ -340,6 +448,7 @@ org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_ org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_line_comments=false org.eclipse.jdt.core.formatter.join_lines_in_comments=true org.eclipse.jdt.core.formatter.join_wrapped_lines=false org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_if_empty diff --git a/backend/views/syson-tree-explorer-view/.settings/org.eclipse.jdt.ui.prefs b/backend/views/syson-tree-explorer-view/.settings/org.eclipse.jdt.ui.prefs index 3550682dd..67bdf35bc 100644 --- a/backend/views/syson-tree-explorer-view/.settings/org.eclipse.jdt.ui.prefs +++ b/backend/views/syson-tree-explorer-view/.settings/org.eclipse.jdt.ui.prefs @@ -27,7 +27,7 @@ cleanup.convert_functional_interfaces=false cleanup.convert_to_enhanced_for_loop=false cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true cleanup.convert_to_switch_expressions=false -cleanup.correct_indentation=true +cleanup.correct_indentation=false cleanup.do_while_rather_than_while=true cleanup.double_negation=false cleanup.else_if=false @@ -44,11 +44,11 @@ cleanup.instanceof_keyword=false cleanup.invert_equals=false cleanup.join=false cleanup.lazy_logical_operator=false -cleanup.make_local_variable_final=true +cleanup.make_local_variable_final=false cleanup.make_parameters_final=false cleanup.make_private_fields_final=true cleanup.make_type_abstract_if_missing_method=false -cleanup.make_variable_declarations_final=false +cleanup.make_variable_declarations_final=true cleanup.map_cloning=false cleanup.merge_conditional_blocks=false cleanup.multi_catch=false @@ -125,7 +125,7 @@ cleanup.unlooped_while=false cleanup.unreachable_block=false cleanup.use_anonymous_class_creation=false cleanup.use_autoboxing=false -cleanup.use_blocks=false +cleanup.use_blocks=true cleanup.use_blocks_only_for_return_and_throw=false cleanup.use_directly_map_method=false cleanup.use_lambda=true @@ -143,6 +143,7 @@ cleanup.valueof_rather_than_instantiation=false cleanup_profile=_SysON cleanup_settings_version=2 eclipse.preferences.version=1 +editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true formatter_profile=_SysON formatter_settings_version=23 org.eclipse.jdt.ui.ignorelowercasenames=true @@ -150,4 +151,147 @@ org.eclipse.jdt.ui.importorder=com;fr;java;javax;org; org.eclipse.jdt.ui.javadoc=true org.eclipse.jdt.ui.ondemandthreshold=99 org.eclipse.jdt.ui.staticondemandthreshold=99 -org.eclipse.jdt.ui.text.custom_code_templates=