diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 7670c25d50..e231100be3 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -29,6 +29,9 @@ For example, Diagram & Form domains are not root domains because `DiagramDescrip - https://github.com/eclipse-sirius/sirius-web/issues/1712[#1712] [diagram] The GraphQL type `Node` must now implement `isLabelEditable` boolean field. - https://github.com/eclipse-sirius/sirius-web/issues/2456[#2456] [sirius-web] The GraphQL field `CreateChildSuccessPayload` now expects to have a list of messages. - https://github.com/eclipse-sirius/sirius-web/issues/1982[#1982] [diagram] Change the diagram structure. The Node's 'label' attribute has been renamed into 'insideLabel' and its type changed from `Label` to `InsideLabel` (which is currently identical to `Label` except for the name). +- 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. === Dependency update diff --git a/packages/compatibility/backend/sirius-components-compatibility-emf/src/test/java/org/eclipse/sirius/components/compatibility/emf/compatibility/diagrams/EdgeMappingConverterTests.java b/packages/compatibility/backend/sirius-components-compatibility-emf/src/test/java/org/eclipse/sirius/components/compatibility/emf/compatibility/diagrams/EdgeMappingConverterTests.java index 25c82b366d..daf5753e8d 100644 --- a/packages/compatibility/backend/sirius-components-compatibility-emf/src/test/java/org/eclipse/sirius/components/compatibility/emf/compatibility/diagrams/EdgeMappingConverterTests.java +++ b/packages/compatibility/backend/sirius-components-compatibility-emf/src/test/java/org/eclipse/sirius/components/compatibility/emf/compatibility/diagrams/EdgeMappingConverterTests.java @@ -90,7 +90,6 @@ public String getIdentifier(Object element) { } private NodeDescription createNodeDescription(String id) { - // @formatter:off LabelStyleDescription styleDescription = LabelStyleDescription.newLabelStyleDescription() .colorProvider(variableManager -> "") .fontSizeProvider(variableManager -> 0) @@ -105,6 +104,7 @@ private NodeDescription createNodeDescription(String id) { .idProvider(variableManager -> "") .textProvider(variableManager -> "") .styleDescriptionProvider(variableManager -> styleDescription) + .isHeaderProvider(vm -> false) .build(); return NodeDescription.newNodeDescription(id) @@ -122,7 +122,6 @@ private NodeDescription createNodeDescription(String id) { .labelEditHandler((variableManager, newLabel) -> new Success()) .deleteHandler(variableManager -> new Success()) .build(); - // @formatter:on } /** diff --git a/packages/compatibility/backend/sirius-components-compatibility-emf/src/test/java/org/eclipse/sirius/components/compatibility/emf/compatibility/operations/CreateViewOperationHandlerTests.java b/packages/compatibility/backend/sirius-components-compatibility-emf/src/test/java/org/eclipse/sirius/components/compatibility/emf/compatibility/operations/CreateViewOperationHandlerTests.java index a6c63d2db4..c9c359a246 100644 --- a/packages/compatibility/backend/sirius-components-compatibility-emf/src/test/java/org/eclipse/sirius/components/compatibility/emf/compatibility/operations/CreateViewOperationHandlerTests.java +++ b/packages/compatibility/backend/sirius-components-compatibility-emf/src/test/java/org/eclipse/sirius/components/compatibility/emf/compatibility/operations/CreateViewOperationHandlerTests.java @@ -78,7 +78,6 @@ public class CreateViewOperationHandlerTests { public void initialize() { this.operationTestContext = new OperationTestContext(); - // @formatter:off DiagramDescription diagramDescription = DiagramDescription.newDiagramDescription(UUID.randomUUID().toString()) .label("DiagramDescriptionTest") .targetObjectIdProvider(variableManager -> "diagramTargetObjectId") @@ -107,7 +106,6 @@ public List getViewCreationRequests() { } }; this.operationTestContext.getVariables().put(IDiagramContext.DIAGRAM_CONTEXT, diagramContext); - // @formatter:on AdapterFactoryEditingDomain editingDomain = new EditingDomainFactory().create(); EditingContext editingContext = new EditingContext(UUID.randomUUID().toString(), editingDomain, Map.of()); @@ -185,7 +183,6 @@ private void handleAndCheckExecution(String variableName, ENamedElement renamedE } private NodeDescription getNodeDescription(String nodeDescriptionId) { - // @formatter:off LabelStyleDescription labelStyleDescription = LabelStyleDescription.newLabelStyleDescription() .colorProvider(variableManager -> "#000000") .fontSizeProvider(variableManager -> 16) @@ -200,6 +197,7 @@ private NodeDescription getNodeDescription(String nodeDescriptionId) { .idProvider(variableManager -> "labelId") .textProvider(variableManager -> "Node") .styleDescriptionProvider(variableManager -> labelStyleDescription) + .isHeaderProvider(vm -> false) .build(); Function nodeStyleProvider = variableManager -> { @@ -235,7 +233,6 @@ private NodeDescription getNodeDescription(String nodeDescriptionId) { .labelEditHandler((variableManager, newLabel) -> new Success()) .deleteHandler(variableManager -> new Success()) .build(); - // @formatter:on } } diff --git a/packages/compatibility/backend/sirius-components-compatibility-emf/src/test/java/org/eclipse/sirius/components/compatibility/emf/compatibility/operations/DeleteViewOperationHandlerTests.java b/packages/compatibility/backend/sirius-components-compatibility-emf/src/test/java/org/eclipse/sirius/components/compatibility/emf/compatibility/operations/DeleteViewOperationHandlerTests.java index ec7db42383..293bf1f10b 100644 --- a/packages/compatibility/backend/sirius-components-compatibility-emf/src/test/java/org/eclipse/sirius/components/compatibility/emf/compatibility/operations/DeleteViewOperationHandlerTests.java +++ b/packages/compatibility/backend/sirius-components-compatibility-emf/src/test/java/org/eclipse/sirius/components/compatibility/emf/compatibility/operations/DeleteViewOperationHandlerTests.java @@ -81,7 +81,6 @@ public class DeleteViewOperationHandlerTests { public void initialize() { this.operationTestContext = new OperationTestContext(); - // @formatter:off DiagramDescription diagramDescription = DiagramDescription.newDiagramDescription(UUID.randomUUID().toString()) .label("DiagramDescriptionTest") .targetObjectIdProvider(variableManager -> "diagramTargetObjectId") @@ -107,6 +106,7 @@ public void initialize() { .size(Size.of(10, 10)) .alignment(Position.at(0, 0)) .style(LabelStyle.newLabelStyle().color("").fontSize(0).iconURL("").build()) + .isHeader(false) .build()) .style(ImageNodeStyle.newImageNodeStyle().imageURL("").scalingFactor(0).build()) .position(Position.at(0, 0)) @@ -135,7 +135,6 @@ public List getViewDeletionRequests() { } }; this.operationTestContext.getVariables().put(IDiagramContext.DIAGRAM_CONTEXT, diagramContext); - // @formatter:on AdapterFactoryEditingDomain editingDomain = new EditingDomainFactory().create(); EditingContext editingContext = new EditingContext(UUID.randomUUID().toString(), editingDomain, Map.of()); @@ -162,7 +161,6 @@ public void deleteViewOperationHandlerNominalCaseTest() { } private NodeDescription getNodeDescription(String nodeDescriptionId) { - // @formatter:off LabelStyleDescription labelStyleDescription = LabelStyleDescription.newLabelStyleDescription() .colorProvider(variableManager -> "#000000") .fontSizeProvider(variableManager -> 16) @@ -177,6 +175,7 @@ private NodeDescription getNodeDescription(String nodeDescriptionId) { .idProvider(variableManager -> "labelId") .textProvider(variableManager -> "Node") .styleDescriptionProvider(variableManager -> labelStyleDescription) + .isHeaderProvider(vm -> false) .build(); Function nodeStyleProvider = variableManager -> { @@ -212,7 +211,6 @@ private NodeDescription getNodeDescription(String nodeDescriptionId) { .labelEditHandler((variableManager, newLabel) -> new Success()) .deleteHandler(variableManager -> new Success()) .build(); - // @formatter:on } } diff --git a/packages/compatibility/backend/sirius-components-compatibility/src/main/java/org/eclipse/sirius/components/compatibility/diagrams/AbstractNodeMappingConverter.java b/packages/compatibility/backend/sirius-components-compatibility/src/main/java/org/eclipse/sirius/components/compatibility/diagrams/AbstractNodeMappingConverter.java index beb2706f32..907d99cda1 100644 --- a/packages/compatibility/backend/sirius-components-compatibility/src/main/java/org/eclipse/sirius/components/compatibility/diagrams/AbstractNodeMappingConverter.java +++ b/packages/compatibility/backend/sirius-components-compatibility/src/main/java/org/eclipse/sirius/components/compatibility/diagrams/AbstractNodeMappingConverter.java @@ -82,14 +82,14 @@ public NodeDescription convert(AbstractNodeMapping abstractNodeMapping, AQLInter Function labelIdProvider = this.getLabelIdProvider(); Function labelExpressionProvider = this.getLabelExpressionProvider(interpreter, abstractNodeMappingDescriptionProvider); Function labelStyleDescriptionProvider = this.getLabelStyleDescriptionProvider(labelStyleDescriptionConverter, abstractNodeMappingDescriptionProvider); + Function isHeaderProvider = new AbstractNodeMappingIsHeaderProvider(interpreter, abstractNodeMapping); - // @formatter:off LabelDescription labelDescription = LabelDescription.newLabelDescription(this.identifierProvider.getIdentifier(abstractNodeMapping) + LabelDescription.LABEL_SUFFIX) .idProvider(labelIdProvider) .textProvider(labelExpressionProvider) .styleDescriptionProvider(labelStyleDescriptionProvider) + .isHeaderProvider(isHeaderProvider) .build(); - // @formatter:on Function semanticTargetIdProvider = variableManager -> { return variableManager.get(VariableManager.SELF, Object.class).map(this.objectService::getId).orElse(null); @@ -124,11 +124,9 @@ public NodeDescription convert(AbstractNodeMapping abstractNodeMapping, AQLInter List childNodeDescriptions = this.getChildNodeDescriptions(abstractNodeMapping, interpreter, id2NodeDescriptions); - // @formatter:off List borderNodeDescriptions = abstractNodeMapping.getBorderedNodeMappings().stream() .map(borderNodeMapping -> this.convert(borderNodeMapping, interpreter, id2NodeDescriptions)) .toList(); - // @formatter:on ToolConverter toolConverter = new ToolConverter(interpreter, this.editService, this.modelOperationHandlerSwitchProvider); var deleteHandler = toolConverter.createDeleteToolHandler(abstractNodeMapping.getDeletionDescription()); @@ -144,7 +142,6 @@ public NodeDescription convert(AbstractNodeMapping abstractNodeMapping, AQLInter collapsible = new ContainerMappingQuery(containerMapping).isRegion(); } - // @formatter:off NodeDescription description = NodeDescription.newNodeDescription(this.identifierProvider.getIdentifier(abstractNodeMapping)) .typeProvider(typeProvider) .targetObjectIdProvider(semanticTargetIdProvider) @@ -162,7 +159,6 @@ public NodeDescription convert(AbstractNodeMapping abstractNodeMapping, AQLInter .labelEditHandler(labelEditHandler) .deleteHandler(deleteHandler) .build(); - // @formatter:on id2NodeDescriptions.put(description.getId(), description); @@ -195,7 +191,6 @@ private Function getLabelIdProvider() { } private List getChildNodeDescriptions(AbstractNodeMapping abstractNodeMapping, AQLInterpreter interpreter, Map id2NodeDescriptions) { - // @formatter:off List childNodeDescriptions = new ArrayList<>(); if (abstractNodeMapping instanceof ContainerMapping) { @@ -211,7 +206,6 @@ private List getChildNodeDescriptions(AbstractNodeMapping abstr childNodeDescriptions.addAll(childNodeMappingDescriptions); childNodeDescriptions.addAll(childContainerMappingDescriptions); } - // @formatter:on return childNodeDescriptions; diff --git a/packages/compatibility/backend/sirius-components-compatibility/src/main/java/org/eclipse/sirius/components/compatibility/diagrams/AbstractNodeMappingIsHeaderProvider.java b/packages/compatibility/backend/sirius-components-compatibility/src/main/java/org/eclipse/sirius/components/compatibility/diagrams/AbstractNodeMappingIsHeaderProvider.java new file mode 100644 index 0000000000..c809ec0c43 --- /dev/null +++ b/packages/compatibility/backend/sirius-components-compatibility/src/main/java/org/eclipse/sirius/components/compatibility/diagrams/AbstractNodeMappingIsHeaderProvider.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright (c) 2023 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 + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.sirius.components.compatibility.diagrams; + +import java.util.Objects; +import java.util.function.Function; + +import org.eclipse.sirius.components.interpreter.AQLInterpreter; +import org.eclipse.sirius.components.representations.VariableManager; +import org.eclipse.sirius.diagram.business.api.query.ContainerMappingQuery; +import org.eclipse.sirius.diagram.description.AbstractNodeMapping; +import org.eclipse.sirius.diagram.description.ContainerMapping; +import org.eclipse.sirius.diagram.description.style.FlatContainerStyleDescription; +import org.eclipse.sirius.viewpoint.description.style.LabelStyleDescription; + +/** + * Used to return if the node mapping has a header. + * + * @author gcoutable + */ +public class AbstractNodeMappingIsHeaderProvider implements Function { + + private final AQLInterpreter interpreter; + + private final AbstractNodeMapping abstractNodeMapping; + + public AbstractNodeMappingIsHeaderProvider(AQLInterpreter interpreter, AbstractNodeMapping abstractNodeMapping) { + this.interpreter = Objects.requireNonNull(interpreter); + this.abstractNodeMapping = Objects.requireNonNull(abstractNodeMapping); + } + + @Override + public Boolean apply(VariableManager variableManager) { + LabelStyleDescription labelStyleDescription = new LabelStyleDescriptionProvider(this.interpreter, this.abstractNodeMapping).apply(variableManager); + return this.isHeader(variableManager, labelStyleDescription); + } + + private Boolean isHeader(VariableManager variableManager, LabelStyleDescription labelStyleDescription) { + if (labelStyleDescription instanceof FlatContainerStyleDescription flatContainerStyleDescription) { + return this.abstractNodeMapping instanceof ContainerMapping && new ContainerMappingQuery((ContainerMapping) this.abstractNodeMapping).isListContainer(); + } + return false; + } + +} diff --git a/packages/compatibility/backend/sirius-components-compatibility/src/main/java/org/eclipse/sirius/components/compatibility/diagrams/AbstractNodeMappingStyleProvider.java b/packages/compatibility/backend/sirius-components-compatibility/src/main/java/org/eclipse/sirius/components/compatibility/diagrams/AbstractNodeMappingStyleProvider.java index e842c7441d..90c54a09bc 100644 --- a/packages/compatibility/backend/sirius-components-compatibility/src/main/java/org/eclipse/sirius/components/compatibility/diagrams/AbstractNodeMappingStyleProvider.java +++ b/packages/compatibility/backend/sirius-components-compatibility/src/main/java/org/eclipse/sirius/components/compatibility/diagrams/AbstractNodeMappingStyleProvider.java @@ -79,15 +79,12 @@ private INodeStyle getNodeStyle(VariableManager variableManager, LabelStyleDescr style = workspaceImageDescriptionConverter.convert(); } else { // Fallback on Rectangular node style for now, until other styles are supported - - // @formatter:off style = RectangularNodeStyle.newRectangularNodeStyle() .color("rgb(200, 200, 200)") .borderColor("rgb(0, 0, 0)") .borderSize(1) .borderStyle(LineStyle.Solid) .build(); - // @formatter:on } return style; @@ -112,11 +109,9 @@ private boolean shouldBeConsideredAsListItemNodeStyle(VariableManager variableMa } private INodeStyle createListItemNodeStyle(VariableManager variableManager, LabelStyleDescription nodeStyleDescription) { - // @formatter:off return IconLabelNodeStyle.newIconLabelNodeStyle() .backgroundColor("transparent") .build(); - // @formatter:on } private INodeStyle createListNodeStyle(VariableManager variableManager, FlatContainerStyleDescription flatContainerStyleDescription) { @@ -132,16 +127,13 @@ private INodeStyle createListNodeStyle(VariableManager variableManager, FlatCont Result result = this.interpreter.evaluateExpression(variableManager.getVariables(), flatContainerStyleDescription.getBorderSizeComputationExpression()); int borderSize = result.asInt().getAsInt(); - // @formatter:off return RectangularNodeStyle.newRectangularNodeStyle() .color(color) .borderColor(borderColor) .borderSize(borderSize) .borderRadius(borderRadius) .borderStyle(borderStyle) - .withHeader(true) .build(); - // @formatter:on } private int getBorderRadius(FlatContainerStyleDescription flatContainerStyleDescription) { @@ -168,15 +160,12 @@ private RectangularNodeStyle createRectangularNodeStyle(VariableManager variable Result result = this.interpreter.evaluateExpression(variableManager.getVariables(), squareDescription.getBorderSizeComputationExpression()); int borderSize = result.asInt().getAsInt(); - // @formatter:off return RectangularNodeStyle.newRectangularNodeStyle() .color(color) .borderColor(borderColor) .borderSize(borderSize) .borderStyle(borderStyle) - .withHeader(false) .build(); - // @formatter:on } private RectangularNodeStyle createRectangularNodeStyle(VariableManager variableManager, FlatContainerStyleDescription flatContainerStyleDescription) { @@ -191,16 +180,13 @@ private RectangularNodeStyle createRectangularNodeStyle(VariableManager variable Result result = this.interpreter.evaluateExpression(variables, flatContainerStyleDescription.getBorderSizeComputationExpression()); int borderSize = result.asInt().getAsInt(); - // @formatter:off return RectangularNodeStyle.newRectangularNodeStyle() .color(color) .borderColor(borderColor) .borderSize(borderSize) .borderRadius(borderRadius) .borderStyle(borderStyle) - .withHeader(false) .build(); - // @formatter:on } private RectangularNodeStyle createRectangularNodeStyle(VariableManager variableManager, DotDescription dotDescription) { @@ -215,16 +201,13 @@ private RectangularNodeStyle createRectangularNodeStyle(VariableManager variable Result result = this.interpreter.evaluateExpression(variables, dotDescription.getBorderSizeComputationExpression()); int borderSize = result.asInt().getAsInt(); - // @formatter:off return RectangularNodeStyle.newRectangularNodeStyle() .color(color) .borderColor(borderColor) .borderSize(borderSize) .borderRadius(borderRadius) .borderStyle(borderStyle) - .withHeader(false) .build(); - // @formatter:on } } diff --git a/packages/compatibility/backend/sirius-components-compatibility/src/main/java/org/eclipse/sirius/components/compatibility/diagrams/EdgeMappingConverter.java b/packages/compatibility/backend/sirius-components-compatibility/src/main/java/org/eclipse/sirius/components/compatibility/diagrams/EdgeMappingConverter.java index b714c767e9..44f59447f8 100644 --- a/packages/compatibility/backend/sirius-components-compatibility/src/main/java/org/eclipse/sirius/components/compatibility/diagrams/EdgeMappingConverter.java +++ b/packages/compatibility/backend/sirius-components-compatibility/src/main/java/org/eclipse/sirius/components/compatibility/diagrams/EdgeMappingConverter.java @@ -96,7 +96,6 @@ public EdgeDescription convert(EdgeMapping edgeMapping, AQLInterpreter interpret LabelStyleDescriptionConverter labelStyleDescriptionConverter = new LabelStyleDescriptionConverter(interpreter, this.objectService); - // @formatter:off EdgeStyleDescription style = edgeMapping.getStyle(); Optional optionalBeginLabelDescription = Optional.ofNullable(style) @@ -131,7 +130,6 @@ public EdgeDescription convert(EdgeMapping edgeMapping, AQLInterpreter interpret optionalCenterLabelDescription.ifPresent(builder::centerLabelDescription); optionalEndLabelDescription.ifPresent(builder::endLabelDescription); return builder.build(); - // @formatter:on } private LabelDescription createLabelDescription(AQLInterpreter interpreter, LabelStyleDescriptionConverter labelStyleDescriptionConverter, @@ -149,13 +147,12 @@ private LabelDescription createLabelDescription(AQLInterpreter interpreter, Labe String id = this.identifierProvider.getIdentifier(edgeMapping) + idSuffix; StringValueProvider textProvider = new StringValueProvider(interpreter, labelExpression); - // @formatter:off return LabelDescription.newLabelDescription(id) .idProvider(labelIdProvider) .textProvider(textProvider) .styleDescriptionProvider(labelStyleDescriptionProvider) + .isHeaderProvider(vm -> false) .build(); - // @formatter:on } @@ -167,7 +164,6 @@ private LabelDescription createLabelDescription(AQLInterpreter interpreter, Labe * @return The relevant node descriptions created by the node and container description converters */ private List getNodeDescriptions(List mappings, Map id2NodeDescriptions) { - // @formatter:off return mappings.stream() .filter(AbstractNodeMapping.class::isInstance) .map(AbstractNodeMapping.class::cast) @@ -175,7 +171,6 @@ private List getNodeDescriptions(List ma .map(id2NodeDescriptions::get) .filter(Objects::nonNull) .toList(); - // @formatter:on } private Function> getSemanticElementsProvider(AQLInterpreter interpreter, EdgeMapping edgeMapping, List sourceNodeDescriptions) { @@ -187,11 +182,9 @@ private Function> getSemanticElementsProvider(AQLInterp String domainClass = Optional.ofNullable(edgeMapping.getDomainClass()).orElse(""); semanticElementsProvider = this.semanticCandidatesProviderFactory.getSemanticCandidatesProvider(interpreter, domainClass, semanticCandidatesExpression, preconditionExpression); } else { - // @formatter:off List sourceNodeDescriptionIds = sourceNodeDescriptions.stream() .map(NodeDescription::getId) .toList(); - // @formatter:on semanticElementsProvider = new RelationBasedSemanticElementsProvider(sourceNodeDescriptionIds); } diff --git a/packages/compatibility/backend/sirius-components-compatibility/src/test/java/org/eclipse/sirius/components/compatibility/diagrams/MappingConverterTests.java b/packages/compatibility/backend/sirius-components-compatibility/src/test/java/org/eclipse/sirius/components/compatibility/diagrams/MappingConverterTests.java index 11a2619db1..9c156ffa59 100644 --- a/packages/compatibility/backend/sirius-components-compatibility/src/test/java/org/eclipse/sirius/components/compatibility/diagrams/MappingConverterTests.java +++ b/packages/compatibility/backend/sirius-components-compatibility/src/test/java/org/eclipse/sirius/components/compatibility/diagrams/MappingConverterTests.java @@ -117,7 +117,7 @@ public String getIdentifier(Object element) { var converter = new AbstractNodeMappingConverter(new IObjectService.NoOp(), new IEditService.NoOp(), identifierProvider, semanticCandidatesProviderFactory, modelOperationHandlerSwitchProvider, new ImageSizeProvider()); - NodeDescription convertedNodeDescription = converter.convert(containerMapping, interpreter, new HashMap()); + NodeDescription convertedNodeDescription = converter.convert(containerMapping, interpreter, new HashMap<>()); LabelDescription labelDescription = convertedNodeDescription.getLabelDescription(); String text = labelDescription.getTextProvider().apply(variableManager); @@ -176,15 +176,15 @@ public String getIdentifier(Object element) { AQLInterpreter interpreter = new AQLInterpreter(List.of(), List.of(EcorePackage.eINSTANCE)); var converter = new AbstractNodeMappingConverter(new IObjectService.NoOp(), new IEditService.NoOp(), identifierProvider, semanticCandidatesProviderFactory, modelOperationHandlerSwitchProvider, new ImageSizeProvider()); - NodeDescription convertedNodeDescription = converter.convert(containerMapping, interpreter, new HashMap()); + NodeDescription convertedNodeDescription = converter.convert(containerMapping, interpreter, new HashMap<>()); VariableManager variableManager = new VariableManager(); variableManager.put(VariableManager.SELF, EcorePackage.Literals.ECLASS); 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)) - .matches(RectangularNodeStyle::isWithHeader); + assertThat(convertedNodeDescription.getStyleProvider().apply(variableManager)).asInstanceOf(InstanceOfAssertFactories.type(RectangularNodeStyle.class)); + assertThat(convertedNodeDescription.getLabelDescription().getIsHeaderProvider().apply(variableManager)).isEqualTo(true); assertThat(convertedNodeDescription.getChildNodeDescriptions()).hasSize(1); NodeDescription subNodeDescription = convertedNodeDescription.getChildNodeDescriptions().get(0); @@ -245,7 +245,7 @@ public String getIdentifier(Object element) { var converter = new AbstractNodeMappingConverter(new IObjectService.NoOp(), new IEditService.NoOp(), identifierProvider, semanticCandidatesProviderFactory, modelOperationHandlerSwitchProvider, new ImageSizeProvider()); - NodeDescription convertedNodeDescription = converter.convert(nodeMapping, interpreter, new HashMap()); + NodeDescription convertedNodeDescription = converter.convert(nodeMapping, interpreter, new HashMap<>()); LabelDescription labelDescription = convertedNodeDescription.getLabelDescription(); String text = labelDescription.getTextProvider().apply(variableManager); diff --git a/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/java/org/eclipse/sirius/components/collaborative/diagrams/export/svg/NodeExportService.java b/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/java/org/eclipse/sirius/components/collaborative/diagrams/export/svg/NodeExportService.java index cc55646fec..7a7ee9b719 100644 --- a/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/java/org/eclipse/sirius/components/collaborative/diagrams/export/svg/NodeExportService.java +++ b/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/java/org/eclipse/sirius/components/collaborative/diagrams/export/svg/NodeExportService.java @@ -68,13 +68,11 @@ public StringBuilder export(Node node, Map id2NodeHi private StringBuilder exportChildren(Node node, Map id2NodeHierarchy) { String nodeId = node.getId(); StringBuilder childrenExport = new StringBuilder(); - // @formatter:off Stream.concat(node.getBorderNodes().stream(), node.getChildNodes().stream()) .forEach(elt -> { id2NodeHierarchy.put(elt.getId(), new NodeAndContainerId(nodeId, elt)); childrenExport.append(this.export(elt, id2NodeHierarchy)); }); - // @formatter:on return childrenExport; } @@ -83,7 +81,6 @@ private StringBuilder exportImage(Node node, ImageNodeStyle style, Map id2NodeHierarchy, float nodeOpacity) { StringBuilder rectangleExport = new StringBuilder(); - // @formatter:off var rectangleStyle = RectangleStyle.newRectangleStyle() .color(style.getBackgroundColor()) .opacity(nodeOpacity) .build(); - // @formatter:on rectangleExport.append(this.elementExport.exportGNodeElement(node)); rectangleExport.append(this.elementExport.exportRectangleElement(node.getSize(), Position.at(0, 0), rectangleStyle)); @@ -146,7 +140,6 @@ private StringBuilder exportIconLabel(Node node, IconLabelNodeStyle style, Map id2NodeHierarchy, float nodeOpacity) { StringBuilder rectangleExport = new StringBuilder(); - // @formatter:off var rectangleStyle = RectangleStyle.newRectangleStyle() .borderRadius(style.getBorderRadius()) .color(style.getColor()) @@ -155,12 +148,11 @@ private StringBuilder exportRectangle(Node node, RectangularNodeStyle style, Map .borderStyle(style.getBorderStyle()) .opacity(nodeOpacity) .build(); - // @formatter:on rectangleExport.append(this.elementExport.exportGNodeElement(node)); rectangleExport.append(this.elementExport.exportRectangleElement(node.getSize(), Position.at(0, 0), rectangleStyle)); rectangleExport.append(this.elementExport.exportInsideLabel(node.getInsideLabel(), nodeOpacity, node)); - if (style.isWithHeader()) { + if (node.getInsideLabel().isIsHeader()) { rectangleExport.append(this.exportHeaderSeparator(node, node.getInsideLabel(), style, nodeOpacity)); } rectangleExport.append(this.exportChildren(node, id2NodeHierarchy)); diff --git a/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/resources/schema/diagram.graphqls b/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/resources/schema/diagram.graphqls index 6159c972c9..92fbc91a1a 100644 --- a/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/resources/schema/diagram.graphqls +++ b/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/main/resources/schema/diagram.graphqls @@ -79,6 +79,7 @@ type InsideLabel { alignment: Position! position: Position! size: Size! + isHeader: Boolean! } enum InsideLabelLocation { @@ -115,7 +116,6 @@ type RectangularNodeStyle { borderSize: Int! borderStyle: LineStyle! color: String! - withHeader: Boolean! } enum LineStyle { diff --git a/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/test/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/GetConnectorToolsEventHandlerTests.java b/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/test/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/GetConnectorToolsEventHandlerTests.java index aa71239df5..c48a2af2af 100644 --- a/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/test/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/GetConnectorToolsEventHandlerTests.java +++ b/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/test/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/GetConnectorToolsEventHandlerTests.java @@ -95,7 +95,6 @@ public class GetConnectorToolsEventHandlerTests { private static final String TARGET_NODE_TARGET_ID = "targetNodeTargetId"; private Node getNode(String id, String targetObjectId) { - // @formatter:off LabelStyle labelStyle = LabelStyle.newLabelStyle() .color("#000000") .fontSize(16) @@ -109,6 +108,7 @@ private Node getNode(String id, String targetObjectId) { .size(Size.UNDEFINED) .alignment(Position.UNDEFINED) .style(labelStyle) + .isHeader(false) .build(); return Node.newNode(id) @@ -128,14 +128,12 @@ private Node getNode(String id, String targetObjectId) { .state(ViewModifier.Normal) .collapsingState(CollapsingState.EXPANDED) .build(); - // @formatter:on } @Test public void testGetConnectorTools() { NodeDescription nodeDescription = new TestDiagramDescriptionBuilder().getNodeDescription(NODE_DESCRIPTION_ID, variableManager -> List.of()); - // @formatter:off SingleClickOnTwoDiagramElementsCandidate candidates = SingleClickOnTwoDiagramElementsCandidate.newSingleClickOnTwoDiagramElementsCandidate() .sources(List.of(nodeDescription)) .targets(List.of(nodeDescription)) @@ -170,7 +168,6 @@ public void testGetConnectorTools() { .palettes(List.of(palette)) .dropHandler(variableManager -> new Failure("")) .build(); - //@formatter:on Node sourceNode = this.getNode(SOURCE_NODE_ID, SOURCE_NODE_TARGET_ID); Node targetNode = this.getNode(TARGET_NODE_ID, TARGET_NODE_TARGET_ID); @@ -228,7 +225,6 @@ public boolean canHandle(DiagramDescription diagramDescription) { } private Diagram getDiagram(String id, List nodes) { - // @formatter:off return Diagram.newDiagram(id) .label(DIAGRAM_LABEL) .descriptionId(DIAGRAM_DESCRIPTION_ID.toString()) @@ -238,6 +234,5 @@ private Diagram getDiagram(String id, List nodes) { .nodes(nodes) .edges(List.of()) .build(); - // @formatter:on } } diff --git a/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/test/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/InvokeSingleClickOnDiagramElementToolEventHandlerTests.java b/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/test/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/InvokeSingleClickOnDiagramElementToolEventHandlerTests.java index caf0f0292f..1850859054 100644 --- a/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/test/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/InvokeSingleClickOnDiagramElementToolEventHandlerTests.java +++ b/packages/diagrams/backend/sirius-components-collaborative-diagrams/src/test/java/org/eclipse/sirius/components/collaborative/diagrams/handlers/InvokeSingleClickOnDiagramElementToolEventHandlerTests.java @@ -365,7 +365,6 @@ public Optional findToolById(IEditingContext editingContext, Diagram diag } private SingleClickOnDiagramElementTool createTool(String toolId, boolean appliesToDiagramRoot, List diagramElementsDescriptions) { - // @formatter:off return SingleClickOnDiagramElementTool.newSingleClickOnDiagramElementTool(toolId) .label(TOOL_LABEL) .imageURL(TOOL_IMAGE_URL) @@ -374,11 +373,9 @@ private SingleClickOnDiagramElementTool createTool(String toolId, boolean applie .handler(variableManager -> new Success(ChangeKind.SEMANTIC_CHANGE, Map.of())) .appliesToDiagramRoot(appliesToDiagramRoot) .build(); - // @formatter:on } private Node createNode(String nodeId, String nodeDescriptionId, String targetObjectId) { - // @formatter:off var labelStyle = LabelStyle.newLabelStyle() .color("#000001") .fontSize(16) @@ -392,6 +389,7 @@ private Node createNode(String nodeId, String nodeDescriptionId, String targetOb .size(Size.UNDEFINED) .alignment(Position.UNDEFINED) .style(labelStyle) + .isHeader(false) .build(); return Node.newNode(nodeId) @@ -411,11 +409,9 @@ private Node createNode(String nodeId, String nodeDescriptionId, String targetOb .state(ViewModifier.Normal) .collapsingState(CollapsingState.EXPANDED) .build(); - // @formatter:on } private NodeDescription createNodeDescription(String nodeDescriptionId) { - // @formatter:off var styleDescription = LabelStyleDescription.newLabelStyleDescription() .colorProvider(variableManager -> "") .fontSizeProvider(variableManager -> 0) @@ -430,6 +426,7 @@ private NodeDescription createNodeDescription(String nodeDescriptionId) { .idProvider(vm -> "") .styleDescriptionProvider(vm -> styleDescription) .textProvider(vm -> "") + .isHeaderProvider(vm -> false) .build(); return NodeDescription.newNodeDescription(nodeDescriptionId) @@ -449,11 +446,9 @@ private NodeDescription createNodeDescription(String nodeDescriptionId) { .targetObjectLabelProvider(vm -> "") .typeProvider(vm -> "") .build(); - // @formatter:on } private Edge createEdge(String edgeId, String edgeDescriptionId, String targetObjectId) { - // @formatter:off var labelStyle = LabelStyle.newLabelStyle() .color("#000002") .fontSize(14) @@ -495,11 +490,9 @@ private Edge createEdge(String edgeId, String edgeDescriptionId, String targetOb .modifiers(Set.of()) .state(ViewModifier.Normal) .build(); - // @formatter:on } private EdgeDescription createEdgeDescription(String edgeDescriptionId) { - // @formatter:off var edgeStyle = EdgeStyle.newEdgeStyle() .color("#000003") .lineStyle(LineStyle.Dash) @@ -520,6 +513,5 @@ private EdgeDescription createEdgeDescription(String edgeDescriptionId) { .targetObjectKindProvider(vm -> "") .targetObjectLabelProvider(vm -> "") .build(); - // @formatter:on } } diff --git a/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/ELKPropertiesService.java b/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/ELKPropertiesService.java index 943421969a..3637c5eeff 100644 --- a/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/ELKPropertiesService.java +++ b/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/ELKPropertiesService.java @@ -18,10 +18,8 @@ import org.eclipse.elk.core.options.CoreOptions; import org.eclipse.elk.core.options.NodeLabelPlacement; import org.eclipse.elk.core.options.PortLabelPlacement; -import org.eclipse.sirius.components.diagrams.INodeStyle; import org.eclipse.sirius.components.diagrams.Node; import org.eclipse.sirius.components.diagrams.NodeType; -import org.eclipse.sirius.components.diagrams.RectangularNodeStyle; import org.springframework.stereotype.Service; /** @@ -80,11 +78,7 @@ public String getBorderNodeLabelType(Node node, ISiriusWebLayoutConfigurator lay } public boolean hasHeader(Node node) { - INodeStyle nodeStyle = node.getStyle(); - if (nodeStyle instanceof RectangularNodeStyle rectangularNodeStyle) { - return rectangularNodeStyle.isWithHeader(); - } - return false; + return node.getInsideLabel().isIsHeader(); } private String getVerticalAlignment(EnumSet nodeLabelPlacementSet) { diff --git a/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/SiriusWebLayoutConfigurator.java b/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/SiriusWebLayoutConfigurator.java index 4029f69cac..60acd05d94 100644 --- a/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/SiriusWebLayoutConfigurator.java +++ b/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/SiriusWebLayoutConfigurator.java @@ -176,7 +176,7 @@ public ElkNode applyBeforeLayout(ElkNode elkDiagram, IEditingContext editingCont private void updateElkPadding(ElkNode elkNode, Node node) { INodeStyle nodeStyle = node.getStyle(); if (nodeStyle instanceof RectangularNodeStyle style) { - if (style.isWithHeader()) { + if (node.getInsideLabel().isIsHeader()) { // We are supposing that rectangular node label is positioned on top center of the node, which could not // be always right ElkPadding currentPadding = elkNode.getProperty(CoreOptions.PADDING); @@ -184,7 +184,6 @@ private void updateElkPadding(ElkNode elkNode, Node node) { elkNode.setProperty(CoreOptions.PADDING, new ElkPadding(updatedPaddingTop, currentPadding.right, currentPadding.bottom, currentPadding.left)); } } - } private List collectChildrenNode(ElkNode elkDiagram) { diff --git a/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/incremental/IncrementalLayoutDiagramConverter.java b/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/incremental/IncrementalLayoutDiagramConverter.java index 34839efb57..9847c62587 100644 --- a/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/incremental/IncrementalLayoutDiagramConverter.java +++ b/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/incremental/IncrementalLayoutDiagramConverter.java @@ -187,6 +187,7 @@ private LabelLayoutData convertNodeLabel(Node node, Map id2 textBounds = this.textBoundsService.getBounds(insideLabel); } layoutData.setTextBounds(textBounds); + layoutData.setIsHeader(insideLabel.isIsHeader()); return layoutData; } diff --git a/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/incremental/NodeContext.java b/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/incremental/NodeContext.java index 4ca5cbc0b5..e7839d383e 100644 --- a/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/incremental/NodeContext.java +++ b/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/incremental/NodeContext.java @@ -91,7 +91,7 @@ public NodeContext(NodeLayoutData nodeLayoutData, ISiriusWebLayoutConfigurator l // @formatter:on this.areChildrenConsidered = this.shouldConsiderChildren(); - this.hasHeader = this.hasHeader(); + this.hasHeader = this.node.getLabel().isHeader(); this.hasLabel = this.shouldConsiderNodeLabel(); this.isNodeLabelInside = this.isLabelInside(); ElkPadding padding = new ElkPadding(0); @@ -249,14 +249,6 @@ private boolean isLabelInside() { return nodeLabelPlacement.contains(NodeLabelPlacement.INSIDE); } - private boolean hasHeader() { - INodeStyle nodeStyle = this.node.getStyle(); - if (nodeStyle instanceof RectangularNodeStyle rectangularNodeStyle) { - return rectangularNodeStyle.isWithHeader(); - } - return false; - } - /** * Adds a padding top if the node has a header. * @@ -272,7 +264,7 @@ private boolean hasHeader() { private double headerPadding() { INodeStyle nodeStyle = this.node.getStyle(); if (nodeStyle instanceof RectangularNodeStyle rectangularNodeStyle) { - if (rectangularNodeStyle.isWithHeader()) { + if (this.node.getLabel().isHeader()) { return rectangularNodeStyle.getBorderSize() + 5; } } diff --git a/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/incremental/data/LabelLayoutData.java b/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/incremental/data/LabelLayoutData.java index c88986ed24..efb1b9d8fb 100644 --- a/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/incremental/data/LabelLayoutData.java +++ b/packages/diagrams/backend/sirius-components-diagrams-layout/src/main/java/org/eclipse/sirius/components/diagrams/layout/incremental/data/LabelLayoutData.java @@ -30,6 +30,8 @@ public class LabelLayoutData implements ILayoutData { private String id; + private boolean isHeader; + @Override public String getId() { return this.id; @@ -63,4 +65,12 @@ public void setTextBounds(TextBounds textBounds) { this.textBounds = textBounds; } + public boolean isHeader() { + return this.isHeader; + } + + public void setIsHeader(boolean isHeader) { + this.isHeader = isHeader; + } + } diff --git a/packages/diagrams/backend/sirius-components-diagrams-layout/src/test/java/org/eclipse/sirius/components/diagrams/layout/incremental/DiagramLayoutTests.java b/packages/diagrams/backend/sirius-components-diagrams-layout/src/test/java/org/eclipse/sirius/components/diagrams/layout/incremental/DiagramLayoutTests.java index 7c17d29fb7..02643aac73 100644 --- a/packages/diagrams/backend/sirius-components-diagrams-layout/src/test/java/org/eclipse/sirius/components/diagrams/layout/incremental/DiagramLayoutTests.java +++ b/packages/diagrams/backend/sirius-components-diagrams-layout/src/test/java/org/eclipse/sirius/components/diagrams/layout/incremental/DiagramLayoutTests.java @@ -126,7 +126,6 @@ public Optional findById(IEditingContext editingCont @Test public void testRemoveEdgeDoesNotAffectUnrelated() { - // @formatter:off Diagram diagram = TestLayoutDiagramBuilder.diagram(DIAGRAM_ROOT_ID) .nodes() .rectangleNode(FIRST_TARGET_OBJECT_ID).at(10, 10).of(20, 20).and() @@ -143,7 +142,6 @@ public void testRemoveEdgeDoesNotAffectUnrelated() { .goingThrough(20, 50) .and() .build(); - // @formatter:on Path path = Paths.get(PATH_TO_EDITING_CONTEXTS.toString(), "testRemoveEdgeDoesNotAffectUnrelated"); JsonBasedEditingContext editingContext = new JsonBasedEditingContext(path); @@ -184,7 +182,6 @@ public void testSimpleDiagramLayout() throws IOException { String firstChildTargetObjectId = "First child"; String secondChildTargetObjectId = "Second child"; - // @formatter:off Diagram diagram = TestLayoutDiagramBuilder.diagram(DIAGRAM_ROOT_ID) .nodes() .rectangleNode(firstParentTargetObjectId).at(10, 10).of(200, 300) @@ -204,7 +201,6 @@ public void testSimpleDiagramLayout() throws IOException { .to(firstParentTargetObjectId).at(0.1, 0.9) .and() .build(); - // @formatter:on Path path = Paths.get(PATH_TO_EDITING_CONTEXTS.toString(), "testSimpleDiagramLayout"); JsonBasedEditingContext editingContext = new JsonBasedEditingContext(path); @@ -256,21 +252,18 @@ public void testSimpleDiagramLayout() throws IOException { public void testCreateEdgeDoesNotAffectOtherEdges() { ListLayoutStrategy columnListLayoutStrategy = new ListLayoutStrategy(); - // @formatter:off Diagram diagram = TestLayoutDiagramBuilder.diagram(DIAGRAM_ROOT_ID) .nodes() - .rectangleNode(FIRST_TARGET_OBJECT_ID) + .rectangleNode(FIRST_TARGET_OBJECT_ID, true) .at(10, 10) .of(-1, -1) - .withHeader(true) .childNodes(columnListLayoutStrategy) .iconLabelNode("Child").at(-1, -1).of(-1, -1).and() .and() .and() - .rectangleNode(SECOND_TARGET_OBJECT_ID) + .rectangleNode(SECOND_TARGET_OBJECT_ID, true) .at(200, 200) .of(-1, -1) - .withHeader(true) .childNodes(columnListLayoutStrategy).and() .and() .and() @@ -279,7 +272,6 @@ public void testCreateEdgeDoesNotAffectOtherEdges() { .to(SECOND_TARGET_OBJECT_ID).at(0.25, 0.25) .and() .build(); - // @formatter:on TestDiagramCreationService layoutDiagramInitialDiagram = this.createDiagramCreationService(diagram); Diagram initialLayoutedDiagram = layoutDiagramInitialDiagram.performLayout(new IEditingContext.NoOp(), diagram, null); assertThat(initialLayoutedDiagram.getEdges()).hasSize(1); diff --git a/packages/diagrams/backend/sirius-components-diagrams-layout/src/test/java/org/eclipse/sirius/components/diagrams/layout/services/DefaultTestDiagramDescriptionProvider.java b/packages/diagrams/backend/sirius-components-diagrams-layout/src/test/java/org/eclipse/sirius/components/diagrams/layout/services/DefaultTestDiagramDescriptionProvider.java index ed53551fd3..1707dfbe36 100644 --- a/packages/diagrams/backend/sirius-components-diagrams-layout/src/test/java/org/eclipse/sirius/components/diagrams/layout/services/DefaultTestDiagramDescriptionProvider.java +++ b/packages/diagrams/backend/sirius-components-diagrams-layout/src/test/java/org/eclipse/sirius/components/diagrams/layout/services/DefaultTestDiagramDescriptionProvider.java @@ -69,29 +69,34 @@ public class DefaultTestDiagramDescriptionProvider { private IObjectService objectService; + private final Function isHeaderProvider = variableManager -> { + String prefix = variableManager.get(VariableManager.SELF, Element.class) + .map(Element::getName) + .map(name -> name.split(NODE_NAME_SEPARATOR)) + .filter(composedName -> composedName.length >= 2) + .map(composedName -> composedName[0]) + .orElse(""); + return NODE_LIST_PREFIX.equals(prefix); + }; + private final Function targetObjectIdProvider = variableManager -> { - // @formatter:off return variableManager.get(VariableManager.SELF, Object.class) .map(this.objectService::getId) .orElse(""); - // @formatter:on }; private final Function nodeStyleProvider = variableManager -> { - // @formatter:off String prefix = variableManager.get(VariableManager.SELF, Element.class) .map(Element::getName) .map(name -> name.split(NODE_NAME_SEPARATOR)) .filter(composedName -> composedName.length >= 2) .map(composedName -> composedName[0]) .orElse(""); - // @formatter:on INodeStyle nodeStyle = null; switch (prefix) { case NODE_RECT_PREFIX: nodeStyle = RectangularNodeStyle.newRectangularNodeStyle() - .withHeader(false) .borderSize(1) .borderRadius(3) .borderStyle(LineStyle.Solid) @@ -107,7 +112,6 @@ public class DefaultTestDiagramDescriptionProvider { break; case NODE_LIST_PREFIX: nodeStyle = RectangularNodeStyle.newRectangularNodeStyle() - .withHeader(true) .borderColor("black") .borderRadius(0) .borderSize(1) @@ -128,7 +132,6 @@ public class DefaultTestDiagramDescriptionProvider { }; private final Function nodeTypeProvider = variableManager -> { - // @formatter:off return variableManager.get(VariableManager.SELF, Element.class) .map(Element::getName) .map(name -> name.split(NODE_NAME_SEPARATOR)) @@ -156,11 +159,9 @@ public class DefaultTestDiagramDescriptionProvider { return type; }) .orElse(""); - // @formatter:on }; private final Function childrenLayoutStrategyProvider = variableManager -> { - // @formatter:off return variableManager.get(VariableManager.SELF, Element.class) .map(Element::getName) .map(name -> name.split(NODE_NAME_SEPARATOR)) @@ -185,18 +186,15 @@ public class DefaultTestDiagramDescriptionProvider { return childrenLayoutStrategy; }) .orElse(null); - // @formatter:on }; private final Function labelProvider = variableManager -> { - // @formatter:off return variableManager.get(VariableManager.SELF, Element.class) .map(Element::getName) .map(name -> name.split(NODE_NAME_SEPARATOR)) .filter(composedName -> composedName.length >= 2) .map(composedName -> composedName[1]) .orElse(""); - // @formatter:on }; private final Function> nodeSemanticElementProvider = variableManager -> { @@ -244,7 +242,6 @@ private Function targetObjectIdToNodeId.computeIfAbsent(id, k -> UUID.randomUUID().toString())); - // @formatter:off Map idToElement = cache.getObjectToNodes().keySet().stream() .filter(Element.class::isInstance) .map(Element.class::cast) @@ -252,9 +249,7 @@ private Function UUID.randomUUID().toString()); }, elem -> elem)); - // @formatter:on - // @formatter:off return variableManager.get(VariableManager.SELF, Element.class) .map(Element::getChildren) .orElseGet(List::of) @@ -266,7 +261,6 @@ private Function new Failure("")) .build(); - // @formatter:on return diagramDescription; } @@ -299,7 +291,6 @@ public DiagramDescription getDefaultDiagramDescription(Diagram diagram) { private EdgeDescription getDefaultEdgeDescription(Diagram diagram, LabelDescription labelDescription, NodeDescription nodeDescription) { List nodeDescriptionIds = List.of(TestLayoutDiagramBuilder.NODE_DESCRIPTION_ID, TestLayoutDiagramBuilder.CHILD_NODE_DESCRIPTION_ID); - // @formatter:off return EdgeDescription.newEdgeDescription(TestLayoutDiagramBuilder.EDGE_DESCRIPTION_ID) .targetObjectIdProvider(this.targetObjectIdProvider) .targetObjectKindProvider(variableManager -> "") @@ -350,12 +341,10 @@ private EdgeDescription getDefaultEdgeDescription(Diagram diagram, LabelDescript .deleteHandler(variableManager -> new Failure("")) .labelEditHandler((variableManager, edgeLabelKind, newLabel) -> new Failure("")) .build(); - // @formatter:on } private NodeDescription getDefaultNodeDescription(LabelDescription labelDescription, NodeDescription childDescription) { - // @formatter:off return NodeDescription.newNodeDescription(TestLayoutDiagramBuilder.NODE_DESCRIPTION_ID) .typeProvider(this.nodeTypeProvider) .targetObjectIdProvider(this.targetObjectIdProvider) @@ -372,11 +361,9 @@ private NodeDescription getDefaultNodeDescription(LabelDescription labelDescript .deleteHandler(variableManager -> new Failure("")) .labelEditHandler((variableManager, newValue) -> new Failure("")) .build(); - // @formatter:on } private NodeDescription getDefaultChildDescription(LabelDescription labelDescription) { - // @formatter:off return NodeDescription.newNodeDescription(TestLayoutDiagramBuilder.CHILD_NODE_DESCRIPTION_ID) .typeProvider(this.nodeTypeProvider) .targetObjectIdProvider(this.targetObjectIdProvider) @@ -391,11 +378,11 @@ private NodeDescription getDefaultChildDescription(LabelDescription labelDescrip .deleteHandler(variableManager -> new Failure("")) .labelEditHandler((variableManager, newValue) -> new Failure("")) .build(); - // @formatter:on } private LabelDescription getDefaultLabelDescription() { - // @formatter:off + + return LabelDescription.newLabelDescription(UUID.randomUUID().toString()) .idProvider(variableManager -> "") .textProvider(this.labelProvider) @@ -410,8 +397,8 @@ private LabelDescription getDefaultLabelDescription() { .iconURLProvider(vm -> "") .build(); }) + .isHeaderProvider(this.isHeaderProvider) .build(); - // @formatter:on } } diff --git a/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/TestDiagramBuilder.java b/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/TestDiagramBuilder.java index f4c7772e8f..8ae8be0298 100644 --- a/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/TestDiagramBuilder.java +++ b/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/TestDiagramBuilder.java @@ -51,7 +51,6 @@ public class TestDiagramBuilder { public static final String TOOL_LABEL = "toolLabel"; public Diagram getDiagram(String id) { - // @formatter:off return Diagram.newDiagram(id) .label("diagramLabel") .descriptionId(UUID.randomUUID().toString()) @@ -61,27 +60,22 @@ public Diagram getDiagram(String id) { .nodes(List.of()) .edges(List.of()) .build(); - // @formatter:on } public RectangularNodeStyle getRectangularNodeStyle() { - // @formatter:off return RectangularNodeStyle.newRectangularNodeStyle() .borderColor("#000000") .borderSize(1) .borderStyle(LineStyle.Solid) .color("#FFFFFF") .build(); - // @formatter:on } public ImageNodeStyle getImageNodeStyle() { - // @formatter:off return ImageNodeStyle.newImageNodeStyle() .imageURL(IMAGE_PNG) .scalingFactor(-1) .build(); - // @formatter:on } public Node getNode(String id, boolean withLabel) { @@ -115,6 +109,7 @@ public Node getNode(String id, boolean withLabel) { .size(Size.UNDEFINED) .alignment(Position.UNDEFINED) .style(labelStyle) + .isHeader(false) .build(); nodeBuilder.insideLabel(insideLabel); } @@ -123,7 +118,6 @@ public Node getNode(String id, boolean withLabel) { } public Edge getEdge(String id, String sourceId, String targetId) { - // @formatter:off EdgeStyle style = EdgeStyle.newEdgeStyle() .size(1) .lineStyle(LineStyle.Solid) @@ -147,17 +141,14 @@ public Edge getEdge(String id, String sourceId, String targetId) { .sourceAnchorRelativePosition(Ratio.UNDEFINED) .targetAnchorRelativePosition(Ratio.UNDEFINED) .build(); - // @formatter:on } public SingleClickOnDiagramElementTool getNodeTool(String id) { - // @formatter:off return SingleClickOnDiagramElementTool.newSingleClickOnDiagramElementTool(id) .label(TOOL_LABEL) .imageURL(TOOL_IMAGE_URL) .handler(variableManager -> new Success()) .targetDescriptions(List.of()) .build(); - // @formatter:on } } diff --git a/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/TestDiagramDescriptionBuilder.java b/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/TestDiagramDescriptionBuilder.java index 5a03567f8e..6f362a0d7e 100644 --- a/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/TestDiagramDescriptionBuilder.java +++ b/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/TestDiagramDescriptionBuilder.java @@ -43,7 +43,6 @@ public class TestDiagramDescriptionBuilder { public DiagramDescription getDiagramDescription(String diagramDescriptionId, List nodeDescriptions, List edgeDescriptions, List palettes) { - // @formatter:off return DiagramDescription.newDiagramDescription(diagramDescriptionId) .label("") .canCreatePredicate(variableManager -> Boolean.TRUE) @@ -54,11 +53,9 @@ public DiagramDescription getDiagramDescription(String diagramDescriptionId, Lis .palettes(palettes) .dropHandler(variableManager -> new Failure("")) .build(); - // @formatter:on } public EdgeDescription getEdgeDescription(String edgeDescriptionId, NodeDescription nodeDescription) { - // @formatter:off Function> sourceNodesProvider = variableManager -> List.of(); Function> targetNodesProvider = variableManager -> List.of(); @@ -89,11 +86,9 @@ public EdgeDescription getEdgeDescription(String edgeDescriptionId, NodeDescript .labelEditHandler((variableManager, edgeLabelKind, newLabel) -> new Failure("")) .deleteHandler(variableManager -> new Success()) .build(); - // @formatter:on } public NodeDescription getNodeDescription(String nodeDescriptionId, Function> semanticElementsProvider) { - // @formatter:off LabelStyleDescription labelStyleDescription = LabelStyleDescription.newLabelStyleDescription() .colorProvider(variableManager -> "#000000") .fontSizeProvider(variableManager -> 16) @@ -108,6 +103,7 @@ public NodeDescription getNodeDescription(String nodeDescriptionId, Function "labelId") .textProvider(variableManager -> "Node") .styleDescriptionProvider(variableManager -> labelStyleDescription) + .isHeaderProvider(vm -> false) .build(); Function nodeStyleProvider = variableManager -> { @@ -142,7 +138,6 @@ public NodeDescription getNodeDescription(String nodeDescriptionId, Function new Success()) .deleteHandler(variableManager -> new Success()) .build(); - // @formatter:on } private String getNodeId(String nodeDescriptionId, String objectId) { diff --git a/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/label/LabelBuilder.java b/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/label/LabelBuilder.java index c43af44809..822c6a99e3 100644 --- a/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/label/LabelBuilder.java +++ b/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/label/LabelBuilder.java @@ -51,7 +51,7 @@ public Label basicLabel(String text, LabelType labelType) { .build(); } - public InsideLabel basicInsideLabel(String text, LabelType labelType) { + public InsideLabel basicInsideLabel(String text, LabelType labelType, boolean isHeader) { LabelStyle labelStyle = LabelStyle.newLabelStyle() .color("black") .fontSize(14) @@ -70,6 +70,7 @@ public InsideLabel basicInsideLabel(String text, LabelType labelType) { .position(Position.UNDEFINED) .size(Size.UNDEFINED) .style(labelStyle) + .isHeader(isHeader) .build(); } diff --git a/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/node/IconlabelNodeBuilder.java b/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/node/IconlabelNodeBuilder.java index 2686853528..fd7808271a 100644 --- a/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/node/IconlabelNodeBuilder.java +++ b/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/node/IconlabelNodeBuilder.java @@ -61,7 +61,7 @@ public class IconlabelNodeBuilder implements NodeBuilder { private Set customizedProperties = Set.of(); public IconlabelNodeBuilder(NodesBuilder nodesBuilder, String nodeLabel, boolean isBorderNode) { - this.insideLabel = new LabelBuilder().basicInsideLabel(nodeLabel, LabelType.INSIDE_CENTER); + this.insideLabel = new LabelBuilder().basicInsideLabel(nodeLabel, LabelType.INSIDE_CENTER, false); this.isBorderNode = isBorderNode; this.nodesBuilder = Objects.requireNonNull(nodesBuilder); } diff --git a/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/node/ImageNodeBuilder.java b/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/node/ImageNodeBuilder.java index 3af2b6c630..d89a4cb748 100644 --- a/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/node/ImageNodeBuilder.java +++ b/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/node/ImageNodeBuilder.java @@ -60,7 +60,7 @@ public final class ImageNodeBuilder implements NodeBuilder { private Set customizedProperties = Set.of(); public ImageNodeBuilder(NodesBuilder nodesBuilder, String nodeLabel, boolean isBorderNode) { - this.insideLabel = new LabelBuilder().basicInsideLabel(nodeLabel, LabelType.OUTSIDE_CENTER); + this.insideLabel = new LabelBuilder().basicInsideLabel(nodeLabel, LabelType.OUTSIDE_CENTER, false); this.isBorderNode = isBorderNode; this.nodesBuilder = Objects.requireNonNull(nodesBuilder); } diff --git a/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/node/NodesBuilder.java b/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/node/NodesBuilder.java index 0e8153ecf3..cbe5269702 100644 --- a/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/node/NodesBuilder.java +++ b/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/node/NodesBuilder.java @@ -45,6 +45,12 @@ public RectangleNodeBuilder rectangleNode(String nodeLabel) { return nodeBuilder; } + public RectangleNodeBuilder rectangleNode(String nodeLabel, boolean withHeader) { + RectangleNodeBuilder nodeBuilder = new RectangleNodeBuilder<>(this, nodeLabel, this.isBorderNode, withHeader); + this.nodeBuilders.add(nodeBuilder); + return nodeBuilder; + } + public ImageNodeBuilder imageNode(String nodeLabel) { ImageNodeBuilder imageNodeBuilder = new ImageNodeBuilder<>(this, nodeLabel, this.isBorderNode); this.nodeBuilders.add(imageNodeBuilder); diff --git a/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/node/RectangleNodeBuilder.java b/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/node/RectangleNodeBuilder.java index 5ab67fbc84..f902e35452 100644 --- a/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/node/RectangleNodeBuilder.java +++ b/packages/diagrams/backend/sirius-components-diagrams-tests/src/main/java/org/eclipse/sirius/components/diagrams/tests/builder/node/RectangleNodeBuilder.java @@ -50,8 +50,6 @@ public final class RectangleNodeBuilder implements NodeBuilder { private boolean isBorderNode; - private boolean withHeader; - private InsideLabel insideLabel; private Position position; @@ -71,7 +69,11 @@ public final class RectangleNodeBuilder implements NodeBuilder { private Set customizedProperties = Set.of(); public RectangleNodeBuilder(NodesBuilder nodesBuilder, String nodeLabel, boolean isBorderNode) { - this.insideLabel = new LabelBuilder().basicInsideLabel(nodeLabel, LabelType.INSIDE_CENTER); + this(nodesBuilder, nodeLabel, false, isBorderNode); + } + + public RectangleNodeBuilder(NodesBuilder nodesBuilder, String nodeLabel, boolean isLabelAHeader, boolean isBorderNode) { + this.insideLabel = new LabelBuilder().basicInsideLabel(nodeLabel, LabelType.INSIDE_CENTER, isLabelAHeader); this.isBorderNode = isBorderNode; this.nodesBuilder = Objects.requireNonNull(nodesBuilder); } @@ -86,11 +88,6 @@ public RectangleNodeBuilder of(double width, double height) { return this; } - public RectangleNodeBuilder withHeader(boolean withHeader) { - this.withHeader = withHeader; - return this; - } - public RectangleNodeBuilder collapsingState(CollapsingState collapsingState) { this.collapsingState = collapsingState; return this; @@ -126,16 +123,13 @@ public Node build(Map targetObjectIdToNodeId) { List borderNodes = Optional.ofNullable(this.borderNodesBuilder).map(nodesBuilder -> nodesBuilder.build(targetObjectIdToNodeId)).orElse(List.of()); List childNodes = Optional.ofNullable(this.childNodesBuilder).map(nodesBuilder -> nodesBuilder.build(targetObjectIdToNodeId)).orElse(List.of()); - // @formatter:off INodeStyle style = RectangularNodeStyle.newRectangularNodeStyle() .color("#E5F5F8") .borderColor("#33B0C3") .borderSize(1) .borderRadius(3) .borderStyle(LineStyle.Solid) - .withHeader(this.withHeader) .build(); - // @formatter:on String labeltext = this.insideLabel.getText(); String nodeId = UUID.randomUUID().toString(); diff --git a/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/InsideLabel.java b/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/InsideLabel.java index e1e966a7d0..927428cce5 100644 --- a/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/InsideLabel.java +++ b/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/InsideLabel.java @@ -40,6 +40,8 @@ public final class InsideLabel { private LabelStyle style; + private boolean isHeader; + private InsideLabel() { // Prevent instantiation } @@ -76,6 +78,10 @@ public LabelStyle getStyle() { return this.style; } + public boolean isIsHeader() { + return this.isHeader; + } + public static Builder newLabel(String id) { return new Builder(id); } @@ -102,6 +108,7 @@ public static final class Builder { private String type; private String text; + private InsideLabelLocation insideLabelLocation; private Position position; @@ -112,6 +119,8 @@ public static final class Builder { private LabelStyle style; + private boolean isHeader; + private Builder(String id) { this.id = Objects.requireNonNull(id); } @@ -125,6 +134,7 @@ public Builder(InsideLabel insideLabel) { this.size = insideLabel.getSize(); this.alignment = insideLabel.getAlignment(); this.style = insideLabel.getStyle(); + this.isHeader = insideLabel.isIsHeader(); } public Builder type(String type) { @@ -162,6 +172,11 @@ public Builder style(LabelStyle style) { return this; } + public Builder isHeader(boolean isHeader) { + this.isHeader = isHeader; + return this; + } + public InsideLabel build() { InsideLabel label = new InsideLabel(); label.id = Objects.requireNonNull(this.id); @@ -172,6 +187,7 @@ public InsideLabel build() { label.size = Objects.requireNonNull(this.size); label.alignment = Objects.requireNonNull(this.alignment); label.style = Objects.requireNonNull(this.style); + label.isHeader = this.isHeader; return label; } } diff --git a/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/RectangularNodeStyle.java b/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/RectangularNodeStyle.java index d8649d8c2d..9b56258f02 100644 --- a/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/RectangularNodeStyle.java +++ b/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/RectangularNodeStyle.java @@ -34,8 +34,6 @@ public final class RectangularNodeStyle implements INodeStyle { private LineStyle borderStyle; - private boolean withHeader; - private RectangularNodeStyle() { // Prevent instantiation } @@ -60,18 +58,14 @@ public LineStyle getBorderStyle() { return this.borderStyle; } - public boolean isWithHeader() { - return this.withHeader; - } - public static Builder newRectangularNodeStyle() { return new Builder(); } @Override public String toString() { - String pattern = "{0} '{'color: {1}, with header: {2}, border: '{' color: {3}, size: {4}, radius: {5}, style: {6} '}''}'"; - return MessageFormat.format(pattern, this.getClass().getSimpleName(), this.color, this.withHeader, this.borderColor, this.borderSize, this.borderRadius, this.borderStyle); + String pattern = "{0} '{'color: {1}, border: '{' color: {2}, size: {3}, radius: {4}, style: {5} '}''}'"; + return MessageFormat.format(pattern, this.getClass().getSimpleName(), this.color, this.borderColor, this.borderSize, this.borderRadius, this.borderStyle); } /** @@ -91,8 +85,6 @@ public static final class Builder { private LineStyle borderStyle; - private boolean withHeader; - private Builder() { // Prevent instantiation } @@ -122,11 +114,6 @@ public Builder borderStyle(LineStyle borderStyle) { return this; } - public Builder withHeader(boolean withHeader) { - this.withHeader = withHeader; - return this; - } - public RectangularNodeStyle build() { RectangularNodeStyle nodeStyleDescription = new RectangularNodeStyle(); nodeStyleDescription.color = Objects.requireNonNull(this.color); @@ -134,7 +121,6 @@ public RectangularNodeStyle build() { nodeStyleDescription.borderSize = this.borderSize; nodeStyleDescription.borderRadius = this.borderRadius; nodeStyleDescription.borderStyle = Objects.requireNonNull(this.borderStyle); - nodeStyleDescription.withHeader = this.withHeader; return nodeStyleDescription; } } diff --git a/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/components/InsideLabelComponent.java b/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/components/InsideLabelComponent.java index 2ecf35e84b..3a961ac037 100644 --- a/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/components/InsideLabelComponent.java +++ b/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/components/InsideLabelComponent.java @@ -51,6 +51,11 @@ public Element render() { String id = UUID.nameUUIDFromBytes(idFromProvider.getBytes()).toString(); String text = labelDescription.getTextProvider().apply(variableManager); + boolean isHeader = labelDescription.getIsHeaderProvider().apply(variableManager); + if (isHeader) { + type = LabelType.INSIDE_CENTER.getValue(); + } + LabelStyleDescription labelStyleDescription = labelDescription.getStyleDescriptionProvider().apply(variableManager); String color = labelStyleDescription.getColorProvider().apply(variableManager); @@ -84,6 +89,7 @@ public Element render() { .size(size) .alignment(aligment) .style(labelStyle) + .isHeader(isHeader) .build(); return new Element(InsideLabelElementProps.TYPE, insideLabelElementProps); } diff --git a/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/components/NodeComponent.java b/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/components/NodeComponent.java index 45c4e15aa4..f3d9df9fc9 100644 --- a/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/components/NodeComponent.java +++ b/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/components/NodeComponent.java @@ -29,7 +29,6 @@ import org.eclipse.sirius.components.diagrams.NodeType; import org.eclipse.sirius.components.diagrams.ParametricSVGNodeType; 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.ViewModifier; @@ -78,13 +77,11 @@ public Element render() { VariableManager nodeComponentVariableManager = variableManager.createChild(); if (nodeDescription.getSynchronizationPolicy().equals(SynchronizationPolicy.UNSYNCHRONIZED)) { - //@formatter:off List creationRequestsIds = this.props.getViewCreationRequests().stream() .filter(viewCreationRequest -> Objects.equals(viewCreationRequest.getDescriptionId(), nodeDescription.getId())) .filter(viewCreationRequest -> Objects.equals(viewCreationRequest.getParentElementId(), this.props.getParentElementId())) .map(ViewCreationRequest::getTargetObjectId) .toList(); - //@formatter:on List previousNodeIds = this.props.getPreviousTargetObjectIds(); List semanticElementIds = new ArrayList<>(creationRequestsIds); semanticElementIds.addAll(previousNodeIds); @@ -139,20 +136,16 @@ private boolean existsViewCreationRequested(String targetObjectId) { String parentElementId = this.props.getParentElementId(); String nodeDescriptionId = this.props.getNodeDescription().getId(); NodeContainmentKind containmentKind = this.props.getContainmentKind(); - // @formatter:off return this.props.getViewCreationRequests().stream() .filter(viewCreationRequest -> Objects.equals(viewCreationRequest.getDescriptionId(), nodeDescriptionId)) .filter(viewCreationRequest -> Objects.equals(viewCreationRequest.getTargetObjectId(), targetObjectId)) .filter(viewCreationRequest -> Objects.equals(viewCreationRequest.getContainmentKind(), containmentKind)) .anyMatch(viewCreationRequest -> Objects.equals(viewCreationRequest.getParentElementId(), parentElementId)); - // @formatter:on } private boolean existsViewDeletionRequested(String elementId) { - // @formatter:off return this.props.getViewDeletionRequests().stream() .anyMatch(viewDeletionRequest -> Objects.equals(viewDeletionRequest.getElementId(), elementId)); - // @formatter:on } private Element doRender(VariableManager nodeVariableManager, String targetObjectId, Optional optionalPreviousNode, Optional optionalDiagramEvent) { @@ -202,7 +195,6 @@ private Element doRender(VariableManager nodeVariableManager, String targetObjec nodeChildren.addAll(borderNodes); nodeChildren.addAll(childNodes); - // @formatter:off Position position = optionalPreviousNode.map(Node::getPosition) .orElse(Position.UNDEFINED); @@ -247,7 +239,6 @@ private Element doRender(VariableManager nodeVariableManager, String targetObjec nodeElementPropsBuilder.childrenLayoutStrategy(layoutStrategy); } - // @formatter:on return new Element(NodeElementProps.TYPE, nodeElementPropsBuilder.build()); } @@ -261,8 +252,6 @@ private LabelType getLabelType(NodeContainmentKind containmentKind, String type, dummyLabelType = LabelType.INSIDE_CENTER; } else if (ParametricSVGNodeType.NODE_TYPE_PARAMETRIC_IMAGE.equals(type)) { dummyLabelType = LabelType.INSIDE_CENTER; - } else if (style instanceof RectangularNodeStyle rectangularNodeStyle && rectangularNodeStyle.isWithHeader()) { - dummyLabelType = LabelType.INSIDE_CENTER; } return dummyLabelType; } @@ -354,11 +343,9 @@ private ViewModifier computeState(Set modifiers) { */ private Size getSize(Optional optionalPreviousNode, NodeDescription nodeDescription, VariableManager nodeVariableManager) { Size size; - //@formatter:off boolean customizedSize = optionalPreviousNode.map(Node::getCustomizedProperties) .filter(set -> set.contains(CustomizableProperties.Size)) .isPresent(); - //@formatter:on if (customizedSize) { size = optionalPreviousNode.map(Node::getSize).orElse(Size.UNDEFINED); } else { diff --git a/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/description/LabelDescription.java b/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/description/LabelDescription.java index a853e2f95d..87933b7cae 100644 --- a/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/description/LabelDescription.java +++ b/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/description/LabelDescription.java @@ -45,6 +45,8 @@ public final class LabelDescription { private Function styleDescriptionProvider; + private Function isHeaderProvider; + private LabelDescription() { // Prevent instantiation } @@ -61,6 +63,10 @@ public Function getTextProvider() { return this.textProvider; } + public Function getIsHeaderProvider() { + return this.isHeaderProvider; + } + public static Builder newLabelDescription(String id) { return new Builder(id); } @@ -90,6 +96,8 @@ public static final class Builder { private Function styleDescriptionProvider; + private Function isHeaderProvider; + private Builder(String id) { this.id = Objects.requireNonNull(id); } @@ -109,12 +117,18 @@ public Builder styleDescriptionProvider(Function isHeaderProvider) { + this.isHeaderProvider = Objects.requireNonNull(isHeaderProvider); + return this; + } + public LabelDescription build() { LabelDescription labelDescription = new LabelDescription(); labelDescription.id = Objects.requireNonNull(this.id); labelDescription.idProvider = Objects.requireNonNull(this.idProvider); labelDescription.textProvider = Objects.requireNonNull(this.textProvider); labelDescription.styleDescriptionProvider = Objects.requireNonNull(this.styleDescriptionProvider); + labelDescription.isHeaderProvider = Objects.requireNonNull(this.isHeaderProvider); return labelDescription; } } diff --git a/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/elements/InsideLabelElementProps.java b/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/elements/InsideLabelElementProps.java index 2e87b9ac6e..8d17603eaa 100644 --- a/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/elements/InsideLabelElementProps.java +++ b/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/elements/InsideLabelElementProps.java @@ -48,6 +48,8 @@ public final class InsideLabelElementProps implements IProps { private LabelStyle style; + private boolean isHeader; + private InsideLabelElementProps() { // Prevent instantiation } @@ -84,6 +86,10 @@ public LabelStyle getStyle() { return this.style; } + public boolean isIsHeader() { + return this.isHeader; + } + public static Builder newInsideLabelElementProps(String id) { return new Builder(id); } @@ -117,6 +123,8 @@ public static final class Builder { private LabelStyle style; + private boolean isHeader; + private Builder(String id) { this.id = Objects.requireNonNull(id); } @@ -156,6 +164,11 @@ public Builder style(LabelStyle style) { return this; } + public Builder isHeader(boolean isHeader) { + this.isHeader = isHeader; + return this; + } + public InsideLabelElementProps build() { InsideLabelElementProps insideLabelElementProps = new InsideLabelElementProps(); insideLabelElementProps.id = Objects.requireNonNull(this.id); @@ -166,6 +179,7 @@ public InsideLabelElementProps build() { insideLabelElementProps.size = Objects.requireNonNull(this.size); insideLabelElementProps.alignment = Objects.requireNonNull(this.alignment); insideLabelElementProps.style = Objects.requireNonNull(this.style); + insideLabelElementProps.isHeader = this.isHeader; return insideLabelElementProps; } } diff --git a/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/renderer/DiagramElementFactory.java b/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/renderer/DiagramElementFactory.java index f95adee16c..08ed0b73d1 100644 --- a/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/renderer/DiagramElementFactory.java +++ b/packages/diagrams/backend/sirius-components-diagrams/src/main/java/org/eclipse/sirius/components/diagrams/renderer/DiagramElementFactory.java @@ -185,6 +185,7 @@ private InsideLabel instantiateInsideLabel(InsideLabelElementProps props) { .size(props.getSize()) .alignment(props.getAlignment()) .style(props.getStyle()) + .isHeader(props.isIsHeader()) .build(); } diff --git a/packages/diagrams/backend/sirius-components-diagrams/src/test/java/org/eclipse/sirius/components/diagrams/renderer/DiagramElementChangeVisibilityTests.java b/packages/diagrams/backend/sirius-components-diagrams/src/test/java/org/eclipse/sirius/components/diagrams/renderer/DiagramElementChangeVisibilityTests.java index 2b878ddcaa..4cd6a860e9 100644 --- a/packages/diagrams/backend/sirius-components-diagrams/src/test/java/org/eclipse/sirius/components/diagrams/renderer/DiagramElementChangeVisibilityTests.java +++ b/packages/diagrams/backend/sirius-components-diagrams/src/test/java/org/eclipse/sirius/components/diagrams/renderer/DiagramElementChangeVisibilityTests.java @@ -79,23 +79,20 @@ public class DiagramElementChangeVisibilityTests { private static final List OBJECT_IDS = List.of("First", "Second", "Third", "Fourth"); private static final Function STYLE_PROVIDER = variableManager -> { - // @formatter:off return ImageNodeStyle.newImageNodeStyle() .imageURL("test") .scalingFactor(1) .build(); - // @formatter:on }; private static final Function STYLE_EDGE_PROVIDER = variableManager -> { - // @formatter:off return EdgeStyle.newEdgeStyle() .color(COLOR) .lineStyle(LineStyle.Dash) .sourceArrow(ArrowStyle.Diamond) .targetArrow(ArrowStyle.Diamond) .build(); - // @formatter:on + }; private NodeDescription createNodeDescription(String elementId, List borderNodes, List children) { @@ -109,7 +106,6 @@ private NodeDescription createNodeDescription(String elementId, List true) .boldProvider(VariableManager -> true) @@ -124,6 +120,7 @@ private NodeDescription createNodeDescription(String elementId, List LABEL_ID) .textProvider(variableManager -> LABEL_TEXT) .styleDescriptionProvider(variableManager -> labelStyleDescription) + .isHeaderProvider(vm -> false) .build(); NodeDescription nodeDescription = NodeDescription.newNodeDescription(id) @@ -138,13 +135,12 @@ private NodeDescription createNodeDescription(String elementId, List new Success()) - .deleteHandler(variableManager -> new Success()).build(); - // @formatter:on + .deleteHandler(variableManager -> new Success()) + .build(); return nodeDescription; } private EdgeDescription createEdgeDescription(NodeDescription sourceDescription, String sourceObjectId, NodeDescription targetDescription, String targetObjectId) { - // @formatter:off Function> sourceNodesProvider = variableManager -> { var optionalCache = variableManager.get(DiagramDescription.CACHE, DiagramRenderingCache.class); Map> objectToNodes = optionalCache.map(DiagramRenderingCache::getObjectToNodes).orElse(new HashMap<>()); @@ -182,12 +178,11 @@ private EdgeDescription createEdgeDescription(NodeDescription sourceDescription, .labelEditHandler((variableManager, edgeLabelKind, newLabel) -> new Success()) .deleteHandler(variableManager -> new Success()) .build(); - // @formatter:on + return edgeDescription; } private Diagram createDiagram(Optional previousDiagram, List nodeDescriptions, List edgeDescriptions) { - // @formatter:off DiagramDescription diagramDescription = DiagramDescription.newDiagramDescription(UUID.randomUUID().toString()) .label("") .canCreatePredicate(variableManager -> true) @@ -211,14 +206,13 @@ private Diagram createDiagram(Optional previousDiagram, List nodeDescriptions = IntStream.range(0, 3) .mapToObj(i -> this.createNodeDescription(OBJECT_IDS.get(i), List.of(), List.of())) .toList(); @@ -250,7 +244,6 @@ public void testSimpleFadedElementRendering() { .nodes(nodes) .edges(List.of(edge)) .build(); - // @formatter:on Diagram newDiagram = this.createDiagram(Optional.of(diagramTemp), nodeDescriptions, List.of(edgeDescription)); @@ -310,7 +303,6 @@ public DiagramTestData testHideSpreadToEdgesRendering() { Diagram diagramTemp2 = Diagram.newDiagram(newDiagram) .nodes(nodes) .build(); - // @formatter:on Diagram newDiagram2 = this.createDiagram(Optional.of(diagramTemp2), nodeDescriptions, List.of(edgeDescription, edge2Description)); @@ -335,7 +327,6 @@ public DiagramTestData testHideSpreadToChildrenRendering() { // Test: (1 (4)(2 (3))), hide 1 // Expected result: all nodes are hidden - // @formatter:off var node = Node.newNode(diagram.getNodes().get(0)) .modifiers(Set.of(ViewModifier.Hidden)) .build(); @@ -343,7 +334,6 @@ public DiagramTestData testHideSpreadToChildrenRendering() { Diagram diagramTemp = Diagram.newDiagram(diagram) .nodes(List.of(node)) .build(); - // @formatter:on Diagram newDiagram = this.createDiagram(Optional.of(diagramTemp), nodeDescriptions, List.of()); @@ -373,7 +363,6 @@ public void testRevealHiddenNodesSpreadingRendering() { Diagram diagram = returnedValue.getDiagram(); List nodeDescriptions = returnedValue.getNodeDescriptions(); - // @formatter:off var node = Node.newNode(diagram.getNodes().get(0)) .modifiers(Set.of()) .build(); @@ -381,7 +370,6 @@ public void testRevealHiddenNodesSpreadingRendering() { var diagramTemp = Diagram.newDiagram(diagram) .nodes(List.of(node)) .build(); - // @formatter:on var newDiagram = this.createDiagram(Optional.of(diagramTemp), nodeDescriptions, List.of()); @@ -398,7 +386,6 @@ public void testRevealHiddenEdgesSpreadingRendering() { List nodeDescriptions = returnedValue.getNodeDescriptions(); List edgeDescriptions = returnedValue.getEdgeDescriptions(); - // @formatter:off var node0 = Node.newNode(diagram.getNodes().get(0)) .modifiers(Set.of()) .build(); @@ -410,7 +397,7 @@ public void testRevealHiddenEdgesSpreadingRendering() { var diagramTemp = Diagram.newDiagram(diagram) .nodes(List.of(node0, node1, diagram.getNodes().get(2))) .build(); - // @formatter:on + var newDiagram = this.createDiagram(Optional.of(diagramTemp), nodeDescriptions, edgeDescriptions); @@ -429,7 +416,6 @@ public void testModifierPriority() { Edge edge = Edge.newEdge(diagram.getEdges().get(0)).modifiers(Set.of(ViewModifier.Normal)).build(); - // @formatter:off Diagram diagramTemp = Diagram.newDiagram(diagram) .nodes(List.of(node)) .edges(List.of(edge)) @@ -459,7 +445,6 @@ public void testModifierPriority() { diagramTemp = Diagram.newDiagram(newDiagram) .edges(List.of(edge)) .build(); - // @formatter:on newDiagram = this.createDiagram(Optional.of(diagramTemp), List.of(nodeDesc), List.of(edgeDesc)); @@ -468,11 +453,9 @@ public void testModifierPriority() { node = Node.newNode(diagram.getNodes().get(0)).modifiers(Set.of(ViewModifier.Normal, ViewModifier.Faded, ViewModifier.Hidden)).build(); - // @formatter:off diagramTemp = Diagram.newDiagram(newDiagram) .nodes(List.of(node)) .build(); - // @formatter:on newDiagram = this.createDiagram(Optional.of(diagramTemp), List.of(nodeDesc), List.of(edgeDesc)); diff --git a/packages/diagrams/backend/sirius-components-diagrams/src/test/java/org/eclipse/sirius/components/diagrams/renderer/DiagramRendererEdgeTests.java b/packages/diagrams/backend/sirius-components-diagrams/src/test/java/org/eclipse/sirius/components/diagrams/renderer/DiagramRendererEdgeTests.java index b8f85085e2..9da2df182a 100644 --- a/packages/diagrams/backend/sirius-components-diagrams/src/test/java/org/eclipse/sirius/components/diagrams/renderer/DiagramRendererEdgeTests.java +++ b/packages/diagrams/backend/sirius-components-diagrams/src/test/java/org/eclipse/sirius/components/diagrams/renderer/DiagramRendererEdgeTests.java @@ -136,7 +136,6 @@ public void testNoDuplicateEdgeId() { } private Diagram renderDiagram(List nodeDescriptions, List edgeDescriptions) { - // @formatter:off DiagramDescription diagramDescription = DiagramDescription.newDiagramDescription(DIAGRAM_DESCRIPTION_ID) .label("") .canCreatePredicate(variableManager -> true) @@ -147,10 +146,8 @@ private Diagram renderDiagram(List nodeDescriptions, List new Failure("")) .build(); - // @formatter:on VariableManager variableManager = new VariableManager(); - // @formatter:off DiagramComponentProps props = DiagramComponentProps.newDiagramComponentProps() .variableManager(variableManager) .diagramDescription(diagramDescription) @@ -161,14 +158,12 @@ private Diagram renderDiagram(List nodeDescriptions, List "#000000") .fontSizeProvider(variableManager -> 16) @@ -183,6 +178,7 @@ private NodeDescription getNodeDescription(String nodeDescriptionId) { .idProvider(variableManager -> "labelId") .textProvider(variableManager -> "Node") .styleDescriptionProvider(variableManager -> labelStyleDescription) + .isHeaderProvider(vm -> false) .build(); Function nodeStyleProvider = variableManager -> { @@ -217,11 +213,9 @@ private NodeDescription getNodeDescription(String nodeDescriptionId) { .labelEditHandler((variableManager, newLabel) -> new Success()) .deleteHandler(variableManager -> new Success()) .build(); - // @formatter:on } private EdgeDescription getEdgeDescription(NodeDescription nodeDescription, String id) { - // @formatter:off Function> sourceNodesProvider = variableManager -> { var optionalCache = variableManager.get(DiagramDescription.CACHE, DiagramRenderingCache.class); Map> objectToNodes = optionalCache.map(DiagramRenderingCache::getObjectToNodes).orElse(new HashMap<>()); @@ -273,6 +267,5 @@ private EdgeDescription getEdgeDescription(NodeDescription nodeDescription, Stri .deleteHandler(variableManager -> new Failure("")) .labelEditHandler((variableManager, edgeLabelKind, newLabel) -> new Failure("")) .build(); - // @formatter:on } } diff --git a/packages/diagrams/backend/sirius-components-diagrams/src/test/java/org/eclipse/sirius/components/diagrams/renderer/DiagramRendererNodeTests.java b/packages/diagrams/backend/sirius-components-diagrams/src/test/java/org/eclipse/sirius/components/diagrams/renderer/DiagramRendererNodeTests.java index a42ab27256..202440fb9f 100644 --- a/packages/diagrams/backend/sirius-components-diagrams/src/test/java/org/eclipse/sirius/components/diagrams/renderer/DiagramRendererNodeTests.java +++ b/packages/diagrams/backend/sirius-components-diagrams/src/test/java/org/eclipse/sirius/components/diagrams/renderer/DiagramRendererNodeTests.java @@ -74,14 +74,12 @@ public class DiagramRendererNodeTests { @Test public void testSimpleNodeRendering() { Function styleProvider = variableManager -> { - // @formatter:off return RectangularNodeStyle.newRectangularNodeStyle() .color("") .borderColor("") .borderSize(0) .borderStyle(LineStyle.Solid) .build(); - // @formatter:on }; Diagram diagram = this.createDiagram(styleProvider, variableManager -> NODE_RECTANGULAR, VariableManager -> Size.UNDEFINED, Optional.empty()); @@ -111,14 +109,12 @@ public void testSimpleNodeRendering() { @Test public void testSimpleNodeRenderingWithSizeProvider() { Function styleProvider = variableManager -> { - // @formatter:off return RectangularNodeStyle.newRectangularNodeStyle() .color("") .borderColor("") .borderSize(0) .borderStyle(LineStyle.Solid) .build(); - // @formatter:on }; Diagram diagram = this.createDiagram(styleProvider, variableManager -> NODE_RECTANGULAR, VariableManager -> Size.of(10, 200), Optional.empty()); @@ -148,28 +144,24 @@ public void testSimpleNodeRenderingWithSizeProvider() { @Test public void testSimpleNodeRenderingWithSizeProviderWithPreviousDiagram() { Function styleProvider = variableManager -> { - // @formatter:off return RectangularNodeStyle.newRectangularNodeStyle() .color("") .borderColor("") .borderSize(0) .borderStyle(LineStyle.Solid) .build(); - // @formatter:on }; Diagram diagram = this.createDiagram(styleProvider, variableManager -> NODE_RECTANGULAR, VariableManager -> Size.of(10, 200), Optional.empty()); // We modified the created diagram to change the node previous size. Node node = diagram.getNodes().get(0); - // @formatter:off Node nodeWithNewSize = Node.newNode(node) .size(Size.of(50, 100)) .build(); Diagram newDiagram = Diagram.newDiagram(diagram) .nodes(List.of(nodeWithNewSize)) .build(); - // @formatter:on diagram = this.createDiagram(styleProvider, variableManager -> NODE_RECTANGULAR, VariableManager -> Size.of(10, 200), Optional.of(newDiagram)); @@ -181,7 +173,6 @@ public void testSimpleNodeRenderingWithSizeProviderWithPreviousDiagram() { // We check that the node size is the new one set in new diagram assertThat(diagram.getNodes()).extracting(Node::getSize).allMatch(s -> s.getHeight() == 100 && s.getWidth() == 50); - // @formatter:off nodeWithNewSize = Node.newNode(node) .size(Size.of(50, 100)) .customizedProperties(Set.of(CustomizableProperties.Size)) @@ -189,7 +180,6 @@ public void testSimpleNodeRenderingWithSizeProviderWithPreviousDiagram() { newDiagram = Diagram.newDiagram(diagram) .nodes(List.of(nodeWithNewSize)) .build(); - // @formatter:on diagram = this.createDiagram(styleProvider, variableManager -> NODE_RECTANGULAR, VariableManager -> Size.of(10, 200), Optional.of(newDiagram)); // We now check that we use the custom user size in priority over the VSM default one. assertThat(diagram.getNodes()).extracting(Node::getSize).allMatch(s -> s.getHeight() == 100 && s.getWidth() == 50); @@ -201,12 +191,10 @@ public void testSimpleNodeRenderingWithSizeProviderWithPreviousDiagram() { @Test public void testImageNodeRendering() { Function styleProvider = variableManager -> { - // @formatter:off return ImageNodeStyle.newImageNodeStyle() .imageURL("test") .scalingFactor(1) .build(); - // @formatter:on }; Diagram diagram = this.createDiagram(styleProvider, variableManager -> NODE_IMAGE, VariableManager -> Size.UNDEFINED, Optional.empty()); @@ -237,7 +225,6 @@ public void testImageNodeRendering() { */ private Diagram createDiagram(Function styleProvider, Function typeProvider, Function sizeProvider, Optional previousDiagram) { - // @formatter:off LabelStyleDescription labelStyleDescription = LabelStyleDescription.newLabelStyleDescription() .italicProvider(VariableManager -> true) .boldProvider(VariableManager -> true) @@ -252,6 +239,7 @@ private Diagram createDiagram(Function styleProvide .idProvider(variableManager -> LABEL_ID) .textProvider(variableManager -> LABEL_TEXT) .styleDescriptionProvider(variableManager -> labelStyleDescription) + .isHeaderProvider(vm -> false) .build(); NodeDescription nodeDescription = NodeDescription.newNodeDescription(NODE_DESCRIPTION_ID) @@ -280,10 +268,8 @@ private Diagram createDiagram(Function styleProvide .palettes(List.of()) .dropHandler(variableManager -> new Failure("")) .build(); - // @formatter:on VariableManager variableManager = new VariableManager(); - // @formatter:off DiagramComponentProps props = DiagramComponentProps.newDiagramComponentProps() .variableManager(variableManager) .diagramDescription(diagramDescription) @@ -294,7 +280,6 @@ private Diagram createDiagram(Function styleProvide .operationValidator(new IOperationValidator.NoOp()) .diagramEvent(Optional.empty()) .build(); - // @formatter:on Element element = new Element(DiagramComponent.class, props); return new DiagramRenderer().render(element); } diff --git a/packages/diagrams/backend/sirius-components-diagrams/src/test/java/org/eclipse/sirius/components/diagrams/renderer/UnsynchronizedDiagramTests.java b/packages/diagrams/backend/sirius-components-diagrams/src/test/java/org/eclipse/sirius/components/diagrams/renderer/UnsynchronizedDiagramTests.java index 20e9142017..671f93eccd 100644 --- a/packages/diagrams/backend/sirius-components-diagrams/src/test/java/org/eclipse/sirius/components/diagrams/renderer/UnsynchronizedDiagramTests.java +++ b/packages/diagrams/backend/sirius-components-diagrams/src/test/java/org/eclipse/sirius/components/diagrams/renderer/UnsynchronizedDiagramTests.java @@ -135,11 +135,9 @@ public void testUnsynchronizedRenderingOnRootAfterDeletion() { String nodeIdToDelete = refreshedDiagramAfterNodeCreation.getNodes().get(0).getId(); - // @formatter:off ViewDeletionRequest viewDeletionRequest = ViewDeletionRequest.newViewDeletionRequest() .elementId(nodeIdToDelete) .build(); - // @formatter:on Diagram refreshedDiagramAfterNodeDeletion = this.render(diagramDescription, List.of(), List.of(viewDeletionRequest), Optional.of(refreshedDiagramAfterNodeCreation)); assertThat(refreshedDiagramAfterNodeDeletion.getNodes()).hasSize(1); @@ -235,11 +233,9 @@ public void testUnsynchronizedRenderingOnNodeContainerAfterDeletion() { Diagram diagramAfterSecondNodeCreation = this.render(diagramDescription, List.of(childViewCreationRequest), List.of(), Optional.of(diagramAfterFirstNodeCreation)); String nodeIdToDelete = diagramAfterSecondNodeCreation.getNodes().get(0).getChildNodes().get(0).getId(); - // @formatter:off ViewDeletionRequest viewDeletionRequest = ViewDeletionRequest.newViewDeletionRequest() .elementId(nodeIdToDelete) .build(); - // @formatter:on Diagram diagramAfterSecondNodeDeletion = this.render(diagramDescription, List.of(), List.of(viewDeletionRequest), Optional.of(diagramAfterFirstNodeCreation)); assertThat(diagramAfterSecondNodeDeletion.getNodes()).hasSize(2); @@ -255,7 +251,6 @@ public void testUnsynchronizedRenderingOnNodeContainerAfterDeletion() { private Diagram render(DiagramDescription diagramDescription, List viewCreationRequests, List viewDeletionRequests, Optional optionalPreviousDiagram) { VariableManager variableManager = new VariableManager(); - // @formatter:off DiagramComponentProps props = DiagramComponentProps.newDiagramComponentProps() .variableManager(variableManager) .diagramDescription(diagramDescription) @@ -266,14 +261,12 @@ private Diagram render(DiagramDescription diagramDescription, List> semanticElementsProvider) { - // @formatter:off LabelStyleDescription labelStyleDescription = LabelStyleDescription.newLabelStyleDescription() .italicProvider(VariableManager -> true) .boldProvider(VariableManager -> true) @@ -288,6 +281,7 @@ private DiagramDescription getDiagramDescription(Function "labelid") .textProvider(variableManager -> "label") .styleDescriptionProvider(variableManager -> labelStyleDescription) + .isHeaderProvider(vm -> false) .build(); Function styleProvider = variableManager -> { @@ -364,7 +358,6 @@ private DiagramDescription getDiagramDescription(Function new Failure("")) .build(); - // @formatter:on return diagramDescription; } diff --git a/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/converter/convertDiagram.ts b/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/converter/convertDiagram.ts index d21b436010..65dd80f1c9 100644 --- a/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/converter/convertDiagram.ts +++ b/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/converter/convertDiagram.ts @@ -226,7 +226,7 @@ const toListNode = ( const alignement = AlignmentMap[insideLabel.insideLabelLocation]; if (alignement.isPrimaryVerticalAlignment) { if (alignement.primaryAlignment === 'TOP') { - if (style.withHeader) { + if (insideLabel.isHeader) { data.label.style.borderBottom = `${style.borderSize}px ${style.borderStyle} ${style.borderColor}`; } data.style = { ...data.style, display: 'flex', flexDirection: 'column', justifyContent: 'flex-start' }; diff --git a/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/graphql/subscription/labelFragment.ts b/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/graphql/subscription/labelFragment.ts index a04d3dcd4d..fab9aecbb8 100644 --- a/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/graphql/subscription/labelFragment.ts +++ b/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/graphql/subscription/labelFragment.ts @@ -34,6 +34,7 @@ fragment insideLabelFragment on InsideLabel { type text insideLabelLocation + isHeader style { color fontSize diff --git a/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/graphql/subscription/labelFragment.types.ts b/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/graphql/subscription/labelFragment.types.ts index eb350f7679..40e2e73d8d 100644 --- a/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/graphql/subscription/labelFragment.types.ts +++ b/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/graphql/subscription/labelFragment.types.ts @@ -24,6 +24,7 @@ export interface GQLInsideLabel { text: string; insideLabelLocation: InsideLabelLocation; style: GQLLabelStyle; + isHeader: boolean; } export interface GQLLabelStyle { diff --git a/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/graphql/subscription/nodeFragment.ts b/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/graphql/subscription/nodeFragment.ts index 3e4ed42be6..af07fabbdc 100644 --- a/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/graphql/subscription/nodeFragment.ts +++ b/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/graphql/subscription/nodeFragment.ts @@ -31,7 +31,6 @@ fragment nodeFragment on Node { borderStyle borderSize borderRadius - withHeader } ... on ImageNodeStyle { imageURL diff --git a/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/graphql/subscription/nodeFragment.types.ts b/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/graphql/subscription/nodeFragment.types.ts index efbe22ac30..f203f03a7b 100644 --- a/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/graphql/subscription/nodeFragment.types.ts +++ b/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/graphql/subscription/nodeFragment.types.ts @@ -69,7 +69,6 @@ export interface GQLRectangularNodeStyle extends GQLNodeStyle { borderStyle: string; borderSize: string; borderRadius: number; - withHeader: boolean; } export interface GQLImageNodeStyle extends GQLNodeStyle { diff --git a/packages/diagrams/frontend/sirius-components-diagrams/src/representation/DiagramRepresentation.types.ts b/packages/diagrams/frontend/sirius-components-diagrams/src/representation/DiagramRepresentation.types.ts index fa64f796c6..77636b0b71 100644 --- a/packages/diagrams/frontend/sirius-components-diagrams/src/representation/DiagramRepresentation.types.ts +++ b/packages/diagrams/frontend/sirius-components-diagrams/src/representation/DiagramRepresentation.types.ts @@ -165,6 +165,7 @@ export interface GQLLabel { alignment: GQLPosition; position: GQLPosition; size: GQLSize; + isHeader: boolean; } export interface GQLLabelStyle { @@ -206,7 +207,6 @@ export interface GQLRectangularNodeStyle extends GQLINodeStyle { borderSize: number; borderStyle: GQLLineStyle; color: string; - withHeader: boolean; } export enum GQLLineStyle { diff --git a/packages/diagrams/frontend/sirius-components-diagrams/src/representation/operations.ts b/packages/diagrams/frontend/sirius-components-diagrams/src/representation/operations.ts index 3b4372b4f9..ebd96ee4c6 100644 --- a/packages/diagrams/frontend/sirius-components-diagrams/src/representation/operations.ts +++ b/packages/diagrams/frontend/sirius-components-diagrams/src/representation/operations.ts @@ -117,7 +117,6 @@ export const diagramEventSubscription = gql` borderStyle borderSize borderRadius - withHeader } ... on ImageNodeStyle { imageURL @@ -241,6 +240,7 @@ export const diagramEventSubscription = gql` x y } + isHeader } `; diff --git a/packages/diagrams/frontend/sirius-components-diagrams/src/sprotty/convertDiagram.tsx b/packages/diagrams/frontend/sirius-components-diagrams/src/sprotty/convertDiagram.tsx index b99b917a4e..8f45fdc839 100644 --- a/packages/diagrams/frontend/sirius-components-diagrams/src/sprotty/convertDiagram.tsx +++ b/packages/diagrams/frontend/sirius-components-diagrams/src/sprotty/convertDiagram.tsx @@ -163,7 +163,7 @@ const convertNode = ( node.type = type; node.kind = `siriusComponents://graphical?representationType=Diagram&type=Node`; node.descriptionId = descriptionId; - node.style = convertNodeStyle(style, theme, httpOrigin); + node.style = convertNodeStyle(style, theme, httpOrigin, insideLabel.isHeader); node.editableLabel = !readOnly ? convertedLabel : null; node.targetObjectId = targetObjectId; node.targetObjectKind = targetObjectKind; @@ -207,7 +207,7 @@ const convertBorderNode = ( node.type = type.replace('node:', 'port:'); node.kind = `siriusComponents://graphical?representationType=Diagram&type=Node`; node.descriptionId = descriptionId; - node.style = convertNodeStyle(style, theme, httpOrigin); + node.style = convertNodeStyle(style, theme, httpOrigin, insideLabel.isHeader); node.editableLabel = !readOnly ? convertedLabel : null; node.targetObjectId = targetObjectId; node.targetObjectKind = targetObjectKind; @@ -308,7 +308,12 @@ const convertLabel = ( return label; }; -const convertNodeStyle = (style: GQLINodeStyle, theme: Theme, httpOrigin: string): INodeStyle | null => { +const convertNodeStyle = ( + style: GQLINodeStyle, + theme: Theme, + httpOrigin: string, + hasHeader: boolean +): INodeStyle | null => { let convertedStyle: INodeStyle | null = null; if (isImageNodeStyle(style)) { @@ -334,7 +339,7 @@ const convertNodeStyle = (style: GQLINodeStyle, theme: Theme, httpOrigin: string convertedStyle = svgNodeStyle; } else if (isRectangularNodeStyle(style)) { - const { color, borderColor, borderRadius, borderSize, borderStyle, withHeader } = style; + const { color, borderColor, borderRadius, borderSize, borderStyle } = style; const rectangularNodeStyle = new RectangularNodeStyle(); rectangularNodeStyle.color = getCSSColor(color, theme); @@ -342,7 +347,7 @@ const convertNodeStyle = (style: GQLINodeStyle, theme: Theme, httpOrigin: string rectangularNodeStyle.borderRadius = borderRadius; rectangularNodeStyle.borderSize = borderSize; rectangularNodeStyle.borderStyle = LineStyle[GQLLineStyle[borderStyle]]; - rectangularNodeStyle.withHeader = withHeader; + rectangularNodeStyle.withHeader = hasHeader; convertedStyle = rectangularNodeStyle; } else if (isIconLabelNodeStyle(style)) { diff --git a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/DiagramOperationInterpreterViewSwitch.java b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/DiagramOperationInterpreterViewSwitch.java index 037b87bff7..032d9daf94 100644 --- a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/DiagramOperationInterpreterViewSwitch.java +++ b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/DiagramOperationInterpreterViewSwitch.java @@ -103,7 +103,6 @@ public Optional caseCreateView(CreateView createViewOperation) return Optional.empty(); } Map variables = this.variableManager.getVariables(); - // @formatter:off var optionalParentNode = this.interpreter.evaluateExpression(variables, createViewOperation.getParentViewExpression()) .asObject() .filter(Node.class::isInstance) @@ -112,7 +111,6 @@ public Optional caseCreateView(CreateView createViewOperation) .asObject() .filter(EObject.class::isInstance) .map(EObject.class::cast); - // @formatter:on Optional optionalVariableManager = Optional.empty(); if (optionalSemanticElement.isPresent()) { @@ -156,14 +154,12 @@ private Node createView(Optional optionalParentNode, NodeDescription nodeD var targetObjectKind = this.objectService.getKind(semanticElement); var targetObjectLabel = this.objectService.getLabel(semanticElement); - // @formatter:off ViewCreationRequest viewCreationRequest = ViewCreationRequest.newViewCreationRequest() .parentElementId(parentElementId) .targetObjectId(targetObjectId) .descriptionId(nodeDescription.getId()) .containmentKind(nodeContainmentKind) .build(); - // @formatter:on this.diagramContext.getViewCreationRequests().add(viewCreationRequest); // Since we have everything to compute the identifier of the node which will be created in the @@ -186,6 +182,7 @@ private Node createView(Optional optionalParentNode, NodeDescription nodeD .size(Size.UNDEFINED) .alignment(Position.UNDEFINED) .style(labelStyle) + .isHeader(false) .build(); var nodeStyle = RectangularNodeStyle.newRectangularNodeStyle() diff --git a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/StylesFactory.java b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/StylesFactory.java index c05903d9dd..b341bd7e72 100644 --- a/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/StylesFactory.java +++ b/packages/view/backend/sirius-components-view-emf/src/main/java/org/eclipse/sirius/components/view/emf/diagram/StylesFactory.java @@ -141,7 +141,6 @@ public INodeStyle createNodeStyle(NodeStyleDescription nodeStyle, Optional optionalEClass = variableManager.get(IRepresentationDescription.CLASS, EClass.class) .filter(new DomainClassPredicate(viewDiagramDescription.getDomainType())); - // @formatter:on if (optionalEClass.isPresent()) { String preconditionExpression = viewDiagramDescription.getPreconditionExpression(); if (preconditionExpression != null && !preconditionExpression.isBlank()) { @@ -204,7 +203,6 @@ private boolean canCreateDiagram(org.eclipse.sirius.components.view.diagram.Diag } private NodeDescription convert(org.eclipse.sirius.components.view.diagram.NodeDescription viewNodeDescription, ViewDiagramDescriptionConverterContext converterContext) { - // @formatter:off // Convert our children first, we need their converted values to build our NodeDescription var childNodeDescriptions = viewNodeDescription.getChildrenDescriptions().stream() .map(childNodeDescription -> this.convert(childNodeDescription, converterContext)) @@ -213,7 +211,6 @@ private NodeDescription convert(org.eclipse.sirius.components.view.diagram.NodeD var borderNodeDescriptions = viewNodeDescription.getBorderNodesDescriptions().stream() .map(borderNodeDescription -> this.convert(borderNodeDescription, converterContext)) .toList(); - // @formatter:on SynchronizationPolicy synchronizationPolicy = SynchronizationPolicy.valueOf(viewNodeDescription.getSynchronizationPolicy().getName()); AQLInterpreter interpreter = converterContext.getInterpreter(); @@ -321,13 +318,20 @@ private LabelDescription getLabelDescription(org.eclipse.sirius.components.view. return this.stylesFactory.createLabelStyleDescription(effectiveStyle); }; - // @formatter:off + Function isHeaderProvider = variableManager -> { + var effectiveStyle = this.findEffectiveStyle(viewNodeDescription, interpreter, variableManager); + if (effectiveStyle instanceof RectangularNodeStyleDescription rectangularNodeStyleDescription) { + return rectangularNodeStyleDescription.isWithHeader(); + } + return false; + }; + return LabelDescription.newLabelDescription(EcoreUtil.getURI(viewNodeDescription).toString() + LabelDescription.LABEL_SUFFIX) .idProvider(labelIdProvider) .textProvider(variableManager -> this.evaluateString(interpreter, variableManager, viewNodeDescription.getLabelExpression())) .styleDescriptionProvider(styleDescriptionProvider) + .isHeaderProvider(isHeaderProvider) .build(); - // @formatter:on } private Optional getSpecificEdgeLabelDescription(org.eclipse.sirius.components.view.diagram.EdgeDescription viewEdgeDescription, String labelExpression, String labelSuffix, @@ -342,37 +346,32 @@ private Optional getSpecificEdgeLabelDescription(org.eclipse.s }; Function styleDescriptionProvider = variableManager -> { - // @formatter:off var effectiveStyle = viewEdgeDescription.getConditionalStyles().stream() .filter(style -> this.matches(interpreter, style.getCondition(), variableManager)) .map(org.eclipse.sirius.components.view.diagram.EdgeStyle.class::cast) .findFirst() .orElseGet(viewEdgeDescription::getStyle); - // @formatter:on return this.stylesFactory.createEdgeLabelStyleDescription(effectiveStyle); }; - // @formatter:off return Optional.of(LabelDescription.newLabelDescription(EcoreUtil.getURI(viewEdgeDescription).toString() + labelSuffix) .idProvider(labelIdProvider) .textProvider(variableManager -> this.evaluateString(interpreter, variableManager, labelExpression)) .styleDescriptionProvider(styleDescriptionProvider) + .isHeaderProvider(vm -> false) .build()); - // @formatter:on } private Function> getSemanticElementsProvider(org.eclipse.sirius.components.view.diagram.DiagramElementDescription elementDescription, AQLInterpreter interpreter) { return variableManager -> { Result result = interpreter.evaluateExpression(variableManager.getVariables(), elementDescription.getSemanticCandidatesExpression()); List candidates = result.asObjects().orElse(List.of()); - // @formatter:off return candidates.stream() .filter(EObject.class::isInstance) .map(EObject.class::cast) .filter(candidate -> new DomainClassPredicate(Optional.ofNullable(elementDescription.getDomainType()).orElse("")).test(candidate.eClass())) .toList(); - // @formatter:on }; } @@ -407,12 +406,10 @@ private EdgeDescription convert(org.eclipse.sirius.components.view.diagram.EdgeD List semanticCandidates = result.asObjects().orElse(List.of()); var nodeCandidates = semanticCandidates.stream().flatMap(semanticObject -> cache.getElementsRepresenting(semanticObject).stream()); - // @formatter:off return nodeCandidates .filter(nodeElement -> viewEdgeDescription.getSourceNodeDescriptions().stream().anyMatch(nodeDescription -> this.isFromDescription(nodeElement, nodeDescription))) .filter(Objects::nonNull) .toList(); - // @formatter:on }; } else { sourceNodesProvider = variableManager -> { @@ -425,31 +422,26 @@ private EdgeDescription convert(org.eclipse.sirius.components.view.diagram.EdgeD DiagramRenderingCache cache = optionalCache.get(); Object object = optionalObject.get(); - // @formatter:off return cache.getElementsRepresenting(object).stream() .filter(this.isFromCompatibleSourceMapping(viewEdgeDescription)) .filter(Objects::nonNull) .toList(); - // @formatter:on }; } Function> targetNodesProvider = new TargetNodesProvider(this.diagramIdProvider, viewEdgeDescription, interpreter); Function styleProvider = variableManager -> { - // @formatter:off var effectiveStyle = viewEdgeDescription.getConditionalStyles().stream() .filter(style -> this.matches(interpreter, style.getCondition(), variableManager)) .map(org.eclipse.sirius.components.view.diagram.EdgeStyle.class::cast) .findFirst() .orElseGet(viewEdgeDescription::getStyle); - // @formatter:on return this.stylesFactory.createEdgeStyle(effectiveStyle); }; SynchronizationPolicy synchronizationPolicy = SynchronizationPolicy.valueOf(viewEdgeDescription.getSynchronizationPolicy().getName()); - // @formatter:off var builder = EdgeDescription.newEdgeDescription(this.diagramIdProvider.getId(viewEdgeDescription)) .targetObjectIdProvider(this.semanticTargetIdProvider) .targetObjectKindProvider(this.semanticTargetKindProvider) @@ -472,7 +464,6 @@ private EdgeDescription convert(org.eclipse.sirius.components.view.diagram.EdgeD EdgeDescription result = builder.build(); converterContext.getConvertedEdges().put(viewEdgeDescription, result); return result; - // @formatter:on } private Function createDeleteHandler(DiagramElementDescription diagramElementDescription, ViewDiagramDescriptionConverterContext converterContext) { diff --git a/packages/view/backend/sirius-components-view-emf/src/test/java/org/eclipse/sirius/components/view/emf/diagram/ViewPaletteProviderTests.java b/packages/view/backend/sirius-components-view-emf/src/test/java/org/eclipse/sirius/components/view/emf/diagram/ViewPaletteProviderTests.java index dc754dbe3e..519fb2586d 100644 --- a/packages/view/backend/sirius-components-view-emf/src/test/java/org/eclipse/sirius/components/view/emf/diagram/ViewPaletteProviderTests.java +++ b/packages/view/backend/sirius-components-view-emf/src/test/java/org/eclipse/sirius/components/view/emf/diagram/ViewPaletteProviderTests.java @@ -229,6 +229,7 @@ private NodeDescription createNodeDescription() { .idProvider(variableManager -> "") .textProvider(variableManager -> "") .styleDescriptionProvider(variableManager -> styleDescription) + .isHeaderProvider(vm -> false) .build(); return NodeDescription.newNodeDescription("nodeId")