Skip to content

Commit 3394409

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 9c5941d commit 3394409

File tree

84 files changed

+3280
-1061
lines changed

Some content is hidden

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

84 files changed

+3280
-1061
lines changed

CHANGELOG.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ As a result, the following maven modules have been deleted: `sirius-web-sample-a
6767
=== New Features
6868

6969
- https://github.com/eclipse-sirius/sirius-web/issues/3748[#3748] [diagram] Store current diagram payload in `DiagramContext`
70+
- https://github.com/eclipse-sirius/sirius-web/issues/3647[#3647] [diagram] Add support for diagram style with background customization
7071

7172

7273
=== Improvements
@@ -155,8 +156,7 @@ More existing APIs will be migrated to this new common pattern.
155156
- https://github.com/eclipse-sirius/sirius-web/issues/3616[#3616] [diagram] Fix potential exceptions due to duplicate keys in diagram event processing
156157
- https://github.com/eclipse-sirius/sirius-web/issues/3624[#3624] [diagram] Fix an issue where the header separator does not fill the entire width of the node
157158
- https://github.com/eclipse-sirius/sirius-web/issues/3531[#3531] [diagram] Fix unnecessary edges label re render
158-
- https://github.com/eclipse-sirius/sirius-web/issues/3650[#3650] [diagram] Fix potential NPE in DiagramNavigator and Node toString method
159-
- https://github.com/eclipse-sirius/sirius-web/issues/3649[#3649] [sirius-web] Restore support for Related elements view icons
159+
- https://github.com/eclipse-sirius/sirius-web/issues/3650[#3650] [diagram] Fix potential NPE in DiagramNavigator and Node toString method- https://github.com/eclipse-sirius/sirius-web/issues/3649[#3649] [sirius-web] Restore support for Related elements view icons
160160
- https://github.com/eclipse-sirius/sirius-web/issues/3630[#3630] [sirius-web] Restore support for the deletion of dangling representations
161161
- https://github.com/eclipse-sirius/sirius-web/issues/3666[#3666] [core] Enable EMF's intrinsicIDToEObjectMap for JSON resources to support languages which use modeled identifiers (e.g. SysMLv2).
162162
- https://github.com/eclipse-sirius/sirius-web/issues/3664[#3664] [core] The Default.svg image is no longer displayed with the new architecture.

packages/compatibility/backend/sirius-components-compatibility-emf/src/test/java/org/eclipse/sirius/components/compatibility/emf/compatibility/diagrams/TestDiagramBuilder.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.eclipse.sirius.components.diagrams.ArrowStyle;
2020
import org.eclipse.sirius.components.diagrams.CollapsingState;
2121
import org.eclipse.sirius.components.diagrams.Diagram;
22+
import org.eclipse.sirius.components.diagrams.DiagramStyle;
2223
import org.eclipse.sirius.components.diagrams.Edge;
2324
import org.eclipse.sirius.components.diagrams.EdgeStyle;
2425
import org.eclipse.sirius.components.diagrams.FreeFormLayoutStrategy;
@@ -59,6 +60,7 @@ public Diagram getDiagram(String id) {
5960
.size(Size.UNDEFINED)
6061
.nodes(List.of())
6162
.edges(List.of())
63+
.style(DiagramStyle.newDiagramStyle().background("#FAFAFA").build())
6264
.build();
6365
}
6466

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.eclipse.sirius.components.compatibility.emf.modeloperations.CreateViewOperationHandler;
2929
import org.eclipse.sirius.components.core.api.IEditingContext;
3030
import org.eclipse.sirius.components.diagrams.Diagram;
31+
import org.eclipse.sirius.components.diagrams.DiagramStyle;
3132
import org.eclipse.sirius.components.diagrams.FreeFormLayoutStrategy;
3233
import org.eclipse.sirius.components.diagrams.INodeStyle;
3334
import org.eclipse.sirius.components.diagrams.InsideLabelLocation;
@@ -88,6 +89,7 @@ public void initialize() {
8889
.nodeDescriptions(List.of(this.getNodeDescription(UUID.randomUUID().toString())))
8990
.edgeDescriptions(List.of())
9091
.dropHandler(variableManager -> new Failure(""))
92+
.styleProvider(variableManager -> DiagramStyle.newDiagramStyle().build())
9193
.build();
9294

9395
Diagram diagram = Diagram.newDiagram(UUID.randomUUID().toString())
@@ -98,6 +100,7 @@ public void initialize() {
98100
.size(Size.of(100, 100))
99101
.nodes(new ArrayList<>())
100102
.edges(List.of())
103+
.style(DiagramStyle.newDiagramStyle().background("#FAFAFA").build())
101104
.build();
102105

103106
IDiagramContext diagramContext = new IDiagramContext.NoOp() {

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.eclipse.sirius.components.core.api.IEditingContext;
2929
import org.eclipse.sirius.components.diagrams.CollapsingState;
3030
import org.eclipse.sirius.components.diagrams.Diagram;
31+
import org.eclipse.sirius.components.diagrams.DiagramStyle;
3132
import org.eclipse.sirius.components.diagrams.FreeFormLayoutStrategy;
3233
import org.eclipse.sirius.components.diagrams.INodeStyle;
3334
import org.eclipse.sirius.components.diagrams.ImageNodeStyle;
@@ -91,6 +92,7 @@ public void initialize() {
9192
.nodeDescriptions(List.of(this.getNodeDescription(UUID.randomUUID().toString())))
9293
.edgeDescriptions(List.of())
9394
.dropHandler(variableManager -> new Failure(""))
95+
.styleProvider(variableManager -> DiagramStyle.newDiagramStyle().build())
9496
.build();
9597

9698
Node node = Node.newNode(UUID.randomUUID().toString())
@@ -135,6 +137,7 @@ public void initialize() {
135137
.size(Size.of(100, 100))
136138
.nodes(List.of(node))
137139
.edges(List.of())
140+
.style(DiagramStyle.newDiagramStyle().background("#FAFAFA").build())
138141
.build();
139142

140143
IDiagramContext diagramContext = new IDiagramContext.NoOp() {

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.eclipse.sirius.components.compatibility.diagrams.DiagramLabelProvider;
2525
import org.eclipse.sirius.components.compatibility.services.diagrams.api.IDiagramDescriptionConverter;
2626
import org.eclipse.sirius.components.diagrams.ArrangeLayoutDirection;
27+
import org.eclipse.sirius.components.diagrams.DiagramStyle;
2728
import org.eclipse.sirius.components.diagrams.description.DiagramDescription;
2829
import org.eclipse.sirius.components.diagrams.description.DiagramDescription.Builder;
2930
import org.eclipse.sirius.components.interpreter.AQLInterpreter;
@@ -41,6 +42,8 @@ public class DiagramDescriptionConverter implements IDiagramDescriptionConverter
4142

4243
private static final String FORCE_AUTO_LAYOUT = "FORCE_AUTO_LAYOUT";
4344

45+
private static final String DEFAULT_BACKGROUND_COLOR = "transparent";
46+
4447
private final List<IDiagramDescriptionPopulator> diagramDescriptionPopulators;
4548

4649
private final IAQLInterpreterFactory interpreterFactory;
@@ -67,7 +70,8 @@ public DiagramDescription convert(org.eclipse.sirius.diagram.description.Diagram
6770
.canCreatePredicate(canCreatePredicate)
6871
.labelProvider(labelProvider)
6972
.autoLayout(this.isAutoLayoutMode(siriusDiagramDescription))
70-
.arrangeLayoutDirection(ArrangeLayoutDirection.UNDEFINED);
73+
.arrangeLayoutDirection(ArrangeLayoutDirection.UNDEFINED)
74+
.styleProvider(variableManager -> DiagramStyle.newDiagramStyle().background(DEFAULT_BACKGROUND_COLOR).build());
7175

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

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,4 +109,10 @@ public boolean isFaded(IDiagramElement diagramElement) {
109109
}
110110
return isFaded;
111111
}
112+
113+
@Override
114+
public boolean isDiagramEmpty(IDiagramService diagramService) {
115+
return diagramService.getDiagramContext().getDiagram().getNodes().isEmpty() && diagramService.getDiagramContext().getViewCreationRequests().isEmpty() ||
116+
diagramService.getDiagramContext().getDiagram().getNodes().size() == 1 && !diagramService.getDiagramContext().getViewDeletionRequests().isEmpty();
117+
}
112118
}

packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/java/org/eclipse/sirius/components/collaborative/diagrams/api/IDiagramServices.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,6 @@ public interface IDiagramServices {
4141
boolean isHidden(IDiagramElement diagramElement);
4242

4343
boolean isFaded(IDiagramElement diagramElement);
44+
45+
boolean isDiagramEmpty(IDiagramService diagramService);
4446
}

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
@@ -35,9 +35,14 @@ type Diagram implements Representation {
3535
position: Position!
3636
nodes: [Node!]!
3737
edges: [Edge!]!
38+
style: DiagramStyle!
3839
layoutData: DiagramLayoutData!
3940
}
4041

42+
type DiagramStyle {
43+
background: String
44+
}
45+
4146
type DiagramLayoutData {
4247
nodeLayoutData: [NodeLayoutData!]!
4348
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.eclipse.sirius.components.core.api.IPayload;
3232
import org.eclipse.sirius.components.core.api.IRepresentationDescriptionSearchService;
3333
import org.eclipse.sirius.components.diagrams.Diagram;
34+
import org.eclipse.sirius.components.diagrams.DiagramStyle;
3435
import org.eclipse.sirius.components.diagrams.Position;
3536
import org.eclipse.sirius.components.diagrams.Size;
3637
import org.junit.jupiter.api.Test;
@@ -56,6 +57,7 @@ public class DiagramEventProcessorTests {
5657
.size(Size.UNDEFINED)
5758
.nodes(List.of())
5859
.edges(List.of())
60+
.style(DiagramStyle.newDiagramStyle().background("#FAFAFA").build())
5961
.build();
6062

6163
private final IDiagramCreationService diagramCreationService = new MockDiagramCreationService(INITIAL_TEST_DIAGRAM);

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.eclipse.sirius.components.core.api.IPayload;
3333
import org.eclipse.sirius.components.core.api.IRepresentationDescriptionSearchService;
3434
import org.eclipse.sirius.components.diagrams.Diagram;
35+
import org.eclipse.sirius.components.diagrams.DiagramStyle;
3536
import org.eclipse.sirius.components.diagrams.description.DiagramDescription;
3637
import org.eclipse.sirius.components.representations.Failure;
3738
import org.eclipse.sirius.components.representations.IRepresentationDescription;
@@ -64,6 +65,7 @@ public Optional<IRepresentationDescription> findById(IEditingContext editingCont
6465
.nodeDescriptions(new ArrayList<>())
6566
.targetObjectIdProvider(variableManager -> "targetObjectId")
6667
.dropHandler(variableManager -> new Failure(""))
68+
.styleProvider(variableManager -> DiagramStyle.newDiagramStyle().build())
6769
.build();
6870
// @formatter:on
6971

0 commit comments

Comments
 (0)