Skip to content

Commit b5eb6d3

Browse files
committed
[3647] Add support for diagram style with background customization
Bug: #3647 Signed-off-by: Florian ROUËNÉ <florian.rouene@obeosoft.com>
1 parent 6b7efa3 commit b5eb6d3

File tree

54 files changed

+2080
-168
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+2080
-168
lines changed

CHANGELOG.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ This dialog presents diagram elements in a tree and allows to select them and up
7676
+
7777
image:doc/screenshots/diagramFilterView.png[Diagram Filter View, 70%]
7878
- https://github.com/eclipse-sirius/sirius-web/issues/3523[#3523] [gantt] Support rounding dates when changing dates from gantt
79+
- https://github.com/eclipse-sirius/sirius-web/issues/3647[#3647] [diagram] Add support for diagram style with background customization
7980

8081
=== Improvements
8182

packages/compatibility/backend/sirius-components-compatibility-emf/src/test/java/org/eclipse/sirius/components/compatibility/emf/compatibility/operations/CreateViewOperationHandlerTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ public void initialize() {
8888
.nodeDescriptions(List.of(this.getNodeDescription(UUID.randomUUID().toString())))
8989
.edgeDescriptions(List.of())
9090
.dropHandler(variableManager -> new Failure(""))
91+
.styleProvider(variableManager -> null)
9192
.build();
9293

9394
Diagram diagram = Diagram.newDiagram(UUID.randomUUID().toString())

packages/compatibility/backend/sirius-components-compatibility-emf/src/test/java/org/eclipse/sirius/components/compatibility/emf/compatibility/operations/DeleteViewOperationHandlerTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ public void initialize() {
9191
.nodeDescriptions(List.of(this.getNodeDescription(UUID.randomUUID().toString())))
9292
.edgeDescriptions(List.of())
9393
.dropHandler(variableManager -> new Failure(""))
94+
.styleProvider(variableManager -> null)
9495
.build();
9596

9697
Node node = Node.newNode(UUID.randomUUID().toString())

packages/compatibility/backend/sirius-components-compatibility/src/main/java/org/eclipse/sirius/components/compatibility/services/diagrams/DiagramDescriptionConverter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ public DiagramDescription convert(org.eclipse.sirius.diagram.description.Diagram
6767
.canCreatePredicate(canCreatePredicate)
6868
.labelProvider(labelProvider)
6969
.autoLayout(this.isAutoLayoutMode(siriusDiagramDescription))
70-
.arrangeLayoutDirection(ArrangeLayoutDirection.UNDEFINED);
70+
.arrangeLayoutDirection(ArrangeLayoutDirection.UNDEFINED)
71+
.styleProvider(variableManager -> null);
7172

7273
for (IDiagramDescriptionPopulator diagramDescriptionPopulator : this.diagramDescriptionPopulators) {
7374
diagramDescriptionPopulator.populate(builder, siriusDiagramDescription, interpreter);

packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/resources/schema/diagram.graphqls

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,14 @@ type Diagram implements Representation {
3737
position: Position!
3838
nodes: [Node!]!
3939
edges: [Edge!]!
40+
style: DiagramStyle
4041
layoutData: DiagramLayoutData!
4142
}
4243

44+
type DiagramStyle {
45+
background: String
46+
}
47+
4348
type DiagramLayoutData {
4449
nodeLayoutData: [NodeLayoutData!]!
4550
}

packages/diagrams/backend/sirius-components-collaborative-diagrams/src/test/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/CreateDiagramEventHandlerTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public Optional<IRepresentationDescription> findById(IEditingContext editingCont
6464
.nodeDescriptions(new ArrayList<>())
6565
.targetObjectIdProvider(variableManager -> "targetObjectId")
6666
.dropHandler(variableManager -> new Failure(""))
67+
.styleProvider(variableManager -> null)
6768
.build();
6869
// @formatter:on
6970

packages/diagrams/backend/sirius-components-collaborative-diagrams/src/test/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/GetConnectorToolsEventHandlerTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ public void testGetConnectorTools() {
171171
.edgeDescriptions(new ArrayList<>())
172172
.palettes(List.of(palette))
173173
.dropHandler(variableManager -> new Failure(""))
174+
.styleProvider(variableManager -> null)
174175
.build();
175176

176177
Node sourceNode = this.getNode(SOURCE_NODE_ID, SOURCE_NODE_TARGET_ID);

packages/diagrams/backend/sirius-components-collaborative-diagrams/src/test/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/TestDiagramDescriptionBuilder.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public DiagramDescription getDiagramDescription(String diagramDescriptionId, Lis
5555
.edgeDescriptions(edgeDescriptions)
5656
.palettes(palettes)
5757
.dropHandler(variableManager -> new Failure(""))
58+
.styleProvider(variableManager -> null)
5859
.build();
5960
}
6061

packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/Diagram.java

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
*/
2929
@Immutable
3030
public final class Diagram implements IRepresentation {
31+
3132
public static final String KIND = IRepresentation.KIND_PREFIX + "?type=Diagram";
3233

3334
private String id;
@@ -50,10 +51,20 @@ public final class Diagram implements IRepresentation {
5051

5152
private DiagramLayoutData layoutData;
5253

54+
private DiagramStyle style;
55+
5356
private Diagram() {
5457
// Prevent instantiation
5558
}
5659

60+
public static Builder newDiagram(String id) {
61+
return new Builder(id);
62+
}
63+
64+
public static Builder newDiagram(Diagram diagram) {
65+
return new Builder(diagram);
66+
}
67+
5768
@Override
5869
public String getId() {
5970
return this.id;
@@ -99,12 +110,8 @@ public DiagramLayoutData getLayoutData() {
99110
return this.layoutData;
100111
}
101112

102-
public static Builder newDiagram(String id) {
103-
return new Builder(id);
104-
}
105-
106-
public static Builder newDiagram(Diagram diagram) {
107-
return new Builder(diagram);
113+
public DiagramStyle getStyle() {
114+
return this.style;
108115
}
109116

110117
@Override
@@ -120,9 +127,10 @@ public String toString() {
120127
*/
121128
@SuppressWarnings("checkstyle:HiddenField")
122129
public static final class Builder {
123-
private String id;
124130

125-
private String kind = KIND;
131+
private final String id;
132+
133+
private final String kind = KIND;
126134

127135
private String targetObjectId;
128136

@@ -138,6 +146,8 @@ public static final class Builder {
138146

139147
private List<Edge> edges;
140148

149+
private DiagramStyle style;
150+
141151
private DiagramLayoutData layoutData = new DiagramLayoutData(Map.of(), Map.of(), Map.of());
142152

143153
private Builder(String id) {
@@ -153,6 +163,7 @@ private Builder(Diagram diagram) {
153163
this.size = diagram.getSize();
154164
this.nodes = diagram.getNodes();
155165
this.edges = diagram.getEdges();
166+
this.style = diagram.getStyle();
156167
this.layoutData = diagram.getLayoutData();
157168
}
158169

@@ -191,6 +202,11 @@ public Builder edges(List<Edge> edges) {
191202
return this;
192203
}
193204

205+
public Builder style(DiagramStyle style) {
206+
this.style = Objects.requireNonNull(style);
207+
return this;
208+
}
209+
194210
public Builder layoutData(DiagramLayoutData layoutData) {
195211
this.layoutData = Objects.requireNonNull(layoutData);
196212
return this;
@@ -207,6 +223,7 @@ public Diagram build() {
207223
diagram.size = Objects.requireNonNull(this.size);
208224
diagram.nodes = Objects.requireNonNull(this.nodes);
209225
diagram.edges = Objects.requireNonNull(this.edges);
226+
diagram.style = this.style; // Optional on purpose
210227
diagram.layoutData = Objects.requireNonNull(this.layoutData);
211228
return diagram;
212229
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2024 Obeo.
3+
* This program and the accompanying materials
4+
* are made available under the terms of the Eclipse Public License v2.0
5+
* which accompanies this distribution, and is available at
6+
* https://www.eclipse.org/legal/epl-2.0/
7+
*
8+
* SPDX-License-Identifier: EPL-2.0
9+
*
10+
* Contributors:
11+
* Obeo - initial API and implementation
12+
*******************************************************************************/
13+
package org.eclipse.sirius.components.diagrams;
14+
15+
import java.util.Objects;
16+
17+
import org.eclipse.sirius.components.annotations.Immutable;
18+
19+
/**
20+
* A diagram style.
21+
*
22+
* @author frouene
23+
*/
24+
@Immutable
25+
public final class DiagramStyle {
26+
27+
private String background;
28+
29+
private DiagramStyle() {
30+
// prevent initialisation
31+
}
32+
33+
public static Builder newDiagramStyle() {
34+
return new Builder();
35+
}
36+
37+
public String getBackground() {
38+
return this.background;
39+
}
40+
41+
/**
42+
* The builder used to create the diagram style.
43+
*
44+
* @author frouene
45+
*/
46+
@SuppressWarnings("checkstyle:HiddenField")
47+
public static final class Builder {
48+
49+
private String background;
50+
51+
public Builder background(String background) {
52+
this.background = Objects.requireNonNull(background);
53+
return this;
54+
}
55+
56+
public DiagramStyle build() {
57+
DiagramStyle diagramStyle = new DiagramStyle();
58+
diagramStyle.background = Objects.requireNonNull(this.background);
59+
return diagramStyle;
60+
}
61+
62+
}
63+
}

0 commit comments

Comments
 (0)