From 49a4ce76295cd62af33b320b3466c6a5d405bb56 Mon Sep 17 00:00:00 2001 From: Pierre-Charles David Date: Mon, 22 Jun 2026 09:53:25 +0200 Subject: [PATCH] [2284] Move expression-related tools in diagram palette into the default Edit section Bug: https://github.com/eclipse-syson/syson/issues/2284 Signed-off-by: Pierre-Charles David --- CHANGELOG.adoc | 1 + .../services/ExpressionsPaletteToolsProvider.java | 4 ++-- .../syson/application/services/ImagePathService.java | 4 ++-- .../src/main/resources/palette/create.svg | 1 + .../view/IVInterconnectionCompartmentToolsTests.java | 4 ++-- .../user-manual/pages/features/expressions.adoc | 4 ++-- ...leteExpressionDiagramToolOverriddenContribution.tsx | 10 ++++++---- ...EditExpressionDiagramToolOverriddenContribution.tsx | 9 ++++++--- .../NewExpressionDiagramToolOverriddenContribution.tsx | 9 ++++++--- 9 files changed, 28 insertions(+), 18 deletions(-) create mode 100644 backend/application/syson-application-configuration/src/main/resources/palette/create.svg diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 9a5620b5a..814e01561 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -51,6 +51,7 @@ Users should use the dedicated tools to edit expressions instead, as they ensure - https://github.com/eclipse-syson/syson/issues/2301[#2301] [diagram] Constraint nodes now display their corresponding expression directly in their label if it is set. - https://github.com/eclipse-syson/syson/issues/2292[#2292] [diagrams] Add inheritance of "Behavior" and "Step" graphical elements in list items. It concerns, at least, _actions_ and _items_ compartments list items. +- https://github.com/eclipse-syson/syson/issues/2284[#2284] [diagrams] The expression-related tools in diagram palette are now available in the default _Edit_ section. === New features diff --git a/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/expressions/services/ExpressionsPaletteToolsProvider.java b/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/expressions/services/ExpressionsPaletteToolsProvider.java index 55712e8be..f391c142e 100644 --- a/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/expressions/services/ExpressionsPaletteToolsProvider.java +++ b/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/expressions/services/ExpressionsPaletteToolsProvider.java @@ -62,9 +62,9 @@ public class ExpressionsPaletteToolsProvider implements IPaletteToolsProvider { private static final String DELETE_EXPRESSION_TOOL_LABEL = "Delete expression"; - private static final String EXPRESSION_TOOL_SECTION_ID = "toolSection_expression"; + private static final String EXPRESSION_TOOL_SECTION_ID = "edit-section"; - private static final String EXPRESSION_TOOL_SECTION_LABEL = "Expression"; + private static final String EXPRESSION_TOOL_SECTION_LABEL = "Edit"; private final IObjectSearchService objectSearchService; diff --git a/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/services/ImagePathService.java b/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/services/ImagePathService.java index 390f47560..cfaf583cb 100644 --- a/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/services/ImagePathService.java +++ b/backend/application/syson-application-configuration/src/main/java/org/eclipse/syson/application/services/ImagePathService.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023, 2024 Obeo. + * Copyright (c) 2023, 2026 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 @@ -25,7 +25,7 @@ @Service public class ImagePathService implements IImagePathService { - private static final List IMAGES_PATHS = List.of("/img", "/images", "/icons"); + private static final List IMAGES_PATHS = List.of("/img", "/images", "/icons", "/palette"); @Override public List getPaths() { diff --git a/backend/application/syson-application-configuration/src/main/resources/palette/create.svg b/backend/application/syson-application-configuration/src/main/resources/palette/create.svg new file mode 100644 index 000000000..93b8cea7c --- /dev/null +++ b/backend/application/syson-application-configuration/src/main/resources/palette/create.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/interconnection/view/IVInterconnectionCompartmentToolsTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/interconnection/view/IVInterconnectionCompartmentToolsTests.java index e5fabd55b..a75cdb5ef 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/interconnection/view/IVInterconnectionCompartmentToolsTests.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/interconnection/view/IVInterconnectionCompartmentToolsTests.java @@ -113,8 +113,8 @@ public void testQueryPaletteAndExecuteTools() { assertThat(quickToolsLabels).hasSize(4); assertThat(quickToolsLabels).containsSequence("Pin", "Adjust size", "Fade", "Hide"); List paletteEntriesLabels = JsonPath.read(result.data(), "$.data.viewer.editingContext.representation.description.palette.paletteEntries[*].label"); - assertThat(paletteEntriesLabels).hasSize(6); - assertThat(paletteEntriesLabels).containsSequence("Requirements", "Structure", "Show/Hide", "Related Elements", "Edit", "Expression"); + assertThat(paletteEntriesLabels).hasSize(5); + assertThat(paletteEntriesLabels).containsSequence("Requirements", "Structure", "Show/Hide", "Related Elements", "Edit"); List paletteRequirementsSectionToolsLabels = JsonPath.read(result.data(), "$.data.viewer.editingContext.representation.description.palette.paletteEntries[0].tools[*].label"); assertThat(paletteRequirementsSectionToolsLabels).hasSize(1); diff --git a/doc/content/modules/user-manual/pages/features/expressions.adoc b/doc/content/modules/user-manual/pages/features/expressions.adoc index 61c0b7e30..3b7adfb9c 100644 --- a/doc/content/modules/user-manual/pages/features/expressions.adoc +++ b/doc/content/modules/user-manual/pages/features/expressions.adoc @@ -29,7 +29,7 @@ To _create_ an expression, invoke the _New expression_ action on a compatible el The action is only available on elements which _can_ own an expression but do not have one yet. * In the {explorer} view, this is available in the element's context menu. -* In a _Diagram_, it is available in the _Expression_ section of the element's palette (if applicable). +* In a _Diagram_, it is available in the _Edit_ section of the element's palette (if applicable). * In the {details} view, it is available as a `+` button on the _Expression value_ widget (if present). A modal will open where you can enter the textual representation of the expression to create. @@ -46,7 +46,7 @@ image::edit-expression-modal-error.png[Edit expression modal showing an error me To edit an already existing expression, invoke the _Edit expression_ action directly on the existing expression or on its parent element. In the {explorer} view, this is available in the element's context menu. -In a _Diagram_, it is avilable in the _Expression_ section of the element's palette (if applicable). +In a _Diagram_, it is avilable in the _Edit_ section of the element's palette (if applicable). The same modal as for expression creation will open, but with the current textual representation of the expression pre-filled. diff --git a/frontend/syson-components/src/extensions/expressions/DeleteExpressionDiagramToolOverriddenContribution.tsx b/frontend/syson-components/src/extensions/expressions/DeleteExpressionDiagramToolOverriddenContribution.tsx index 545690d49..dc1a22741 100644 --- a/frontend/syson-components/src/extensions/expressions/DeleteExpressionDiagramToolOverriddenContribution.tsx +++ b/frontend/syson-components/src/extensions/expressions/DeleteExpressionDiagramToolOverriddenContribution.tsx @@ -10,10 +10,9 @@ * Contributors: * Obeo - initial API and implementation *******************************************************************************/ -import { useDeletionConfirmationDialog } from '@eclipse-sirius/sirius-components-core'; +import { IconOverlay, useDeletionConfirmationDialog } from '@eclipse-sirius/sirius-components-core'; import { DiagramContext, DiagramContextValue, EdgeData, NodeData } from '@eclipse-sirius/sirius-components-diagrams'; import { PaletteToolContributionComponentProps, usePalette } from '@eclipse-sirius/sirius-components-palette'; -import DeleteIcon from '@mui/icons-material/Delete'; import ListItemButton from '@mui/material/ListItemButton'; import ListItemIcon from '@mui/material/ListItemIcon'; import ListItemText from '@mui/material/ListItemText'; @@ -76,6 +75,9 @@ export const DeleteExpressionDiagramToolOverriddenContribution = ({ }); }; + const toolLabel = 'Delete Expression'; + const toolIconURL = '/api/images/diagram-images/semanticDelete.svg'; + return ( - + - + ); }; diff --git a/frontend/syson-components/src/extensions/expressions/EditExpressionDiagramToolOverriddenContribution.tsx b/frontend/syson-components/src/extensions/expressions/EditExpressionDiagramToolOverriddenContribution.tsx index 5ad109bfb..2b003c016 100644 --- a/frontend/syson-components/src/extensions/expressions/EditExpressionDiagramToolOverriddenContribution.tsx +++ b/frontend/syson-components/src/extensions/expressions/EditExpressionDiagramToolOverriddenContribution.tsx @@ -10,9 +10,9 @@ * Contributors: * Obeo - initial API and implementation *******************************************************************************/ +import { IconOverlay } from '@eclipse-sirius/sirius-components-core'; import { DiagramContext, DiagramContextValue, EdgeData, NodeData } from '@eclipse-sirius/sirius-components-diagrams'; import { PaletteToolContributionComponentProps, usePalette } from '@eclipse-sirius/sirius-components-palette'; -import EditIcon from '@mui/icons-material/Edit'; import ListItemButton from '@mui/material/ListItemButton'; import ListItemIcon from '@mui/material/ListItemIcon'; import ListItemText from '@mui/material/ListItemText'; @@ -84,6 +84,9 @@ export const EditExpressionDiagramToolOverriddenContribution = ({ ); } + const toolLabel = 'Edit Expression'; + const toolIconURL = '/api/images/diagram-images/edit.svg'; + return ( - + - + {modalElement} diff --git a/frontend/syson-components/src/extensions/expressions/NewExpressionDiagramToolOverriddenContribution.tsx b/frontend/syson-components/src/extensions/expressions/NewExpressionDiagramToolOverriddenContribution.tsx index a69f61de6..0f837d9fb 100644 --- a/frontend/syson-components/src/extensions/expressions/NewExpressionDiagramToolOverriddenContribution.tsx +++ b/frontend/syson-components/src/extensions/expressions/NewExpressionDiagramToolOverriddenContribution.tsx @@ -10,9 +10,9 @@ * Contributors: * Obeo - initial API and implementation *******************************************************************************/ +import { IconOverlay } from '@eclipse-sirius/sirius-components-core'; import { DiagramContext, DiagramContextValue, EdgeData, NodeData } from '@eclipse-sirius/sirius-components-diagrams'; import { PaletteToolContributionComponentProps, usePalette } from '@eclipse-sirius/sirius-components-palette'; -import AddIcon from '@mui/icons-material/Add'; import ListItemButton from '@mui/material/ListItemButton'; import ListItemIcon from '@mui/material/ListItemIcon'; import ListItemText from '@mui/material/ListItemText'; @@ -84,6 +84,9 @@ export const NewExpressionDiagramToolOverriddenContribution = ({ ); } + const toolLabel = 'New Expression'; + const toolIconURL = '/api/images/palette/create.svg'; + return ( - + - + {modalElement}