diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 462563b2e..c44f26d48 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -17,6 +17,7 @@ === New features - https://github.com/eclipse-syson/syson/issues/1581[#1581] [diagrams] Display inherited `PortUsages` as border nodes in diagrams +- https://github.com/eclipse-syson/syson/issues/1589[#1589] [explorer] Add a filter to hide expose elements in `ViewUsage` == v2025.10.0 diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/explorer/view/ExplorerViewControllerIntegrationTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/explorer/view/ExplorerViewControllerIntegrationTests.java index 7c12f32de..1315c0d61 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/explorer/view/ExplorerViewControllerIntegrationTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/explorer/view/ExplorerViewControllerIntegrationTests.java @@ -142,6 +142,28 @@ public void testDirectEditOnViewUsage() { } + @DisplayName("GIVEN the SysON Explorer View, WHEN hide expose element filter is active, THEN the expose element are not return as tree item") + @Sql(scripts = { ExplorerViewDirectEditTestProjectData.SCRIPT_PATH }, executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, + config = @SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)) + @Sql(scripts = { "/scripts/cleanup.sql" }, executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, config = @SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)) + @Test + public void testHideExposeElementFilter() { + var expandedIds = this.getAllTreeItemIds(); + var activatedFilters = List.of(SysONTreeFilterProvider.HIDE_ROOT_NAMESPACES_ID, SysONTreeFilterProvider.HIDE_MEMBERSHIPS_TREE_ITEM_FILTER_ID, SysONTreeFilterProvider.HIDE_EXPOSE_ELEMENTS_TREE_ITEM_FILTER_ID); + var treeRepresentationId = this.representationIdBuilder.buildExplorerRepresentationId(this.sysONTreeViewDescriptionProvider.getDescriptionId(), expandedIds, activatedFilters); + + var treeEventInput = new ExplorerEventInput(UUID.randomUUID(), ExplorerViewDirectEditTestProjectData.EDITING_CONTEXT_ID, treeRepresentationId); + var treeFlux = this.treeEventSubscriptionRunner.run(treeEventInput); + + var hasNoExposeElement = assertRefreshedTreeThat(tree -> assertThat(tree.getChildren()).allSatisfy(this::assertNoExposeChildren)); + + StepVerifier.create(treeFlux) + .consumeNextWith(hasNoExposeElement) + .thenCancel() + .verify(Duration.ofSeconds(100)); + + } + private List getAllTreeItemIds() { var optionalEditingContext = this.editingContextSearchService.findById(ExplorerViewDirectEditTestProjectData.EDITING_CONTEXT_ID) .filter(IEMFEditingContext.class::isInstance) @@ -179,4 +201,17 @@ private Runnable triggerDirectEditTreeItemLabel(String editingContextId, String assertThat(initialDirectEditLabel).isEqualTo(expectedLabel); }; } + + private void assertNoExposeChildren(TreeItem item) { + if (item == null) { + return; + } + assertThat(item.getKind()).doesNotEndWith("entity=MembershipExpose"); + List children = item.getChildren(); + if (children != null) { + for (TreeItem child : children) { + this.assertNoExposeChildren(child); + } + } + } } diff --git a/backend/application/syson-application/src/test/resources/scripts/database-content/ExplorerView-DirectEdit.sql b/backend/application/syson-application/src/test/resources/scripts/database-content/ExplorerView-DirectEdit.sql index e74d4361c..213d916aa 100644 --- a/backend/application/syson-application/src/test/resources/scripts/database-content/ExplorerView-DirectEdit.sql +++ b/backend/application/syson-application/src/test/resources/scripts/database-content/ExplorerView-DirectEdit.sql @@ -19,14 +19,14 @@ SET row_security = off; -- Data for Name: semantic_data; Type: TABLE DATA; Schema: public; Owner: dbuser -- -INSERT INTO public.semantic_data (id, created_on, last_modified_on) VALUES ('4b5adc0c-90a2-48c6-9ae7-c3fc035ff38b', '2024-11-05 13:55:21.094331+00', '2025-09-25 12:24:39.579767+00'); +INSERT INTO public.semantic_data (id, created_on, last_modified_on) VALUES ('4b5adc0c-90a2-48c6-9ae7-c3fc035ff38b', '2024-11-05 13:55:21.094331+00', '2025-10-10 13:10:27.605021+00'); -- -- Data for Name: document; Type: TABLE DATA; Schema: public; Owner: dbuser -- -INSERT INTO public.document (id, semantic_data_id, name, content, created_on, last_modified_on, is_read_only) VALUES ('9a59f836-1df2-4e5d-803c-9eb0ba7031aa', '4b5adc0c-90a2-48c6-9ae7-c3fc035ff38b', 'SysMLv2.sysml', '{"json":{"version":"1.0","encoding":"utf-8"},"ns":{"sysml":"http://www.eclipse.org/syson/sysml"},"migration":{"lastMigrationPerformed":"OneDiagramDescriptionMigrationParticipant$$SpringCGLIB$$0","migrationVersion":"2025.8.0-202508220000"},"content":[{"id":"686dee81-b94c-4393-b15b-65dd73dfdd24","eClass":"sysml:Namespace","data":{"elementId":"bea38691-2169-4b70-87ac-ffa289824fde","ownedRelationship":[{"id":"e3c74bf2-55ba-4b0d-a4f5-9ab326f372c4","eClass":"sysml:OwningMembership","data":{"elementId":"a6fce401-4aaf-47c8-88a6-d75462e3c6db","ownedRelatedElement":[{"id":"127c38e7-0e15-4232-aa02-76b342e3324a","eClass":"sysml:Package","data":{"declaredName":"Package1","elementId":"d51791b8-6666-46e3-8c60-c975e1f3e490","ownedRelationship":[{"id":"0642ab55-a317-40c1-aa52-cc16306d937b","eClass":"sysml:NamespaceImport","data":{"elementId":"9f902e4a-4ca9-4787-92d8-713b3b06c490","importedNamespace":"ec12f223-8639-42a3-96c2-34163c6eccce"}},{"id":"883deb19-59a8-4c58-8887-978bf11fffcd","eClass":"sysml:OwningMembership","data":{"elementId":"be359545-8e91-439c-8bdf-0638ab702f9d","ownedRelatedElement":[{"id":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e","eClass":"sysml:PartUsage","data":{"declaredName":"p","elementId":"d99634bb-d4e0-4afa-bbe4-ee553005937d","ownedRelationship":[{"id":"1ba5c6e8-1c6b-44f6-8a05-f82f2c7a2538","eClass":"sysml:FeatureTyping","data":{"elementId":"9bfede6e-a370-451e-aa33-c1102942dcb7","type":"0a70220d-707e-4a88-84dc-6aa43aa97269","typedFeature":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e"}},{"id":"d0af8b7c-1a69-4817-be08-13fd7379fd81","eClass":"sysml:FeatureMembership","data":{"elementId":"9700175b-699c-4201-bfbd-8ce3d90cbc5f","ownedRelatedElement":[{"id":"c3b15305-e5fb-44a9-96a1-4e0245fc4f2c","eClass":"sysml:ViewUsage","data":{"declaredName":"view4","elementId":"bdedde81-86db-4f74-887b-20af07833c25","ownedRelationship":[{"id":"395ef21e-36d7-4d9a-9586-99a631fcedf0","eClass":"sysml:FeatureTyping","data":{"elementId":"edb72ff4-e724-4387-9dd6-7b3e7095607e","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#6518462a-2f51-5276-b95e-69ee5193db38","typedFeature":"c3b15305-e5fb-44a9-96a1-4e0245fc4f2c"}}]}}]}}],"isComposite":true}}]}},{"id":"a5e72c79-5496-4770-a4c7-296a56f47617","eClass":"sysml:OwningMembership","data":{"elementId":"4e21e33f-7920-49fe-8889-b4fab257dc78","ownedRelatedElement":[{"id":"17df78b1-ad06-4861-827e-c1cf15eed2a5","eClass":"sysml:ViewUsage","data":{"declaredName":"view1","elementId":"0a0c297f-a58b-4ef8-a4f6-8d0ff197b238","ownedRelationship":[{"id":"60d64858-90b3-44ed-af19-b966d72a8a8b","eClass":"sysml:FeatureTyping","data":{"elementId":"da3ad6ee-3e58-4ed4-a41a-88f7b3d1dbfa","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#03904fdf-d6f2-57b1-92d5-95d36b8208dc","typedFeature":"17df78b1-ad06-4861-827e-c1cf15eed2a5"}}],"isComposite":true}}]}},{"id":"28feab55-0a2d-4d69-85d5-29fe3b069b71","eClass":"sysml:OwningMembership","data":{"elementId":"41ccfd33-8013-4684-82b5-f279decaad1b","ownedRelatedElement":[{"id":"c7a3fc13-d643-469c-a0ad-5939869a2bee","eClass":"sysml:ViewUsage","data":{"declaredName":"view2","elementId":"dd76563a-251d-4c3e-a4bf-108304672629","ownedRelationship":[{"id":"ed5facc4-54a7-41f9-b4ec-6f08fc4061b5","eClass":"sysml:FeatureTyping","data":{"elementId":"c2d81d09-5098-4775-bb74-b746a70fe510","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#e1e8729f-a571-520c-b3f8-1b8dcdf5014d","typedFeature":"c7a3fc13-d643-469c-a0ad-5939869a2bee"}}]}}]}},{"id":"505066be-cc52-4edb-a1df-17a29242e4be","eClass":"sysml:OwningMembership","data":{"elementId":"c20baa6f-ffc6-4178-8dc1-e074b9e68782","ownedRelatedElement":[{"id":"cca0616d-49d3-4311-a390-2511576cf759","eClass":"sysml:ViewUsage","data":{"declaredName":"view3","elementId":"c691780a-a8a9-4444-acba-d33cfd628b73","ownedRelationship":[{"id":"82cc5a01-8b63-4e60-a7b1-df7631d00e22","eClass":"sysml:FeatureTyping","data":{"elementId":"5fa23d7d-50a7-407a-a631-f800ad514d8c","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#073ba87b-4f0a-5a2e-8ce5-71f9dc645098","typedFeature":"cca0616d-49d3-4311-a390-2511576cf759"}}]}}]}}]}}]}},{"id":"13001db6-0353-48ba-8bec-157bbd9a3b57","eClass":"sysml:OwningMembership","data":{"elementId":"cd1165da-f4a1-4962-90f6-d117e8c7a354","ownedRelatedElement":[{"id":"ec12f223-8639-42a3-96c2-34163c6eccce","eClass":"sysml:Package","data":{"declaredName":"Package2","elementId":"40c37406-f22d-4424-981f-99935f039244","ownedRelationship":[{"id":"bbe9c050-d108-4807-8c62-7d20c31817f6","eClass":"sysml:OwningMembership","data":{"elementId":"c0c5cec5-6606-4145-98c7-eef80964e95a","ownedRelatedElement":[{"id":"0a70220d-707e-4a88-84dc-6aa43aa97269","eClass":"sysml:PartDefinition","data":{"declaredName":"PartDefX","elementId":"47acdb65-63f9-4bd5-8675-e2596241dc2c"}}]}}]}}]}}]}}]}', '2025-09-25 12:24:39.579761+00', '2025-09-25 12:24:39.579761+00', false); +INSERT INTO public.document (id, semantic_data_id, name, content, created_on, last_modified_on, is_read_only) VALUES ('9a59f836-1df2-4e5d-803c-9eb0ba7031aa', '4b5adc0c-90a2-48c6-9ae7-c3fc035ff38b', 'SysMLv2.sysml', '{"json":{"version":"1.0","encoding":"utf-8"},"ns":{"sysml":"http://www.eclipse.org/syson/sysml"},"migration":{"lastMigrationPerformed":"OneDiagramDescriptionMigrationParticipant$$SpringCGLIB$$0","migrationVersion":"2025.8.0-202508220000"},"content":[{"id":"686dee81-b94c-4393-b15b-65dd73dfdd24","eClass":"sysml:Namespace","data":{"elementId":"bea38691-2169-4b70-87ac-ffa289824fde","ownedRelationship":[{"id":"e3c74bf2-55ba-4b0d-a4f5-9ab326f372c4","eClass":"sysml:OwningMembership","data":{"elementId":"a6fce401-4aaf-47c8-88a6-d75462e3c6db","ownedRelatedElement":[{"id":"127c38e7-0e15-4232-aa02-76b342e3324a","eClass":"sysml:Package","data":{"declaredName":"Package1","elementId":"d51791b8-6666-46e3-8c60-c975e1f3e490","ownedRelationship":[{"id":"0642ab55-a317-40c1-aa52-cc16306d937b","eClass":"sysml:NamespaceImport","data":{"elementId":"9f902e4a-4ca9-4787-92d8-713b3b06c490","importedNamespace":"ec12f223-8639-42a3-96c2-34163c6eccce"}},{"id":"883deb19-59a8-4c58-8887-978bf11fffcd","eClass":"sysml:OwningMembership","data":{"elementId":"be359545-8e91-439c-8bdf-0638ab702f9d","ownedRelatedElement":[{"id":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e","eClass":"sysml:PartUsage","data":{"declaredName":"p","elementId":"d99634bb-d4e0-4afa-bbe4-ee553005937d","ownedRelationship":[{"id":"1ba5c6e8-1c6b-44f6-8a05-f82f2c7a2538","eClass":"sysml:FeatureTyping","data":{"elementId":"9bfede6e-a370-451e-aa33-c1102942dcb7","type":"0a70220d-707e-4a88-84dc-6aa43aa97269","typedFeature":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e"}},{"id":"d0af8b7c-1a69-4817-be08-13fd7379fd81","eClass":"sysml:FeatureMembership","data":{"elementId":"9700175b-699c-4201-bfbd-8ce3d90cbc5f","ownedRelatedElement":[{"id":"c3b15305-e5fb-44a9-96a1-4e0245fc4f2c","eClass":"sysml:ViewUsage","data":{"declaredName":"view4","elementId":"bdedde81-86db-4f74-887b-20af07833c25","ownedRelationship":[{"id":"395ef21e-36d7-4d9a-9586-99a631fcedf0","eClass":"sysml:FeatureTyping","data":{"elementId":"edb72ff4-e724-4387-9dd6-7b3e7095607e","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#6518462a-2f51-5276-b95e-69ee5193db38","typedFeature":"c3b15305-e5fb-44a9-96a1-4e0245fc4f2c"}}]}}]}}],"isComposite":true}}]}},{"id":"a5e72c79-5496-4770-a4c7-296a56f47617","eClass":"sysml:OwningMembership","data":{"elementId":"4e21e33f-7920-49fe-8889-b4fab257dc78","ownedRelatedElement":[{"id":"17df78b1-ad06-4861-827e-c1cf15eed2a5","eClass":"sysml:ViewUsage","data":{"declaredName":"view1","elementId":"0a0c297f-a58b-4ef8-a4f6-8d0ff197b238","ownedRelationship":[{"id":"60d64858-90b3-44ed-af19-b966d72a8a8b","eClass":"sysml:FeatureTyping","data":{"elementId":"da3ad6ee-3e58-4ed4-a41a-88f7b3d1dbfa","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#03904fdf-d6f2-57b1-92d5-95d36b8208dc","typedFeature":"17df78b1-ad06-4861-827e-c1cf15eed2a5"}},{"id":"af34119d-aacc-46ca-a981-8a27cda51335","eClass":"sysml:MembershipExpose","data":{"elementId":"a8f61be3-c17e-4084-ad2f-b42aca0c816b","importedMembership":"883deb19-59a8-4c58-8887-978bf11fffcd"}}],"isComposite":true}}]}},{"id":"28feab55-0a2d-4d69-85d5-29fe3b069b71","eClass":"sysml:OwningMembership","data":{"elementId":"41ccfd33-8013-4684-82b5-f279decaad1b","ownedRelatedElement":[{"id":"c7a3fc13-d643-469c-a0ad-5939869a2bee","eClass":"sysml:ViewUsage","data":{"declaredName":"view2","elementId":"dd76563a-251d-4c3e-a4bf-108304672629","ownedRelationship":[{"id":"ed5facc4-54a7-41f9-b4ec-6f08fc4061b5","eClass":"sysml:FeatureTyping","data":{"elementId":"c2d81d09-5098-4775-bb74-b746a70fe510","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#e1e8729f-a571-520c-b3f8-1b8dcdf5014d","typedFeature":"c7a3fc13-d643-469c-a0ad-5939869a2bee"}}]}}]}},{"id":"505066be-cc52-4edb-a1df-17a29242e4be","eClass":"sysml:OwningMembership","data":{"elementId":"c20baa6f-ffc6-4178-8dc1-e074b9e68782","ownedRelatedElement":[{"id":"cca0616d-49d3-4311-a390-2511576cf759","eClass":"sysml:ViewUsage","data":{"declaredName":"view3","elementId":"c691780a-a8a9-4444-acba-d33cfd628b73","ownedRelationship":[{"id":"82cc5a01-8b63-4e60-a7b1-df7631d00e22","eClass":"sysml:FeatureTyping","data":{"elementId":"5fa23d7d-50a7-407a-a631-f800ad514d8c","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#073ba87b-4f0a-5a2e-8ce5-71f9dc645098","typedFeature":"cca0616d-49d3-4311-a390-2511576cf759"}}]}}]}}]}}]}},{"id":"13001db6-0353-48ba-8bec-157bbd9a3b57","eClass":"sysml:OwningMembership","data":{"elementId":"cd1165da-f4a1-4962-90f6-d117e8c7a354","ownedRelatedElement":[{"id":"ec12f223-8639-42a3-96c2-34163c6eccce","eClass":"sysml:Package","data":{"declaredName":"Package2","elementId":"40c37406-f22d-4424-981f-99935f039244","ownedRelationship":[{"id":"bbe9c050-d108-4807-8c62-7d20c31817f6","eClass":"sysml:OwningMembership","data":{"elementId":"c0c5cec5-6606-4145-98c7-eef80964e95a","ownedRelatedElement":[{"id":"0a70220d-707e-4a88-84dc-6aa43aa97269","eClass":"sysml:PartDefinition","data":{"declaredName":"PartDefX","elementId":"47acdb65-63f9-4bd5-8675-e2596241dc2c"}}]}}]}}]}}]}}]}', '2025-10-10 13:10:27.603838+00', '2025-10-10 13:10:27.603838+00', false); -- @@ -71,12 +71,14 @@ INSERT INTO public.project_semantic_data (id, project_id, semantic_data_id, name -- Data for Name: representation_metadata; Type: TABLE DATA; Schema: public; Owner: dbuser -- +INSERT INTO public.representation_metadata (id, target_object_id, description_id, label, kind, created_on, last_modified_on, documentation, semantic_data_id) VALUES ('6f8f34ed-5a94-4d60-878e-df1e0024e18d', '17df78b1-ad06-4861-827e-c1cf15eed2a5', 'siriusComponents://representationDescription?kind=diagramDescription&sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=db495705-e917-319b-af55-a32ad63f4089', 'view1', 'siriusComponents://representation?type=Diagram', '2025-10-10 13:10:22.075146+00', '2025-10-10 13:10:22.075146+00', '', '4b5adc0c-90a2-48c6-9ae7-c3fc035ff38b'); -- -- Data for Name: representation_content; Type: TABLE DATA; Schema: public; Owner: dbuser -- +INSERT INTO public.representation_content (id, content, last_migration_performed, migration_version, created_on, last_modified_on) VALUES ('6f8f34ed-5a94-4d60-878e-df1e0024e18d', '{"id":"6f8f34ed-5a94-4d60-878e-df1e0024e18d","kind":"siriusComponents://representation?type=Diagram","targetObjectId":"17df78b1-ad06-4861-827e-c1cf15eed2a5","descriptionId":"siriusComponents://representationDescription?kind=diagramDescription&sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=db495705-e917-319b-af55-a32ad63f4089","nodes":[{"id":"dc68d71b-976f-3a0d-bdd0-19a2ecc862ab","type":"node:rectangle","targetObjectId":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"p","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=bd119f62-45c5-3868-9727-9f954e05e4fa","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Normal","collapsingState":"EXPANDED","insideLabel":{"id":"8cb75c46-938d-35e1-9e4f-d2089433bb9b","text":"«part»\np : PartDefX","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/PartUsage.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"IF_CHILDREN","overflowStrategy":"WRAP","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"#ffffff","borderColor":"#000000","borderSize":1,"borderRadius":10,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":false,"topGap":0,"bottomGap":0,"growableNodeIds":["siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=30a9de2f-14f9-3de6-b68e-06b79b675555","siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c47f5c71-1cc7-3f23-8c03-c335c2d13c66"],"kind":"List"}},"borderNodes":[],"childNodes":[{"id":"dede2844-f375-3de8-ad90-fd058550433a","type":"node:rectangle","targetObjectId":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"p","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c901d8ce-4c57-3ede-8fdb-3c5aa91b67ba","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"bcd64d0d-c688-3474-93ca-49eb3d512083","text":"doc","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"e2c6b28c-ac7c-340b-a4aa-017986b551ac","type":"node:rectangle","targetObjectId":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"p","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=a1300415-10e4-37bb-87ed-206ec95079f0","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"8c334123-9b8a-360d-b613-e2fc9e729d64","text":"attributes","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"9b09a532-d0b2-31d3-9fdd-f62c53dc57fa","type":"node:rectangle","targetObjectId":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"p","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=f664d1f2-e48d-3f5a-a073-141fc0ddc418","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"6ed71ea1-5334-3106-b0e6-3ba2d961ec3e","text":"actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"4cbbaee7-f2c7-3893-9a86-c7a67880b965","type":"node:rectangle","targetObjectId":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"p","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=cc126737-2324-3253-ae11-37d5b0dee7b9","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"ac5dcb13-0312-3dfd-a91a-b4a2b74c06a4","text":"ports","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"24d542c4-575a-3cf6-a097-49a2df56f0fd","type":"node:rectangle","targetObjectId":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"p","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=30a9de2f-14f9-3de6-b68e-06b79b675555","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"fe95c6d9-54db-30dd-8704-066f4d51796b","text":"action flow","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"5a7c3c05-3a47-3b26-b0c5-3655a41ad030","type":"node:rectangle","targetObjectId":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"p","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c47f5c71-1cc7-3f23-8c03-c335c2d13c66","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"d957dd04-cbe7-3414-ae12-5aaf8c0852c7","text":"state transition","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"30235f78-53fe-3801-a2f4-0b91e0ae8fd9","type":"node:rectangle","targetObjectId":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"p","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c97028bb-f0ba-3e9e-97a6-170cb6345d62","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"948708bb-88e5-36dd-9b93-02854e2682c6","text":"states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"50f41a24-ae63-30d6-9f27-7a0922caf33f","type":"node:rectangle","targetObjectId":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"p","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=a57f3491-bd3e-38c6-bb8b-b0a4b570bd3a","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"4729c095-1f96-39e7-ac6d-a7dac5e7a968","text":"exhibit states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"pinned":false,"customizedStyleProperties":[]},{"id":"be111116-0ba4-37d6-a139-5fe3ad8ba7dd","type":"node:rectangle","targetObjectId":"a4f51a38-bfeb-4e0d-a870-55f8fe90405e","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"p","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=fe94bbc6-f9c3-34cb-90fa-34a6701f9c17","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"aab1e1dc-2901-3fc2-92a0-feb93644aee3","text":"perform actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"pinned":false,"customizedStyleProperties":[]}],"defaultWidth":155,"defaultHeight":60,"labelEditable":true,"pinned":false,"customizedStyleProperties":[]}],"edges":[],"layoutData":{"nodeLayoutData":{"50f41a24-ae63-30d6-9f27-7a0922caf33f":{"id":"50f41a24-ae63-30d6-9f27-7a0922caf33f","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"handleLayoutData":[]},"30235f78-53fe-3801-a2f4-0b91e0ae8fd9":{"id":"30235f78-53fe-3801-a2f4-0b91e0ae8fd9","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"handleLayoutData":[]},"5a7c3c05-3a47-3b26-b0c5-3655a41ad030":{"id":"5a7c3c05-3a47-3b26-b0c5-3655a41ad030","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":150.0},"resizedByUser":false,"handleLayoutData":[]},"4cbbaee7-f2c7-3893-9a86-c7a67880b965":{"id":"4cbbaee7-f2c7-3893-9a86-c7a67880b965","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"handleLayoutData":[]},"e2c6b28c-ac7c-340b-a4aa-017986b551ac":{"id":"e2c6b28c-ac7c-340b-a4aa-017986b551ac","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"handleLayoutData":[]},"be111116-0ba4-37d6-a139-5fe3ad8ba7dd":{"id":"be111116-0ba4-37d6-a139-5fe3ad8ba7dd","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"handleLayoutData":[]},"9b09a532-d0b2-31d3-9fdd-f62c53dc57fa":{"id":"9b09a532-d0b2-31d3-9fdd-f62c53dc57fa","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"handleLayoutData":[]},"dc68d71b-976f-3a0d-bdd0-19a2ecc862ab":{"id":"dc68d71b-976f-3a0d-bdd0-19a2ecc862ab","position":{"x":413.8747209194891,"y":-43.641489250502886},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"handleLayoutData":[]},"dede2844-f375-3de8-ad90-fd058550433a":{"id":"dede2844-f375-3de8-ad90-fd058550433a","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"handleLayoutData":[]},"24d542c4-575a-3cf6-a097-49a2df56f0fd":{"id":"24d542c4-575a-3cf6-a097-49a2df56f0fd","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":150.0},"resizedByUser":false,"handleLayoutData":[]}},"edgeLayoutData":{},"labelLayoutData":{}}}', 'none', '2025.8.0-202506301700', '2025-10-10 13:10:22.446645+00', '2025-10-10 13:10:27.727623+00'); -- diff --git a/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/filters/HideExposeElementsTreeItemAlteredContentProvider.java b/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/filters/HideExposeElementsTreeItemAlteredContentProvider.java new file mode 100644 index 000000000..93677039b --- /dev/null +++ b/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/filters/HideExposeElementsTreeItemAlteredContentProvider.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2025 Obeo. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.tree.explorer.view.filters; + +import java.util.List; +import java.util.Objects; + +import org.eclipse.sirius.components.representations.VariableManager; +import org.eclipse.sirius.web.application.views.explorer.services.api.IExplorerTreeItemAlteredContentProvider; +import org.eclipse.syson.tree.explorer.view.services.api.ISysONExplorerFilterService; +import org.springframework.stereotype.Service; + +/** + * An implementation of {@link IExplorerTreeItemAlteredContentProvider} allowing to hide exposed elements tree items from + * Explorer tree. + * + * @author frouene + */ +@Service +public class HideExposeElementsTreeItemAlteredContentProvider implements IExplorerTreeItemAlteredContentProvider { + + private final ISysONExplorerFilterService filterService; + + public HideExposeElementsTreeItemAlteredContentProvider(ISysONExplorerFilterService filterService) { + this.filterService = Objects.requireNonNull(filterService); + } + + @Override + public boolean canHandle(Object object, List activeFilterIds) { + return activeFilterIds.contains(SysONTreeFilterProvider.HIDE_EXPOSE_ELEMENTS_TREE_ITEM_FILTER_ID); + } + + @Override + public List apply(List computedChildren, VariableManager variableManager) { + return this.filterService.hideExposeElements(computedChildren); + } +} diff --git a/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/filters/SysONTreeFilterProvider.java b/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/filters/SysONTreeFilterProvider.java index ab96ee27e..35865c438 100644 --- a/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/filters/SysONTreeFilterProvider.java +++ b/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/filters/SysONTreeFilterProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2024 Obeo. + * Copyright (c) 2024, 2025 Obeo. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at @@ -39,6 +39,8 @@ public class SysONTreeFilterProvider implements ITreeFilterProvider { public static final String HIDE_ROOT_NAMESPACES_ID = UUID.nameUUIDFromBytes("SysONTreeRootNamespacesFilter".getBytes()).toString(); + public static final String HIDE_EXPOSE_ELEMENTS_TREE_ITEM_FILTER_ID = UUID.nameUUIDFromBytes("SysONTreeExposeElementsFilter".getBytes()).toString(); + @Override public List get(String editingContextId, TreeDescription treeDescription, String representationId) { List filters = new ArrayList<>(); @@ -47,6 +49,7 @@ public List get(String editingContextId, TreeDescription treeDescrip filters.add(new TreeFilter(HIDE_SYSML_STANDARD_LIBRARIES_TREE_FILTER_ID, "Hide SysML Standard Libraries", false)); filters.add(new TreeFilter(HIDE_USER_LIBRARIES_TREE_FILTER_ID, "Hide User Libraries", false)); filters.add(new TreeFilter(HIDE_ROOT_NAMESPACES_ID, "Hide Root Namespaces", true)); + filters.add(new TreeFilter(HIDE_EXPOSE_ELEMENTS_TREE_ITEM_FILTER_ID, "Hide Expose Elements", true)); return filters; } } diff --git a/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/services/SysONExplorerFilterService.java b/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/services/SysONExplorerFilterService.java index 6fba5a595..6cf0f7fa0 100644 --- a/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/services/SysONExplorerFilterService.java +++ b/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/services/SysONExplorerFilterService.java @@ -19,6 +19,7 @@ import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.syson.services.UtilService; import org.eclipse.syson.services.api.ISysONResourceService; +import org.eclipse.syson.sysml.Expose; import org.eclipse.syson.sysml.Membership; import org.eclipse.syson.sysml.Namespace; import org.eclipse.syson.sysml.util.ElementUtil; @@ -106,6 +107,13 @@ public List hideRootNamespace(List elements) { return alteredElements; } + @Override + public List hideExposeElements(List elements) { + return elements.stream() + .filter(element -> !(element instanceof Expose)) + .toList(); + } + @Override public List applyFilters(List elements, List activeFilterIds) { List alteredElements = new ArrayList<>(elements); @@ -124,6 +132,9 @@ public List applyFilters(List elements, List activeFilterIds) if (activeFilterIds.contains(SysONTreeFilterProvider.HIDE_ROOT_NAMESPACES_ID)) { alteredElements = this.hideRootNamespace(alteredElements); } + if (activeFilterIds.contains(SysONTreeFilterProvider.HIDE_EXPOSE_ELEMENTS_TREE_ITEM_FILTER_ID)) { + alteredElements = this.hideExposeElements(alteredElements); + } return alteredElements; } diff --git a/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/services/SysONExplorerTreePathProvider.java b/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/services/SysONExplorerTreePathProvider.java index 3c950c3c2..8694345eb 100644 --- a/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/services/SysONExplorerTreePathProvider.java +++ b/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/services/SysONExplorerTreePathProvider.java @@ -33,6 +33,7 @@ import org.eclipse.sirius.components.trees.Tree; import org.eclipse.sirius.components.trees.description.TreeDescription; import org.eclipse.syson.services.UtilService; +import org.eclipse.syson.sysml.Expose; import org.eclipse.syson.sysml.Membership; import org.eclipse.syson.sysml.Namespace; import org.eclipse.syson.tree.explorer.view.SysONExplorerTreeDescriptionProvider; @@ -150,6 +151,9 @@ private List applyFilters(List elements, List activeFilt if (activeFilterIds.contains(SysONTreeFilterProvider.HIDE_ROOT_NAMESPACES_ID)) { alteredElements.removeIf(e -> e instanceof Namespace ns && this.utilService.isRootNamespace(ns)); } + if (activeFilterIds.contains(SysONTreeFilterProvider.HIDE_EXPOSE_ELEMENTS_TREE_ITEM_FILTER_ID)) { + alteredElements.removeIf(Expose.class::isInstance); + } return alteredElements; } } diff --git a/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/services/api/ISysONExplorerFilterService.java b/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/services/api/ISysONExplorerFilterService.java index cecb6bfcd..8f8d4fb8f 100644 --- a/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/services/api/ISysONExplorerFilterService.java +++ b/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/services/api/ISysONExplorerFilterService.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2024 Obeo. + * Copyright (c) 2024, 2025 Obeo. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at @@ -37,5 +37,7 @@ public interface ISysONExplorerFilterService { List hideRootNamespace(List elements); + List hideExposeElements(List elements); + List applyFilters(List elements, List activeFilterIds); } diff --git a/doc/content/modules/user-manual/assets/images/explorer-hide-expose-element-filter.png b/doc/content/modules/user-manual/assets/images/explorer-hide-expose-element-filter.png new file mode 100644 index 000000000..81b28110b Binary files /dev/null and b/doc/content/modules/user-manual/assets/images/explorer-hide-expose-element-filter.png differ diff --git a/doc/content/modules/user-manual/assets/images/hands-on-filter-element.png b/doc/content/modules/user-manual/assets/images/hands-on-filter-element.png index 6bc9367c0..000f5dafb 100644 Binary files a/doc/content/modules/user-manual/assets/images/hands-on-filter-element.png and b/doc/content/modules/user-manual/assets/images/hands-on-filter-element.png differ diff --git a/doc/content/modules/user-manual/assets/images/img.png b/doc/content/modules/user-manual/assets/images/img.png new file mode 100644 index 000000000..2816e2ca6 Binary files /dev/null and b/doc/content/modules/user-manual/assets/images/img.png differ diff --git a/doc/content/modules/user-manual/pages/hands-on/how-tos/explorer.adoc b/doc/content/modules/user-manual/pages/hands-on/how-tos/explorer.adoc index d20f60541..c58ef975a 100644 --- a/doc/content/modules/user-manual/pages/hands-on/how-tos/explorer.adoc +++ b/doc/content/modules/user-manual/pages/hands-on/how-tos/explorer.adoc @@ -58,11 +58,14 @@ Ensure the desired tree items are expanded to effectively use the filter and hig [#filter-explorer] === Filter from kind -Three filters are available in the {explorer} to filter element by kind: +Six filters are available in the {explorer} to filter element by kind: * Hide Memberships, * Hide {kerml} Standard Libraries, * Hide {sysml} Standard Libraries. +* Hide Root Namespaces +* Hide User Librairies +* Hide Root Namespaces These filters allow to clear the {explorer} view. By hiding the technical elements, only the data directly exploited by the user are displayed, which make the model more readable in the {explorer} view. @@ -72,4 +75,4 @@ To filter elements in the {explorer} by their kind using the filter tool: . Click filter button, . Select filters to activate. -image::hands-on-filter-element.png[Filter kind] \ No newline at end of file +image::hands-on-filter-element.png[Filter kind] diff --git a/doc/content/modules/user-manual/pages/release-notes/2025.12.0.adoc b/doc/content/modules/user-manual/pages/release-notes/2025.12.0.adoc index a552dba93..c0557c8dd 100644 --- a/doc/content/modules/user-manual/pages/release-notes/2025.12.0.adoc +++ b/doc/content/modules/user-manual/pages/release-notes/2025.12.0.adoc @@ -10,6 +10,10 @@ image::gv-inherited-port.png[Inherited port, width=65%,height=65%] +- Add a new filter in the explorer to hide expose elements in `ViewUsage`. + +image::explorer-hide-expose-element-filter.png[Hide expose element filter, width=65%,height=65%] + == Bug fixes == Improvements