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..2da31de761e0a817a09e5b1e5abf35f4f05be070 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 a7525b252cd5b92549952a81dbb84e646550ebee YELLOW 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..a7525b252cd5b92549952a81dbb84e646550ebee 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,15 @@ 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 seems not to be correctly calculated and one + // could not found a solution for its calculation yet. The "ghost" cursor should + // move on the ellipse border, the same as on a rectangular border. It can be used + // like this till a solution will be found. + // request.setMoveDelta(new Point(newPosition.getX(), newPosition.getY())); } /** {@inheritDoc} */