diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/layout/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/layout/.ratings index 76eb83d16c02e3cfc343589080897d0f979fe4d9..4f558ed8bfc6bc4906da3e088d56f5cbde18ab35 100644 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/layout/.ratings +++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/layout/.ratings @@ -1,4 +1,4 @@ DiagramLayoutConfigurationBase.java a2fdf000358081429b80706bf29ad6eeda056c2b GREEN -EllipseCurveLayoutDiagramConfiguration.java 2705bda6ed35bc1af4f01a9db2f435587932bacc GREEN +EllipseCurveLayoutDiagramConfiguration.java c829b7b82c062a96f8e0c76f78b49ff05b4ddaa2 GREEN IDiagramLayoutConfiguration.java 2c05b73b104fcea91ad3505ae255e014c314685c GREEN RectangleGridLayoutDiagramConfiguration.java 23ddf57d202057181c150bd8c8b6df972b762522 GREEN diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/layout/EllipseCurveLayoutDiagramConfiguration.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/layout/EllipseCurveLayoutDiagramConfiguration.java index 2705bda6ed35bc1af4f01a9db2f435587932bacc..c829b7b82c062a96f8e0c76f78b49ff05b4ddaa2 100644 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/layout/EllipseCurveLayoutDiagramConfiguration.java +++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/layout/EllipseCurveLayoutDiagramConfiguration.java @@ -27,7 +27,6 @@ import static org.fortiss.tooling.base.utils.LayoutDataUtils.getNodeSize; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.geometry.Dimension; -import org.eclipse.draw2d.geometry.Point; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.gef.requests.ChangeBoundsRequest; import org.fortiss.tooling.base.model.layout.ILayoutedModelElement; @@ -88,7 +87,7 @@ public class EllipseCurveLayoutDiagramConfiguration extends DiagramLayoutConfigu .translate(HALF_DEFAULT_CONNECTOR_SIZE, HALF_DEFAULT_CONNECTOR_SIZE); Dimension ellipseSize = connectorEditPart.getParentEditPart().getFigure().getSize(); Dimension scaledEllipseSize = ellipseSize.getScaled(-.5); - newPosition.translate(scaledEllipseSize.height(), scaledEllipseSize.width()); + newPosition.translate(scaledEllipseSize.width(), scaledEllipseSize.height()); setConnectorAngle(connector, new Polar(newPosition).angle); } @@ -98,6 +97,7 @@ public class EllipseCurveLayoutDiagramConfiguration extends DiagramLayoutConfigu public void alterStickyConnectorMoveFeedbackRequest(ChangeBoundsRequest request, StickyConnectorEditPartBase<? extends ILayoutedModelElement> connectorEditPart, IFigure connectorFigure) { + ILayoutedModelElement stickyConnectorModel = connectorEditPart.getModel(); double angle = getConnectorAngleAsDouble(stickyConnectorModel); @@ -106,6 +106,7 @@ public class EllipseCurveLayoutDiagramConfiguration extends DiagramLayoutConfigu org.fortiss.tooling.base.model.layout.Dimension ellipseSizeElement = LayoutModelElementFactory.createDimension(ellipseSize.width(), ellipseSize.height(), ellipseSize.toString() + "_element"); + org.fortiss.tooling.base.model.layout.Point oldPosition = calculateEllipseBorderPoint(angle, ellipseSizeElement, HALF_DEFAULT_CONNECTOR_SIZE) .translate(-HALF_DEFAULT_CONNECTOR_SIZE, -HALF_DEFAULT_CONNECTOR_SIZE); @@ -120,9 +121,16 @@ public class EllipseCurveLayoutDiagramConfiguration extends DiagramLayoutConfigu newPosition = calculateEllipseBorderPoint(new Polar(newPosition).angle, ellipseSizeElement, HALF_DEFAULT_CONNECTOR_SIZE).translate(-HALF_DEFAULT_CONNECTOR_SIZE, -HALF_DEFAULT_CONNECTOR_SIZE); + // update move delta with new position newPosition.translate(newPosition.getDifference(oldPosition)); - request.setMoveDelta(new Point(newPosition.getX(), newPosition.getY())); + + // TODO FR (see #3517). The moveData is not correctly calculated. The projected location + // should move on the ellipse border, the same as on a rectangular border. As of now the + // projection is also placed outside and inside the ellipse. + // Until the calculation code is fixed, do not apply the result such that these connectors + // are at least moveable all around the ellipse. + // request.setMoveDelta(new Point(newPosition.getX(), newPosition.getY())); } /** {@inheritDoc} */