Skip to content

Commit 359fa78

Browse files
adaussyAxelRICHARD
authored andcommitted
[2232] Fix SysOn view model to be serializable
Bug: #2232 Signed-off-by: Arthur Daussy <arthur.daussy@obeo.fr>
1 parent c4398ee commit 359fa78

5 files changed

Lines changed: 37 additions & 7 deletions

File tree

CHANGELOG.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
=== Bug fixes
1616

17+
- https://github.com/eclipse-syson/syson/issues/2232[#2232] [configuration] Fix a serialization problem of the View models of SysON representations.
18+
1719
=== Improvements
1820

1921
- https://github.com/eclipse-syson/syson/issues/2198[#2198] [diagrams] Improve diagram-to-diagram drag and drop to support dropping multiple graphical nodes at once, leveraging Sirius Web's `droppedNodes` and `droppedElements` variables.

backend/views/syson-common-view/src/main/java/org/eclipse/syson/common/view/api/IViewDescriptionProvider.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2024, 2025 Obeo.
2+
* Copyright (c) 2024, 2026 Obeo.
33
* This program and the accompanying materials
44
* are made available under the terms of the Eclipse Public License v2.0
55
* which accompanies this distribution, and is available at
@@ -13,12 +13,14 @@
1313
package org.eclipse.syson.common.view.api;
1414

1515
import java.util.List;
16+
import java.util.Optional;
1617
import java.util.UUID;
1718

1819
import org.eclipse.emf.ecore.util.EcoreUtil;
1920
import org.eclipse.sirius.components.emf.ResourceMetadataAdapter;
2021
import org.eclipse.sirius.components.emf.services.IDAdapter;
2122
import org.eclipse.sirius.components.emf.services.JSONResourceFactory;
23+
import org.eclipse.sirius.components.view.ColorPalette;
2224
import org.eclipse.sirius.components.view.RepresentationDescription;
2325
import org.eclipse.sirius.components.view.View;
2426
import org.eclipse.sirius.components.view.builder.generated.view.ViewBuilder;
@@ -55,6 +57,9 @@ default List<View> getRepresentationDescriptions() {
5557
View view = viewBuilder.build();
5658
IColorProvider colorProvider = new ColorProvider(view);
5759

60+
this.buildColorPalette()
61+
.ifPresent(colorPalette -> view.getColorPalettes().add(colorPalette));
62+
5863
// Create org.eclipse.sirius.components.view.RepresentationDescription
5964
IRepresentationDescriptionProvider viewDiagramDescriptionProvider = this.getRepresentationDescriptionProvider();
6065
RepresentationDescription viewRepresentationDescription = viewDiagramDescriptionProvider.create(colorProvider);
@@ -73,4 +78,13 @@ default List<View> getRepresentationDescriptions() {
7378

7479
return List.of(view);
7580
}
81+
82+
/**
83+
* Creates an optional color palette for this {@link View}.
84+
*
85+
* @return an {@link Optional} color palette.
86+
*/
87+
default Optional<ColorPalette> buildColorPalette() {
88+
return Optional.empty();
89+
}
7690
}

backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/nodes/AddYourFirstElement.java

Lines changed: 2 additions & 0 deletions
Large diffs are not rendered by default.

backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/SDVDescriptionProvider.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2023, 2025 Obeo.
2+
* Copyright (c) 2023, 2026 Obeo.
33
* This program and the accompanying materials
44
* are made available under the terms of the Eclipse Public License v2.0
55
* which accompanies this distribution, and is available at
@@ -12,8 +12,14 @@
1212
*******************************************************************************/
1313
package org.eclipse.syson.standard.diagrams.view;
1414

15+
import java.util.Optional;
16+
17+
import org.eclipse.sirius.components.view.ColorPalette;
18+
import org.eclipse.sirius.components.view.builder.generated.view.ColorPaletteBuilder;
19+
import org.eclipse.sirius.components.view.builder.generated.view.ViewBuilders;
1520
import org.eclipse.sirius.components.view.builder.providers.IRepresentationDescriptionProvider;
1621
import org.eclipse.syson.common.view.api.IViewDescriptionProvider;
22+
import org.eclipse.syson.diagram.common.view.nodes.AddYourFirstElement;
1723
import org.springframework.stereotype.Service;
1824

1925
/**
@@ -37,4 +43,14 @@ public String getViewId() {
3743
public IRepresentationDescriptionProvider getRepresentationDescriptionProvider() {
3844
return new SDVDiagramDescriptionProvider();
3945
}
46+
47+
@Override
48+
public Optional<ColorPalette> buildColorPalette() {
49+
ColorPalette colorPalette = new ColorPaletteBuilder().colors(new ViewBuilders().newFixedColor()
50+
.name(AddYourFirstElement.COLOR_NAME)
51+
.value("url(" + AddYourFirstElement.BASE64 + ") no-repeat center center / contain")
52+
.build())
53+
.build();
54+
return Optional.of(colorPalette);
55+
}
4056
}

backend/views/syson-standard-diagrams-view/src/main/java/org/eclipse/syson/standard/diagrams/view/SDVDiagramDescriptionProvider.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -321,14 +321,10 @@ public class SDVDiagramDescriptionProvider implements IRepresentationDescription
321321
@Override
322322
public RepresentationDescription create(IColorProvider colorProvider) {
323323
String domainType = SysMLMetamodelHelper.buildQualifiedName(SysmlPackage.eINSTANCE.getNamespace());
324-
325324
var emptyDiagramStyle = new DiagramBuilders().newConditionalDiagramStyle()
326325
.condition("aql:self.exposedElement->size() == 0 and editingContext.isDiagramEmpty(diagramContext, previousDiagram, self.exposedElement->size())")
327326
.style(new DiagramBuilders().newDiagramStyleDescription()
328-
.background(this.viewBuilderHelper.newFixedColor()
329-
.name("AddYourFirstElement")
330-
.value("url(" + AddYourFirstElement.BASE64 + ") no-repeat center center / contain")
331-
.build())
327+
.background(colorProvider.getColor(AddYourFirstElement.COLOR_NAME))
332328
.build())
333329
.build();
334330

0 commit comments

Comments
 (0)