Skip to content

Commit

Permalink
[2514] Add InsideLabelDescription in NodeDescription
Browse files Browse the repository at this point in the history
Bug: #2514
Signed-off-by: Guillaume Coutable <guillaume.coutable@obeo.fr>
  • Loading branch information
gcoutable authored and pcdavid committed Oct 31, 2023
1 parent 6532443 commit 6ccd6b8
Show file tree
Hide file tree
Showing 26 changed files with 298 additions and 123 deletions.
3 changes: 2 additions & 1 deletion CHANGELOG.adoc
Expand Up @@ -35,7 +35,8 @@ For example, Diagram & Form domains are not root domains because `DiagramDescrip
- https://github.com/eclipse-sirius/sirius-web/issues/2453[#2453] [diagram] The GraphQL fields `DeleteFromDiagramSuccessPayload`, `EditLabelSuccessPayload` and `DropOnDiagramSuccessPayload` now expects to have a list of messages.
- https://github.com/eclipse-sirius/sirius-web/issues/2514[#2514] [diagram] Move and rename the RectangleNodeStyle `withHeader` attribute to InsideLabel `isHeader`.
It requires to add a `isHeaderProvider` to the _LabelDescription_ of Node.
Update the graphql api accordingly.
Replace only for the programmatic API the _LabelDescription_ type in _NodeDescription_ by _InsideLabelDescription_ and add the inside label location.
Update the graphql API accordingly.

=== Dependency update

Expand Down
Expand Up @@ -28,9 +28,10 @@
import org.eclipse.sirius.components.core.api.IObjectService;
import org.eclipse.sirius.components.core.api.IRepresentationMetadataSearchService;
import org.eclipse.sirius.components.diagrams.FreeFormLayoutStrategy;
import org.eclipse.sirius.components.diagrams.InsideLabelLocation;
import org.eclipse.sirius.components.diagrams.Size;
import org.eclipse.sirius.components.diagrams.description.EdgeDescription;
import org.eclipse.sirius.components.diagrams.description.LabelDescription;
import org.eclipse.sirius.components.diagrams.description.InsideLabelDescription;
import org.eclipse.sirius.components.diagrams.description.LabelStyleDescription;
import org.eclipse.sirius.components.diagrams.description.NodeDescription;
import org.eclipse.sirius.components.interpreter.AQLInterpreter;
Expand Down Expand Up @@ -100,11 +101,12 @@ private NodeDescription createNodeDescription(String id) {
.iconURLProvider(variableManager -> List.of())
.build();

LabelDescription labelDescription = LabelDescription.newLabelDescription(id)
InsideLabelDescription insideLabelDescription = InsideLabelDescription.newInsideLabelDescription(id)
.idProvider(variableManager -> "")
.textProvider(variableManager -> "")
.styleDescriptionProvider(variableManager -> styleDescription)
.isHeaderProvider(vm -> false)
.insideLabelLocation(InsideLabelLocation.TOP_CENTER)
.build();

return NodeDescription.newNodeDescription(id)
Expand All @@ -113,7 +115,7 @@ private NodeDescription createNodeDescription(String id) {
.targetObjectKindProvider(variableManager -> "")
.targetObjectLabelProvider(variableManager -> "")
.semanticElementsProvider(variableManager -> List.of())
.labelDescription(labelDescription)
.insideLabelDescription(insideLabelDescription)
.styleProvider(variableManager -> null)
.childrenLayoutStrategyProvider(variableManager -> new FreeFormLayoutStrategy())
.sizeProvider(variableManager -> Size.UNDEFINED)
Expand Down
Expand Up @@ -32,13 +32,14 @@
import org.eclipse.sirius.components.diagrams.Diagram;
import org.eclipse.sirius.components.diagrams.FreeFormLayoutStrategy;
import org.eclipse.sirius.components.diagrams.INodeStyle;
import org.eclipse.sirius.components.diagrams.InsideLabelLocation;
import org.eclipse.sirius.components.diagrams.LineStyle;
import org.eclipse.sirius.components.diagrams.Position;
import org.eclipse.sirius.components.diagrams.RectangularNodeStyle;
import org.eclipse.sirius.components.diagrams.Size;
import org.eclipse.sirius.components.diagrams.ViewCreationRequest;
import org.eclipse.sirius.components.diagrams.description.DiagramDescription;
import org.eclipse.sirius.components.diagrams.description.LabelDescription;
import org.eclipse.sirius.components.diagrams.description.InsideLabelDescription;
import org.eclipse.sirius.components.diagrams.description.LabelStyleDescription;
import org.eclipse.sirius.components.diagrams.description.NodeDescription;
import org.eclipse.sirius.components.diagrams.description.SynchronizationPolicy;
Expand Down Expand Up @@ -193,11 +194,12 @@ private NodeDescription getNodeDescription(String nodeDescriptionId) {
.iconURLProvider(variableManager -> List.of())
.build();

LabelDescription labelDescription = LabelDescription.newLabelDescription("labelDescriptionId")
.idProvider(variableManager -> "labelId")
InsideLabelDescription insideLabelDescription = InsideLabelDescription.newInsideLabelDescription("insideLabelDescriptionId")
.idProvider(variableManager -> "insideLabelId")
.textProvider(variableManager -> "Node")
.styleDescriptionProvider(variableManager -> labelStyleDescription)
.isHeaderProvider(vm -> false)
.insideLabelLocation(InsideLabelLocation.TOP_CENTER)
.build();

Function<VariableManager, INodeStyle> nodeStyleProvider = variableManager -> {
Expand All @@ -224,7 +226,7 @@ private NodeDescription getNodeDescription(String nodeDescriptionId) {
.targetObjectIdProvider(targetObjectIdProvider)
.targetObjectKindProvider(variableManager -> "")
.targetObjectLabelProvider(variableManager -> "")
.labelDescription(labelDescription)
.insideLabelDescription(insideLabelDescription)
.styleProvider(nodeStyleProvider)
.childrenLayoutStrategyProvider(variableManager -> new FreeFormLayoutStrategy())
.sizeProvider(variableManager -> Size.UNDEFINED)
Expand Down
Expand Up @@ -43,7 +43,7 @@
import org.eclipse.sirius.components.diagrams.ViewDeletionRequest;
import org.eclipse.sirius.components.diagrams.ViewModifier;
import org.eclipse.sirius.components.diagrams.description.DiagramDescription;
import org.eclipse.sirius.components.diagrams.description.LabelDescription;
import org.eclipse.sirius.components.diagrams.description.InsideLabelDescription;
import org.eclipse.sirius.components.diagrams.description.LabelStyleDescription;
import org.eclipse.sirius.components.diagrams.description.NodeDescription;
import org.eclipse.sirius.components.diagrams.description.SynchronizationPolicy;
Expand Down Expand Up @@ -171,11 +171,12 @@ private NodeDescription getNodeDescription(String nodeDescriptionId) {
.iconURLProvider(variableManager -> List.of())
.build();

LabelDescription labelDescription = LabelDescription.newLabelDescription("labelDescriptionId")
.idProvider(variableManager -> "labelId")
InsideLabelDescription insideLabelDescription = InsideLabelDescription.newInsideLabelDescription("insideLabelDescriptionId")
.idProvider(variableManager -> "insideLabelId")
.textProvider(variableManager -> "Node")
.styleDescriptionProvider(variableManager -> labelStyleDescription)
.isHeaderProvider(vm -> false)
.insideLabelLocation(InsideLabelLocation.TOP_CENTER)
.build();

Function<VariableManager, INodeStyle> nodeStyleProvider = variableManager -> {
Expand All @@ -202,7 +203,7 @@ private NodeDescription getNodeDescription(String nodeDescriptionId) {
.targetObjectIdProvider(targetObjectIdProvider)
.targetObjectKindProvider(variableManager -> "")
.targetObjectLabelProvider(variableManager -> "")
.labelDescription(labelDescription)
.insideLabelDescription(insideLabelDescription)
.styleProvider(nodeStyleProvider)
.childrenLayoutStrategyProvider(variableManager -> new FreeFormLayoutStrategy())
.sizeProvider(variableManager -> Size.UNDEFINED)
Expand Down
Expand Up @@ -29,8 +29,9 @@
import org.eclipse.sirius.components.diagrams.INodeStyle;
import org.eclipse.sirius.components.diagrams.IconLabelNodeStyle;
import org.eclipse.sirius.components.diagrams.ImageNodeStyle;
import org.eclipse.sirius.components.diagrams.InsideLabelLocation;
import org.eclipse.sirius.components.diagrams.NodeType;
import org.eclipse.sirius.components.diagrams.description.LabelDescription;
import org.eclipse.sirius.components.diagrams.description.InsideLabelDescription;
import org.eclipse.sirius.components.diagrams.description.LabelStyleDescription;
import org.eclipse.sirius.components.diagrams.description.NodeDescription;
import org.eclipse.sirius.components.diagrams.description.SynchronizationPolicy;
Expand Down Expand Up @@ -84,11 +85,12 @@ public NodeDescription convert(AbstractNodeMapping abstractNodeMapping, AQLInter
Function<VariableManager, LabelStyleDescription> labelStyleDescriptionProvider = this.getLabelStyleDescriptionProvider(labelStyleDescriptionConverter, abstractNodeMappingDescriptionProvider);
Function<VariableManager, Boolean> isHeaderProvider = new AbstractNodeMappingIsHeaderProvider(interpreter, abstractNodeMapping);

LabelDescription labelDescription = LabelDescription.newLabelDescription(this.identifierProvider.getIdentifier(abstractNodeMapping) + LabelDescription.LABEL_SUFFIX)
InsideLabelDescription insideLabelDescription = InsideLabelDescription.newInsideLabelDescription(this.identifierProvider.getIdentifier(abstractNodeMapping) + InsideLabelDescription.INSIDE_LABEL_SUFFIX)
.idProvider(labelIdProvider)
.textProvider(labelExpressionProvider)
.styleDescriptionProvider(labelStyleDescriptionProvider)
.isHeaderProvider(isHeaderProvider)
.insideLabelLocation(InsideLabelLocation.TOP_CENTER)
.build();

Function<VariableManager, String> semanticTargetIdProvider = variableManager -> {
Expand Down Expand Up @@ -149,7 +151,7 @@ public NodeDescription convert(AbstractNodeMapping abstractNodeMapping, AQLInter
.targetObjectLabelProvider(semanticTargetLabelProvider)
.semanticElementsProvider(semanticElementsProvider)
.synchronizationPolicy(synchronizationPolicy)
.labelDescription(labelDescription)
.insideLabelDescription(insideLabelDescription)
.styleProvider(styleProvider)
.childrenLayoutStrategyProvider(childrenLayoutStrategyProvider)
.sizeProvider(sizeProvider)
Expand Down Expand Up @@ -185,8 +187,8 @@ private Function<VariableManager, String> getLabelExpressionProvider(AQLInterpre

private Function<VariableManager, String> getLabelIdProvider() {
return variableManager -> {
Object parentId = variableManager.getVariables().get(LabelDescription.OWNER_ID);
return String.valueOf(parentId) + LabelDescription.LABEL_SUFFIX;
Object parentId = variableManager.getVariables().get(InsideLabelDescription.OWNER_ID);
return String.valueOf(parentId) + InsideLabelDescription.INSIDE_LABEL_SUFFIX;
};
}

Expand Down
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2019, 2022 Obeo and others.
* Copyright (c) 2019, 2023 Obeo and others.
* 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 Down
Expand Up @@ -151,7 +151,6 @@ private LabelDescription createLabelDescription(AQLInterpreter interpreter, Labe
.idProvider(labelIdProvider)
.textProvider(textProvider)
.styleDescriptionProvider(labelStyleDescriptionProvider)
.isHeaderProvider(vm -> false)
.build();

}
Expand Down
Expand Up @@ -29,7 +29,7 @@
import org.eclipse.sirius.components.diagrams.IconLabelNodeStyle;
import org.eclipse.sirius.components.diagrams.NodeType;
import org.eclipse.sirius.components.diagrams.RectangularNodeStyle;
import org.eclipse.sirius.components.diagrams.description.LabelDescription;
import org.eclipse.sirius.components.diagrams.description.InsideLabelDescription;
import org.eclipse.sirius.components.diagrams.description.LabelStyleDescription;
import org.eclipse.sirius.components.diagrams.description.NodeDescription;
import org.eclipse.sirius.components.diagrams.layout.incremental.provider.ImageSizeProvider;
Expand Down Expand Up @@ -118,10 +118,10 @@ public String getIdentifier(Object element) {
new ImageSizeProvider());

NodeDescription convertedNodeDescription = converter.convert(containerMapping, interpreter, new HashMap<>());
LabelDescription labelDescription = convertedNodeDescription.getLabelDescription();
InsideLabelDescription insideLabelDescription = convertedNodeDescription.getInsideLabelDescription();

String text = labelDescription.getTextProvider().apply(variableManager);
LabelStyleDescription labelStyleDescription = labelDescription.getStyleDescriptionProvider().apply(variableManager);
String text = insideLabelDescription.getTextProvider().apply(variableManager);
LabelStyleDescription labelStyleDescription = insideLabelDescription.getStyleDescriptionProvider().apply(variableManager);
Integer fontSize = labelStyleDescription.getFontSizeProvider().apply(variableManager);
Boolean isBold = labelStyleDescription.getBoldProvider().apply(variableManager);
Boolean isItalic = labelStyleDescription.getItalicProvider().apply(variableManager);
Expand Down Expand Up @@ -185,7 +185,7 @@ public String getIdentifier(Object element) {
assertThat(convertedNodeDescription.getTypeProvider().apply(variableManager)).isEqualTo(NodeType.NODE_RECTANGLE);
assertThat(convertedNodeDescription.getStyleProvider().apply(variableManager)).isInstanceOf(RectangularNodeStyle.class);
assertThat(convertedNodeDescription.getStyleProvider().apply(variableManager)).asInstanceOf(InstanceOfAssertFactories.type(RectangularNodeStyle.class));
assertThat(convertedNodeDescription.getLabelDescription().getIsHeaderProvider().apply(variableManager)).isEqualTo(true);
assertThat(convertedNodeDescription.getInsideLabelDescription().getIsHeaderProvider().apply(variableManager)).isEqualTo(true);

assertThat(convertedNodeDescription.getChildNodeDescriptions()).hasSize(1);
NodeDescription subNodeDescription = convertedNodeDescription.getChildNodeDescriptions().get(0);
Expand Down Expand Up @@ -247,10 +247,10 @@ public String getIdentifier(Object element) {
new ImageSizeProvider());

NodeDescription convertedNodeDescription = converter.convert(nodeMapping, interpreter, new HashMap<>());
LabelDescription labelDescription = convertedNodeDescription.getLabelDescription();
InsideLabelDescription insideLabelDescription = convertedNodeDescription.getInsideLabelDescription();

String text = labelDescription.getTextProvider().apply(variableManager);
LabelStyleDescription labelStyleDescription = labelDescription.getStyleDescriptionProvider().apply(variableManager);
String text = insideLabelDescription.getTextProvider().apply(variableManager);
LabelStyleDescription labelStyleDescription = insideLabelDescription.getStyleDescriptionProvider().apply(variableManager);
Integer fontSize = labelStyleDescription.getFontSizeProvider().apply(variableManager);
Boolean isBold = labelStyleDescription.getBoldProvider().apply(variableManager);
Boolean isItalic = labelStyleDescription.getItalicProvider().apply(variableManager);
Expand Down
Expand Up @@ -53,7 +53,7 @@
import org.eclipse.sirius.components.diagrams.ViewModifier;
import org.eclipse.sirius.components.diagrams.description.EdgeDescription;
import org.eclipse.sirius.components.diagrams.description.IDiagramElementDescription;
import org.eclipse.sirius.components.diagrams.description.LabelDescription;
import org.eclipse.sirius.components.diagrams.description.InsideLabelDescription;
import org.eclipse.sirius.components.diagrams.description.LabelStyleDescription;
import org.eclipse.sirius.components.diagrams.description.NodeDescription;
import org.eclipse.sirius.components.diagrams.tests.TestDiagramBuilder;
Expand Down Expand Up @@ -422,19 +422,20 @@ private NodeDescription createNodeDescription(String nodeDescriptionId) {
.iconURLProvider(variableManager -> List.of())
.build();

var labelDescription = LabelDescription.newLabelDescription("labelDescription")
var insideLabelDescription = InsideLabelDescription.newInsideLabelDescription("insideLabelDescription")
.idProvider(vm -> "")
.styleDescriptionProvider(vm -> styleDescription)
.textProvider(vm -> "")
.isHeaderProvider(vm -> false)
.insideLabelLocation(InsideLabelLocation.TOP_CENTER)
.build();

return NodeDescription.newNodeDescription(nodeDescriptionId)
.borderNodeDescriptions(List.of())
.childNodeDescriptions(List.of())
.childrenLayoutStrategyProvider(vm -> new FreeFormLayoutStrategy())
.deleteHandler(vm -> new Success())
.labelDescription(labelDescription)
.insideLabelDescription(insideLabelDescription)
.labelEditHandler((vm, newLabel) -> new Success())
.reusedBorderNodeDescriptionIds(List.of())
.reusedChildNodeDescriptionIds(List.of())
Expand Down
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2021 THALES GLOBAL SERVICES.
* Copyright (c) 2021, 2023 THALES GLOBAL SERVICES.
* 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 Down

0 comments on commit 6ccd6b8

Please sign in to comment.