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
5 changes: 5 additions & 0 deletions backend/views/syson-standard-diagrams-view/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,11 @@
<artifactId>sirius-components-view-builder</artifactId>
<version>${sirius.web.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.sirius</groupId>
<artifactId>sirius-components-collaborative</artifactId>
<version>${sirius.web.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.sirius</groupId>
<artifactId>sirius-components-collaborative-diagrams</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2025 Obeo.
* Copyright (c) 2025, 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
Expand All @@ -15,7 +15,7 @@
import java.util.ArrayList;
import java.util.List;

import org.eclipse.sirius.components.collaborative.api.RepresentationDescriptionMetadata;
import org.eclipse.sirius.components.collaborative.dto.RepresentationDescriptionMetadataDTO;
import org.eclipse.sirius.components.emf.services.api.IRepresentationDescriptionMetadataSorter;
import org.springframework.stereotype.Service;

Expand All @@ -28,10 +28,10 @@
public class SysONRepresentationDescriptionMetadataSorter implements IRepresentationDescriptionMetadataSorter {

@Override
public List<RepresentationDescriptionMetadata> sort(List<RepresentationDescriptionMetadata> representationDescriptions) {
List<RepresentationDescriptionMetadata> sortedRepresentationDescriptions = new ArrayList<>();
for (RepresentationDescriptionMetadata representationDescriptionMetadata : representationDescriptions) {
if (SDVDiagramDescriptionProvider.DESCRIPTION_NAME.equals(representationDescriptionMetadata.getLabel())) {
public List<RepresentationDescriptionMetadataDTO> sort(List<RepresentationDescriptionMetadataDTO> representationDescriptions) {
List<RepresentationDescriptionMetadataDTO> sortedRepresentationDescriptions = new ArrayList<>();
for (RepresentationDescriptionMetadataDTO representationDescriptionMetadata : representationDescriptions) {
if (SDVDiagramDescriptionProvider.DESCRIPTION_NAME.equals(representationDescriptionMetadata.label())) {
sortedRepresentationDescriptions.add(0, representationDescriptionMetadata);
} else {
sortedRepresentationDescriptions.add(representationDescriptionMetadata);
Expand Down
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.3.3",
"@eclipse-sirius/sirius-components-charts": "2026.3.3",
"@eclipse-sirius/sirius-components-core": "2026.3.3",
"@eclipse-sirius/sirius-components-datatree": "2026.3.3",
"@eclipse-sirius/sirius-components-deck": "2026.3.3",
"@eclipse-sirius/sirius-components-diagrams": "2026.3.3",
"@eclipse-sirius/sirius-components-formdescriptioneditors": "2026.3.3",
"@eclipse-sirius/sirius-components-forms": "2026.3.3",
"@eclipse-sirius/sirius-components-gantt": "2026.3.3",
"@eclipse-sirius/sirius-components-impactanalysis": "2026.3.3",
"@eclipse-sirius/sirius-components-omnibox": "2026.3.3",
"@eclipse-sirius/sirius-components-palette": "2026.3.3",
"@eclipse-sirius/sirius-components-portals": "2026.3.3",
"@eclipse-sirius/sirius-components-selection": "2026.3.3",
"@eclipse-sirius/sirius-components-tables": "2026.3.3",
"@eclipse-sirius/sirius-components-trees": "2026.3.3",
"@eclipse-sirius/sirius-components-tsconfig": "2026.3.3",
"@eclipse-sirius/sirius-components-validation": "2026.3.3",
"@eclipse-sirius/sirius-components-widget-reference": "2026.3.3",
"@eclipse-sirius/sirius-components-widget-table": "2026.3.3",
"@eclipse-sirius/sirius-web-application": "2026.3.3",
"@eclipse-sirius/sirius-components-browser": "2026.3.8",
"@eclipse-sirius/sirius-components-charts": "2026.3.8",
"@eclipse-sirius/sirius-components-core": "2026.3.8",
"@eclipse-sirius/sirius-components-datatree": "2026.3.8",
"@eclipse-sirius/sirius-components-deck": "2026.3.8",
"@eclipse-sirius/sirius-components-diagrams": "2026.3.8",
"@eclipse-sirius/sirius-components-formdescriptioneditors": "2026.3.8",
"@eclipse-sirius/sirius-components-forms": "2026.3.8",
"@eclipse-sirius/sirius-components-gantt": "2026.3.8",
"@eclipse-sirius/sirius-components-impactanalysis": "2026.3.8",
"@eclipse-sirius/sirius-components-omnibox": "2026.3.8",
"@eclipse-sirius/sirius-components-palette": "2026.3.8",
"@eclipse-sirius/sirius-components-portals": "2026.3.8",
"@eclipse-sirius/sirius-components-selection": "2026.3.8",
"@eclipse-sirius/sirius-components-tables": "2026.3.8",
"@eclipse-sirius/sirius-components-trees": "2026.3.8",
"@eclipse-sirius/sirius-components-tsconfig": "2026.3.8",
"@eclipse-sirius/sirius-components-validation": "2026.3.8",
"@eclipse-sirius/sirius-components-widget-reference": "2026.3.8",
"@eclipse-sirius/sirius-components-widget-table": "2026.3.8",
"@eclipse-sirius/sirius-web-application": "2026.3.8",
"@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.3.3",
"@eclipse-sirius/sirius-components-charts": "2026.3.3",
"@eclipse-sirius/sirius-components-core": "2026.3.3",
"@eclipse-sirius/sirius-components-datatree": "2026.3.3",
"@eclipse-sirius/sirius-components-deck": "2026.3.3",
"@eclipse-sirius/sirius-components-diagrams": "2026.3.3",
"@eclipse-sirius/sirius-components-formdescriptioneditors": "2026.3.3",
"@eclipse-sirius/sirius-components-forms": "2026.3.3",
"@eclipse-sirius/sirius-components-gantt": "2026.3.3",
"@eclipse-sirius/sirius-components-impactanalysis": "2026.3.3",
"@eclipse-sirius/sirius-components-omnibox": "2026.3.3",
"@eclipse-sirius/sirius-components-palette": "2026.3.3",
"@eclipse-sirius/sirius-components-portals": "2026.3.3",
"@eclipse-sirius/sirius-components-selection": "2026.3.3",
"@eclipse-sirius/sirius-components-tables": "2026.3.3",
"@eclipse-sirius/sirius-components-trees": "2026.3.3",
"@eclipse-sirius/sirius-components-tsconfig": "2026.3.3",
"@eclipse-sirius/sirius-components-validation": "2026.3.3",
"@eclipse-sirius/sirius-components-widget-reference": "2026.3.3",
"@eclipse-sirius/sirius-components-widget-table": "2026.3.3",
"@eclipse-sirius/sirius-web-application": "2026.3.3",
"@eclipse-sirius/sirius-components-browser": "2026.3.8",
"@eclipse-sirius/sirius-components-charts": "2026.3.8",
"@eclipse-sirius/sirius-components-core": "2026.3.8",
"@eclipse-sirius/sirius-components-datatree": "2026.3.8",
"@eclipse-sirius/sirius-components-deck": "2026.3.8",
"@eclipse-sirius/sirius-components-diagrams": "2026.3.8",
"@eclipse-sirius/sirius-components-formdescriptioneditors": "2026.3.8",
"@eclipse-sirius/sirius-components-forms": "2026.3.8",
"@eclipse-sirius/sirius-components-gantt": "2026.3.8",
"@eclipse-sirius/sirius-components-impactanalysis": "2026.3.8",
"@eclipse-sirius/sirius-components-omnibox": "2026.3.8",
"@eclipse-sirius/sirius-components-palette": "2026.3.8",
"@eclipse-sirius/sirius-components-portals": "2026.3.8",
"@eclipse-sirius/sirius-components-selection": "2026.3.8",
"@eclipse-sirius/sirius-components-tables": "2026.3.8",
"@eclipse-sirius/sirius-components-trees": "2026.3.8",
"@eclipse-sirius/sirius-components-tsconfig": "2026.3.8",
"@eclipse-sirius/sirius-components-validation": "2026.3.8",
"@eclipse-sirius/sirius-components-widget-reference": "2026.3.8",
"@eclipse-sirius/sirius-components-widget-table": "2026.3.8",
"@eclipse-sirius/sirius-web-application": "2026.3.8",
"@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
Expand Up @@ -18,6 +18,7 @@ import {
ConnectionCreationHandles,
ConnectionHandles,
ConnectionTargetHandle,
DecoratorContainer,
Label,
Resizer,
useConnectionLineNodeStyle,
Expand Down Expand Up @@ -45,6 +46,7 @@ const sysMLImportedPackageNodeStyle = (
padding: '0px',
width: '100%',
height: '100%',
position: 'relative',
opacity: faded ? '0.4' : '',
...style,
border: 'none',
Expand Down Expand Up @@ -194,6 +196,7 @@ export const SysMLImportedPackageNode: NodeComponentsMap['sysMLImportedPackageNo
onDragOver={onDragOver}
onDrop={handleOnDrop}
data-testid={`SysMLImportedPackage - ${data?.insideLabel?.text}`}>
<DecoratorContainer decorators={data.decorators}></DecoratorContainer>
{!!selected ? <ConnectionCreationHandles nodeId={id} /> : null}
<ConnectionTargetHandle nodeId={id} nodeDescription={data.nodeDescription} isHovered={data.isHovered} />
<ConnectionHandles connectionHandles={data.connectionHandles} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ const toSysMLImportedPackageNode = (
labelEditable,
deletable,
customizedStyleProperties,
decorators,
} = gqlNode;

const handleLayoutData: GQLHandleLayoutData[] = gqlDiagram.layoutData.nodeLayoutData
Expand Down Expand Up @@ -117,6 +118,8 @@ const toSysMLImportedPackageNode = (
minComputedWidth: gqlNodeLayoutData?.minComputedSize.width ?? null,
minComputedHeight: gqlNodeLayoutData?.minComputedSize.height ?? null,
isLastNodeSelected: false,
moving: false,
decorators,
};

data.insideLabel = convertInsideLabel(
Expand Down
3 changes: 3 additions & 0 deletions frontend/syson-components/src/nodes/note/SysMLNoteNode.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import {
ConnectionCreationHandles,
ConnectionHandles,
ConnectionTargetHandle,
DecoratorContainer,
EdgeData,
Label,
NodeData,
Expand Down Expand Up @@ -46,6 +47,7 @@ const sysMLNoteNodeStyle = (
padding: '0px',
width: '100%',
height: '100%',
position: 'relative',
opacity: faded ? '0.4' : '',
...style,
// No border nor background color: this is handled by the SVG image
Expand Down Expand Up @@ -148,6 +150,7 @@ export const SysMLNoteNode: NodeComponentsMap['sysMLNoteNode'] = memo(
/>
</svg>
</div>
<DecoratorContainer decorators={data.decorators}></DecoratorContainer>
{data.insideLabel ? <Label diagramElementId={id} label={updatedLabel} faded={data.faded} /> : null}
{!!selected ? <ConnectionCreationHandles nodeId={id} /> : null}
<ConnectionTargetHandle nodeId={id} nodeDescription={data.nodeDescription} isHovered={data.isHovered} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ const toSysMLNoteNode = (
labelEditable,
deletable,
customizedStyleProperties,
decorators,
} = gqlNode;

const handleLayoutData: GQLHandleLayoutData[] = gqlDiagram.layoutData.nodeLayoutData
Expand Down Expand Up @@ -117,6 +118,8 @@ const toSysMLNoteNode = (
minComputedWidth: gqlNodeLayoutData?.minComputedSize.width ?? null,
minComputedHeight: gqlNodeLayoutData?.minComputedSize.height ?? null,
isLastNodeSelected: false,
moving: false,
decorators,
};

data.insideLabel = convertInsideLabel(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import {
ConnectionCreationHandles,
ConnectionHandles,
ConnectionTargetHandle,
DecoratorContainer,
Label,
Resizer,
useConnectionLineNodeStyle,
Expand Down Expand Up @@ -100,6 +101,7 @@ const packageContainerStyle = (
padding: '8px',
width: '100%',
height: '100%',
position: 'relative',
opacity: faded ? '0.4' : '',
...style,
background: getCSSColor(String(style.background), theme),
Expand Down Expand Up @@ -154,6 +156,7 @@ export const SysMLPackageNode: NodeComponentsMap['sysMLPackageNode'] = memo(
onDragOver={onDragOver}
onDrop={handleOnDrop}
data-testid={`SysMLPackage - ${data?.insideLabel?.text}`}>
<DecoratorContainer decorators={data.decorators}></DecoratorContainer>
{!!selected ? <ConnectionCreationHandles nodeId={id} /> : null}
<ConnectionTargetHandle nodeId={id} nodeDescription={data.nodeDescription} isHovered={data.isHovered} />
<ConnectionHandles connectionHandles={data.connectionHandles} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ const toPackageNode = (
labelEditable,
deletable,
customizedStyleProperties,
decorators,
} = gqlNode;

const handleLayoutData: GQLHandleLayoutData[] = gqlDiagram.layoutData.nodeLayoutData
Expand Down Expand Up @@ -117,6 +118,8 @@ const toPackageNode = (
minComputedWidth: gqlNodeLayoutData?.minComputedSize.width ?? null,
minComputedHeight: gqlNodeLayoutData?.minComputedSize.height ?? null,
isLastNodeSelected: false,
moving: false,
decorators,
};

data.insideLabel = convertInsideLabel(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import {
ConnectionCreationHandles,
ConnectionHandles,
ConnectionTargetHandle,
DecoratorContainer,
Label,
Resizer,
useConnectionLineNodeStyle,
Expand All @@ -41,6 +42,7 @@ const sysMLViewFrameNodeStyle = (
padding: '0px',
width: '100%',
height: '100%',
position: 'relative',
opacity: faded ? '0.4' : '',
...style,
backgroundColor: 'transparent',
Expand Down Expand Up @@ -129,7 +131,8 @@ export const SysMLViewFrameNode: NodeComponentsMap['sysMLViewFrameNode'] = memo(
onDrop={handleOnDrop}
data-testid={`SysMLViewFrame - ${data?.insideLabel?.text}`}
data-svg="rect">
{selected ? <ConnectionCreationHandles nodeId={id} /> : null}
<DecoratorContainer decorators={data.decorators}></DecoratorContainer>
{!!selected ? <ConnectionCreationHandles nodeId={id} /> : null}
<ConnectionTargetHandle nodeId={id} nodeDescription={data.nodeDescription} isHovered={data.isHovered} />
<ConnectionHandles connectionHandles={data.connectionHandles} />
<div
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ const toViewFrameNode = (
labelEditable,
deletable,
customizedStyleProperties,
decorators,
} = gqlNode;

const handleLayoutData: GQLHandleLayoutData[] = gqlDiagram.layoutData.nodeLayoutData
Expand Down Expand Up @@ -115,6 +116,8 @@ const toViewFrameNode = (
minComputedWidth: gqlNodeLayoutData?.minComputedSize.width ?? null,
minComputedHeight: gqlNodeLayoutData?.minComputedSize.height ?? null,
isLastNodeSelected: false,
moving: false,
decorators,
};

data.insideLabel = convertInsideLabel(
Expand Down
42 changes: 21 additions & 21 deletions frontend/syson/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,27 +13,27 @@
"private": true,
"dependencies": {
"@apollo/client": "3.10.4",
"@eclipse-sirius/sirius-components-browser": "2026.3.3",
"@eclipse-sirius/sirius-components-charts": "2026.3.3",
"@eclipse-sirius/sirius-components-core": "2026.3.3",
"@eclipse-sirius/sirius-components-datatree": "2026.3.3",
"@eclipse-sirius/sirius-components-deck": "2026.3.3",
"@eclipse-sirius/sirius-components-diagrams": "2026.3.3",
"@eclipse-sirius/sirius-components-formdescriptioneditors": "2026.3.3",
"@eclipse-sirius/sirius-components-forms": "2026.3.3",
"@eclipse-sirius/sirius-components-gantt": "2026.3.3",
"@eclipse-sirius/sirius-components-impactanalysis": "2026.3.3",
"@eclipse-sirius/sirius-components-omnibox": "2026.3.3",
"@eclipse-sirius/sirius-components-palette": "2026.3.3",
"@eclipse-sirius/sirius-components-portals": "2026.3.3",
"@eclipse-sirius/sirius-components-selection": "2026.3.3",
"@eclipse-sirius/sirius-components-tables": "2026.3.3",
"@eclipse-sirius/sirius-components-trees": "2026.3.3",
"@eclipse-sirius/sirius-components-tsconfig": "2026.3.3",
"@eclipse-sirius/sirius-components-validation": "2026.3.3",
"@eclipse-sirius/sirius-components-widget-reference": "2026.3.3",
"@eclipse-sirius/sirius-components-widget-table": "2026.3.3",
"@eclipse-sirius/sirius-web-application": "2026.3.3",
"@eclipse-sirius/sirius-components-browser": "2026.3.8",
"@eclipse-sirius/sirius-components-charts": "2026.3.8",
"@eclipse-sirius/sirius-components-core": "2026.3.8",
"@eclipse-sirius/sirius-components-datatree": "2026.3.8",
"@eclipse-sirius/sirius-components-deck": "2026.3.8",
"@eclipse-sirius/sirius-components-diagrams": "2026.3.8",
"@eclipse-sirius/sirius-components-formdescriptioneditors": "2026.3.8",
"@eclipse-sirius/sirius-components-forms": "2026.3.8",
"@eclipse-sirius/sirius-components-gantt": "2026.3.8",
"@eclipse-sirius/sirius-components-impactanalysis": "2026.3.8",
"@eclipse-sirius/sirius-components-omnibox": "2026.3.8",
"@eclipse-sirius/sirius-components-palette": "2026.3.8",
"@eclipse-sirius/sirius-components-portals": "2026.3.8",
"@eclipse-sirius/sirius-components-selection": "2026.3.8",
"@eclipse-sirius/sirius-components-tables": "2026.3.8",
"@eclipse-sirius/sirius-components-trees": "2026.3.8",
"@eclipse-sirius/sirius-components-tsconfig": "2026.3.8",
"@eclipse-sirius/sirius-components-validation": "2026.3.8",
"@eclipse-sirius/sirius-components-widget-reference": "2026.3.8",
"@eclipse-sirius/sirius-components-widget-table": "2026.3.8",
"@eclipse-sirius/sirius-web-application": "2026.3.8",
"@eclipse-syson/syson-components": "2026.3.3",
"@lexical/code": "0.42.0",
"@lexical/react": "0.42.0",
Expand Down
5 changes: 5 additions & 0 deletions frontend/syson/src/ReactFlow.css
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@
* Obeo - initial API and implementation
*******************************************************************************/

/* The selection rectangle */
.react-flow__nodesselection-rect {
pointer-events: none;
}

/* The circle used to reconnect an edge */
.react-flow__edgeupdater {
cursor: pointer;
Expand Down
5 changes: 2 additions & 3 deletions integration-tests-cypress/cypress/workbench/Diagram.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2024, 2025 Obeo.
* Copyright (c) 2024, 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
Expand All @@ -24,8 +24,7 @@ export class Diagram {
}

public arrangeAll() {
cy.getByTestId('arrange-all-menu').click();
cy.getByTestId('arrange-all-elk-layered').should('exist').click();
cy.getByTestId('arrange-all-main-button').click();
}

public getDiagramBackground(diagramLabel: string): Cypress.Chainable<JQuery<HTMLElement>> {
Expand Down
Loading
Loading