From ed968971ca0a179937341a4a37436b89e6c36bc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20ROU=C3=8BN=C3=89?= Date: Fri, 10 Oct 2025 15:36:00 +0200 Subject: [PATCH] [1589] Add filter to hide expose elements in SysON Explorer View MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: https://github.com/eclipse-syson/syson/issues/1589 Signed-off-by: Florian ROUËNÉ --- CHANGELOG.adoc | 1 + ...xplorerViewControllerIntegrationTests.java | 35 +++++++++++++ .../ExplorerView-DirectEdit.sql | 6 ++- ...lementsTreeItemAlteredContentProvider.java | 47 ++++++++++++++++++ .../view/filters/SysONTreeFilterProvider.java | 5 +- .../services/SysONExplorerFilterService.java | 11 ++++ .../SysONExplorerTreePathProvider.java | 4 ++ .../api/ISysONExplorerFilterService.java | 4 +- .../explorer-hide-expose-element-filter.png | Bin 0 -> 16721 bytes .../assets/images/hands-on-filter-element.png | Bin 13084 -> 30766 bytes .../modules/user-manual/assets/images/img.png | Bin 0 -> 24971 bytes .../pages/hands-on/how-tos/explorer.adoc | 7 ++- .../pages/release-notes/2025.12.0.adoc | 4 ++ 13 files changed, 118 insertions(+), 6 deletions(-) create mode 100644 backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/filters/HideExposeElementsTreeItemAlteredContentProvider.java create mode 100644 doc/content/modules/user-manual/assets/images/explorer-hide-expose-element-filter.png create mode 100644 doc/content/modules/user-manual/assets/images/img.png 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 0000000000000000000000000000000000000000..81b28110bd1cc568de31099e52b528c773eadc13 GIT binary patch literal 16721 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 literal 0 HcmV?d00001 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 6bc9367c0aa2bfda3855b748f017a51d79d9519f..000f5dafb3b0f03f998f7016050ef1416bfdc842 100644 GIT binary patch literal 30766 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 W!Bz@z0&DzU5*3mX%zF9u{r>~9j68<` literal 13084 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 YIj=Q{ek_s!SIDtsrIn=eCG|f32dq%W=Kufz 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 0000000000000000000000000000000000000000..2816e2ca666de7bdbcb0698cbe7ab5d745756f0b GIT binary patch literal 24971 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 X+bUfV83(|hEc~S)qXI6Fe(d{S(1`~C literal 0 HcmV?d00001 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