Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ It has long been unused by Sirius Web itself (since the transition to MUI).

=== Dependency update

- [releng] Update to https://github.com/eclipse-sirius/sirius-web[Sirius Web 2026.5.3].
- [releng] Update to https://github.com/eclipse-sirius/sirius-web[Sirius Web 2026.5.4].
- [releng] Update to https://github.com/spring-projects/spring-boot/releases/tag/v4.0.7[Spring Boot 4.0.7].
- [releng] Update to https://github.com/xyflow/xyflow/releases/tag/@xyflow/react@12.10.2[xyflow 12.10.2].
- [releng] Update to https://github.com/vitejs/vite/releases/tag/v8.0.14[Vite 8.0.14] and https://github.com/vitejs/vite-plugin-react/releases/tag/plugin-react%406.0.2[`@vitejs/plugin-react` 6.0.2].
Expand Down
1 change: 1 addition & 0 deletions backend/application/syson-application/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ services:
SPRING_DATASOURCE_USERNAME: test_username
SPRING_DATASOURCE_PASSWORD: test_password
SIRIUS_COMPONENTS_CORS_ALLOWEDORIGINPATTERNS: "*"
SIRIUS_WEB_TREE_NEW-PALETTE_ENABLED: false
SERVER_PORT: 8080
depends_on:
- database
84 changes: 42 additions & 42 deletions frontend/syson-components/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,27 +31,27 @@
},
"peerDependencies": {
"@apollo/client": "3.10.4",
"@eclipse-sirius/sirius-components-browser": "2026.5.3",
"@eclipse-sirius/sirius-components-charts": "2026.5.3",
"@eclipse-sirius/sirius-components-core": "2026.5.3",
"@eclipse-sirius/sirius-components-datatree": "2026.5.3",
"@eclipse-sirius/sirius-components-deck": "2026.5.3",
"@eclipse-sirius/sirius-components-diagrams": "2026.5.3",
"@eclipse-sirius/sirius-components-formdescriptioneditors": "2026.5.3",
"@eclipse-sirius/sirius-components-forms": "2026.5.3",
"@eclipse-sirius/sirius-components-gantt": "2026.5.3",
"@eclipse-sirius/sirius-components-impactanalysis": "2026.5.3",
"@eclipse-sirius/sirius-components-omnibox": "2026.5.3",
"@eclipse-sirius/sirius-components-palette": "2026.5.3",
"@eclipse-sirius/sirius-components-portals": "2026.5.3",
"@eclipse-sirius/sirius-components-selection": "2026.5.3",
"@eclipse-sirius/sirius-components-tables": "2026.5.3",
"@eclipse-sirius/sirius-components-trees": "2026.5.3",
"@eclipse-sirius/sirius-components-tsconfig": "2026.5.3",
"@eclipse-sirius/sirius-components-validation": "2026.5.3",
"@eclipse-sirius/sirius-components-widget-reference": "2026.5.3",
"@eclipse-sirius/sirius-components-widget-table": "2026.5.3",
"@eclipse-sirius/sirius-web-application": "2026.5.3",
"@eclipse-sirius/sirius-components-browser": "2026.5.4",
"@eclipse-sirius/sirius-components-charts": "2026.5.4",
"@eclipse-sirius/sirius-components-core": "2026.5.4",
"@eclipse-sirius/sirius-components-datatree": "2026.5.4",
"@eclipse-sirius/sirius-components-deck": "2026.5.4",
"@eclipse-sirius/sirius-components-diagrams": "2026.5.4",
"@eclipse-sirius/sirius-components-formdescriptioneditors": "2026.5.4",
"@eclipse-sirius/sirius-components-forms": "2026.5.4",
"@eclipse-sirius/sirius-components-gantt": "2026.5.4",
"@eclipse-sirius/sirius-components-impactanalysis": "2026.5.4",
"@eclipse-sirius/sirius-components-omnibox": "2026.5.4",
"@eclipse-sirius/sirius-components-palette": "2026.5.4",
"@eclipse-sirius/sirius-components-portals": "2026.5.4",
"@eclipse-sirius/sirius-components-selection": "2026.5.4",
"@eclipse-sirius/sirius-components-tables": "2026.5.4",
"@eclipse-sirius/sirius-components-trees": "2026.5.4",
"@eclipse-sirius/sirius-components-tsconfig": "2026.5.4",
"@eclipse-sirius/sirius-components-validation": "2026.5.4",
"@eclipse-sirius/sirius-components-widget-reference": "2026.5.4",
"@eclipse-sirius/sirius-components-widget-table": "2026.5.4",
"@eclipse-sirius/sirius-web-application": "2026.5.4",
"@lexical/code": "0.42.0",
"@lexical/react": "0.42.0",
"@mui/icons-material": "7.3.10",
Expand Down Expand Up @@ -85,27 +85,27 @@
},
"devDependencies": {
"@apollo/client": "3.10.4",
"@eclipse-sirius/sirius-components-browser": "2026.5.3",
"@eclipse-sirius/sirius-components-charts": "2026.5.3",
"@eclipse-sirius/sirius-components-core": "2026.5.3",
"@eclipse-sirius/sirius-components-datatree": "2026.5.3",
"@eclipse-sirius/sirius-components-deck": "2026.5.3",
"@eclipse-sirius/sirius-components-diagrams": "2026.5.3",
"@eclipse-sirius/sirius-components-formdescriptioneditors": "2026.5.3",
"@eclipse-sirius/sirius-components-forms": "2026.5.3",
"@eclipse-sirius/sirius-components-gantt": "2026.5.3",
"@eclipse-sirius/sirius-components-impactanalysis": "2026.5.3",
"@eclipse-sirius/sirius-components-omnibox": "2026.5.3",
"@eclipse-sirius/sirius-components-palette": "2026.5.3",
"@eclipse-sirius/sirius-components-portals": "2026.5.3",
"@eclipse-sirius/sirius-components-selection": "2026.5.3",
"@eclipse-sirius/sirius-components-tables": "2026.5.3",
"@eclipse-sirius/sirius-components-trees": "2026.5.3",
"@eclipse-sirius/sirius-components-tsconfig": "2026.5.3",
"@eclipse-sirius/sirius-components-validation": "2026.5.3",
"@eclipse-sirius/sirius-components-widget-reference": "2026.5.3",
"@eclipse-sirius/sirius-components-widget-table": "2026.5.3",
"@eclipse-sirius/sirius-web-application": "2026.5.3",
"@eclipse-sirius/sirius-components-browser": "2026.5.4",
"@eclipse-sirius/sirius-components-charts": "2026.5.4",
"@eclipse-sirius/sirius-components-core": "2026.5.4",
"@eclipse-sirius/sirius-components-datatree": "2026.5.4",
"@eclipse-sirius/sirius-components-deck": "2026.5.4",
"@eclipse-sirius/sirius-components-diagrams": "2026.5.4",
"@eclipse-sirius/sirius-components-formdescriptioneditors": "2026.5.4",
"@eclipse-sirius/sirius-components-forms": "2026.5.4",
"@eclipse-sirius/sirius-components-gantt": "2026.5.4",
"@eclipse-sirius/sirius-components-impactanalysis": "2026.5.4",
"@eclipse-sirius/sirius-components-omnibox": "2026.5.4",
"@eclipse-sirius/sirius-components-palette": "2026.5.4",
"@eclipse-sirius/sirius-components-portals": "2026.5.4",
"@eclipse-sirius/sirius-components-selection": "2026.5.4",
"@eclipse-sirius/sirius-components-tables": "2026.5.4",
"@eclipse-sirius/sirius-components-trees": "2026.5.4",
"@eclipse-sirius/sirius-components-tsconfig": "2026.5.4",
"@eclipse-sirius/sirius-components-validation": "2026.5.4",
"@eclipse-sirius/sirius-components-widget-reference": "2026.5.4",
"@eclipse-sirius/sirius-components-widget-table": "2026.5.4",
"@eclipse-sirius/sirius-web-application": "2026.5.4",
"@lexical/code": "0.42.0",
"@lexical/react": "0.42.0",
"@mui/icons-material": "7.3.10",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
/*******************************************************************************
* Copyright (c) 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
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
import { PaletteToolOverriddenContributionComponentProps } from '@eclipse-sirius/sirius-components-palette';
import { TreePaletteContext, TreePaletteContextValue } from '@eclipse-sirius/sirius-components-trees';
import AddIcon from '@mui/icons-material/Add';
import ListItemIcon from '@mui/material/ListItemIcon';
import ListItemText from '@mui/material/ListItemText';
import MenuItem from '@mui/material/MenuItem';
import { forwardRef, Fragment, useContext, useState } from 'react';
import { InsertTextualSysMLv2Modal } from './InsertTextualSysMLv2Modal';

export const InsertTextualSysMLv2ExplorerToolOverriddenContribution = forwardRef(
({}: PaletteToolOverriddenContributionComponentProps, ref: React.ForwardedRef<HTMLLIElement>) => {
const { editingContextId, item, treeId, readOnly, expandItem, onClose } =
useContext<TreePaletteContextValue>(TreePaletteContext);

const [modal, setModal] = useState<boolean>(false);

if (!treeId.startsWith('explorer://') || readOnly) {
return null;
}
const onDialogClose = () => {
onClose();
expandItem();
};

let modalElement: JSX.Element | null = null;
if (modal === true) {
modalElement = (
<InsertTextualSysMLv2Modal editingContextId={editingContextId} item={item} onClose={onDialogClose} />
);
}

return (
<Fragment key="insert-textual-sysmlv2-context-menu-contribution">
<MenuItem
key="insert-textual-sysmlv2-menu"
onClick={() => setModal(true)}
data-testid="insert-textual-sysmlv2-menu"
disabled={readOnly}
ref={ref}
aria-disabled>
<ListItemIcon>
<AddIcon fontSize="small" />
</ListItemIcon>
<ListItemText primary="New objects from text" />
</MenuItem>
{modalElement}
</Fragment>
);
}
);
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export const InsertTextualSysMLMenuContribution = forwardRef(
) => {
const [modal, setModal] = useState<boolean>(false);

if (!treeId.startsWith('explorer://') || !item.editable) {
if (!treeId.startsWith('explorer://') || readOnly) {
return null;
}
const onDialogClose = () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@
import { DataExtension, ExtensionRegistryMergeStrategy } from '@eclipse-sirius/sirius-components-core';
import { widgetContributionExtensionPoint } from '@eclipse-sirius/sirius-components-forms';
import { omniboxCommandOverrideContributionExtensionPoint } from '@eclipse-sirius/sirius-components-omnibox';
import {
paletteToolExtensionPoint,
paletteToolOverrideExtensionPoint,
} from '@eclipse-sirius/sirius-components-palette';
import { treeItemContextMenuEntryOverrideExtensionPoint } from '@eclipse-sirius/sirius-components-trees';
import {
apolloClientOptionsConfigurersExtensionPoint,
Expand Down Expand Up @@ -41,6 +45,12 @@ export class SysONExtensionRegistryMergeStrategy
if (identifier === widgetContributionExtensionPoint.identifier) {
return this.mergeWidgetContributions(existingValues, newValues);
}
if (identifier === paletteToolOverrideExtensionPoint.identifier) {
return this.mergePaletteOverrideContributions(existingValues, newValues);
}
if (identifier === paletteToolExtensionPoint.identifier) {
return this.mergePaletteContributions(existingValues, newValues);
}
return newValues;
}

Expand Down Expand Up @@ -83,4 +93,24 @@ export class SysONExtensionRegistryMergeStrategy
data: [...existingContributions.data, ...newContributions.data],
};
}

private mergePaletteOverrideContributions(
existingContributions: DataExtension<any>,
newContributions: DataExtension<any>
): DataExtension<any> {
return {
identifier: `syson_${paletteToolOverrideExtensionPoint.identifier}`,
data: [...existingContributions.data, ...newContributions.data],
};
}

private mergePaletteContributions(
existingContributions: DataExtension<any>,
newContributions: DataExtension<any>
): DataExtension<any> {
return {
identifier: `syson_${paletteToolExtensionPoint.identifier}`,
data: [...existingContributions.data, ...newContributions.data],
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
*******************************************************************************/
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 { PaletteToolOverriddenContributionComponentProps, usePalette } from '@eclipse-sirius/sirius-components-palette';
import ListItemButton from '@mui/material/ListItemButton';
import ListItemIcon from '@mui/material/ListItemIcon';
import ListItemText from '@mui/material/ListItemText';
Expand Down Expand Up @@ -41,7 +41,8 @@ const useStyle = makeStyles()((theme) => ({

export const DeleteExpressionDiagramToolOverriddenContribution = ({
representationElementIds,
}: PaletteToolContributionComponentProps) => {
onInvoked,
}: PaletteToolOverriddenContributionComponentProps) => {
const { classes } = useStyle();
const { editingContextId, readOnly } = useContext<DiagramContextValue>(DiagramContext);
const store = useStoreApi<Node<NodeData>, Edge<EdgeData>>();
Expand Down Expand Up @@ -73,6 +74,7 @@ export const DeleteExpressionDiagramToolOverriddenContribution = ({
deleteExpression(editingContextId, elementId);
hidePalette();
});
onInvoked();
};

const toolLabel = 'Delete Expression';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/*******************************************************************************
* Copyright (c) 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
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/

import { useDeletionConfirmationDialog } from '@eclipse-sirius/sirius-components-core';
import { PaletteToolOverriddenContributionComponentProps } from '@eclipse-sirius/sirius-components-palette';
import { TreePaletteContext, TreePaletteContextValue } from '@eclipse-sirius/sirius-components-trees';
import DeleteIcon from '@mui/icons-material/Delete';
import ListItemIcon from '@mui/material/ListItemIcon';
import ListItemText from '@mui/material/ListItemText';
import MenuItem from '@mui/material/MenuItem';
import React, { forwardRef, Fragment, useContext } from 'react';
import { useDeleteExpression } from './useDeleteExpression';

export const DeleteExpressionExplorerToolOverriddenContribution = forwardRef(
({}: PaletteToolOverriddenContributionComponentProps, ref: React.ForwardedRef<HTMLLIElement>) => {
const { editingContextId, item, treeId, readOnly, onClose } =
useContext<TreePaletteContextValue>(TreePaletteContext);
const { deleteExpression } = useDeleteExpression();
const { showDeletionConfirmation } = useDeletionConfirmationDialog();

if (!treeId.startsWith('explorer://') || item === null || readOnly) {
return null;
}

const handleDeleteExpression = () => {
showDeletionConfirmation(() => {
deleteExpression(editingContextId, item.id);
onClose();
});
};

return (
<Fragment key="delete-sysml-expression-context-menu-contribution">
<MenuItem
key="delete-sysml-expression-menu"
onClick={handleDeleteExpression}
data-testid="delete-sysml-expression-menu"
disabled={readOnly}
ref={ref}
aria-disabled>
<ListItemIcon>
<DeleteIcon fontSize="small" />
</ListItemIcon>
<ListItemText primary="Delete expression" />
</MenuItem>
</Fragment>
);
}
);
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
*******************************************************************************/
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 { PaletteToolOverriddenContributionComponentProps, usePalette } from '@eclipse-sirius/sirius-components-palette';
import ListItemButton from '@mui/material/ListItemButton';
import ListItemIcon from '@mui/material/ListItemIcon';
import ListItemText from '@mui/material/ListItemText';
Expand Down Expand Up @@ -41,7 +41,8 @@ const useStyle = makeStyles()((theme) => ({

export const EditExpressionDiagramToolOverriddenContribution = ({
representationElementIds,
}: PaletteToolContributionComponentProps) => {
onInvoked,
}: PaletteToolOverriddenContributionComponentProps) => {
const { classes } = useStyle();
const { editingContextId, readOnly } = useContext<DiagramContextValue>(DiagramContext);
const store = useStoreApi<Node<NodeData>, Edge<EdgeData>>();
Expand Down Expand Up @@ -90,7 +91,10 @@ export const EditExpressionDiagramToolOverriddenContribution = ({
return (
<Fragment key="overridden_tool_edit_expression">
<ListItemButton
onClick={() => setModalVisible(true)}
onClick={() => {
setModalVisible(true);
onInvoked();
}}
data-testid="overridden_tool_edit_expression"
disabled={readOnly}
className={classes.listItemButton}>
Expand Down
Loading
Loading