Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Redor2020-10-12 15:37:11 +0000
committerLaurent Redor2020-10-22 08:26:26 +0000
commit895e7d0b13c23edf93042f290d08756c50dff5df (patch)
treeef1714f96c9472ebf54b0201896d9641cd3519ee /plugins
parent7ac227df582843c7bec6abe9566a142fd6e9cd7c (diff)
downloadorg.eclipse.sirius-895e7d0b13c23edf93042f290d08756c50dff5df.tar.gz
org.eclipse.sirius-895e7d0b13c23edf93042f290d08756c50dff5df.tar.xz
org.eclipse.sirius-895e7d0b13c23edf93042f290d08756c50dff5df.zip
[567840] Fix label location to be centered under its border node
Bug: 567840 Change-Id: I6efbffe3b573a135d1e7bcb3b68fb550c3cfb64d Signed-off-by: Laurent Redor <laurent.redor@obeo.fr>
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.sirius.diagram.elk/src/org/eclipse/sirius/diagram/elk/ElkDiagramLayoutConnector.java10
1 files changed, 8 insertions, 2 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.elk/src/org/eclipse/sirius/diagram/elk/ElkDiagramLayoutConnector.java b/plugins/org.eclipse.sirius.diagram.elk/src/org/eclipse/sirius/diagram/elk/ElkDiagramLayoutConnector.java
index 1e31eb5fd9..532c915af3 100644
--- a/plugins/org.eclipse.sirius.diagram.elk/src/org/eclipse/sirius/diagram/elk/ElkDiagramLayoutConnector.java
+++ b/plugins/org.eclipse.sirius.diagram.elk/src/org/eclipse/sirius/diagram/elk/ElkDiagramLayoutConnector.java
@@ -48,6 +48,7 @@ import org.eclipse.elk.core.math.KVector;
import org.eclipse.elk.core.options.CoreOptions;
import org.eclipse.elk.core.options.EdgeLabelPlacement;
import org.eclipse.elk.core.options.NodeLabelPlacement;
+import org.eclipse.elk.core.options.PortLabelPlacement;
import org.eclipse.elk.core.options.SizeConstraint;
import org.eclipse.elk.core.service.IDiagramLayoutConnector;
import org.eclipse.elk.core.service.LayoutMapping;
@@ -990,6 +991,11 @@ public class ElkDiagramLayoutConnector implements IDiagramLayoutConnector {
ElkPort port = ElkGraphUtil.createPort(elknode);
applyOptionsRelatedToElementTarget(port, elkTargetToOptionsOverrideMap);
+
+ // Set the location of port label fixed (indeed the location returned by ELK is currently not compatible with
+ // Sirius constraint). The label is, by default, located centered below the port.
+ elknode.setProperty(CoreOptions.PORT_LABELS_PLACEMENT, PortLabelPlacement.fixed());
+
// set the port's layout, relative to the node position
Rectangle portBounds = getAbsoluteBounds(portEditPart.getFigure());
Rectangle nodeBounds = getAbsoluteBounds(nodeEditPart.getFigure());
@@ -1035,9 +1041,9 @@ public class ElkDiagramLayoutConnector implements IDiagramLayoutConnector {
portLabel.setText(text);
mapping.getGraphMap().put(portLabel, portChildObj);
- // set the port label's layout
+ // Set the port label's layout (centered below the port)
Rectangle labelBounds = getAbsoluteBounds(labelFigure);
- portLabel.setLocation(labelBounds.x - portBounds.x, labelBounds.y - portBounds.y);
+ portLabel.setLocation((portBounds.preciseWidth() / 2) - (labelBounds.preciseWidth() / 2), portBounds.height + 1);
try {
Dimension size = labelFigure.getPreferredSize();
portLabel.setDimensions(size.width, size.height);

Back to the top