From ad3a2b9b945838bd1ded7a8c67f8803efdd1e7f6 Mon Sep 17 00:00:00 2001
From: Filip Reaboi <reaboi@fortiss.org>
Date: Fri, 26 Oct 2018 14:32:45 +0200
Subject: [PATCH] 3517 Graphical glitch with states

Issue-Ref: 3517
Signed-off-by: Filip Reaboi <reaboi@fortiss.org>
---
 .../src/org/fortiss/tooling/base/ui/layout/.ratings |  2 +-
 .../EllipseCurveLayoutDiagramConfiguration.java     | 13 ++++++++++---
 2 files changed, 11 insertions(+), 4 deletions(-)

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 76eb83d16..2da31de76 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 2705bda6e..a7525b252 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} */
-- 
GitLab