From c815099cc2d1d52d88edcd3783c01f6337e8ce64 Mon Sep 17 00:00:00 2001
From: Florian Hoelzl <hoelzl@fortiss.org>
Date: Mon, 24 Feb 2020 13:19:04 +0100
Subject: [PATCH] Kernel: LWFXEF is accepting DND from model elements view.

Issue-Ref: 3921
Issue-Url: https://af3-developer.fortiss.org/issues/3907
Signed-off-by: Florian Hoelzl <hoelzl@fortiss.org>
---
 .../base/ui/editor/fx/controller/.ratings       |  4 ++--
 ...tEllipticResizableContentControllerBase.java | 17 +++++++++++++++++
 ...ctangularResizableContentControllerBase.java | 17 +++++++++++++++++
 3 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/.ratings
index 99dfa79fb..2effda820 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/.ratings
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/.ratings
@@ -1,9 +1,9 @@
 ContextMenuUtil.java 405387151d45b09dffb3b6ba44f980313c8edcaf GREEN
 CurvedLinkLayoutedContentAnchorangeController.java 67c20e31ddb82fe2fd499117193353b0545839a0 GREEN
 EObjectDiagramController.java 2b253941592ee25ead95223470f983f23ef9776f YELLOW
-EObjectEllipticResizableContentControllerBase.java 3494d4f0dcdff5eb35f22f0e21d04df81b32e494 GREEN
+EObjectEllipticResizableContentControllerBase.java 7c862a03b97d2f2cfdcc2fcee7434de2e1e257d2 YELLOW
 EObjectModelChangeProvider.java f4b60cebb088a5c81ca92a41614e1a5d40030502 GREEN
-EObjectRectangularResizableContentControllerBase.java f4a967591a60fadb20550ec3eaabccf240c9ec0d GREEN
+EObjectRectangularResizableContentControllerBase.java 28a17bf87f6a7222d927bc1c6b80967cb14b5f03 YELLOW
 KernelServiceBasedModelChangeProviderBase.java 8d1f8ef79ecd383ff74e5a2bbcf24345aabe70af GREEN
 LayoutModelChangeProvider.java b5449d02eaf39086909720c43e21bd061005fc9e GREEN
 LayoutedContentAnchorageController.java 9fc513a7404277514c730f7702d45588f2d81878 GREEN
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectEllipticResizableContentControllerBase.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectEllipticResizableContentControllerBase.java
index 3494d4f0d..7c862a03b 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectEllipticResizableContentControllerBase.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectEllipticResizableContentControllerBase.java
@@ -17,6 +17,8 @@ import static java.lang.Math.max;
 import static java.util.Objects.requireNonNull;
 import static org.fortiss.tooling.base.ui.editor.fx.controller.ContextMenuUtil.createElementCompositionContext;
 import static org.fortiss.tooling.base.ui.editor.fx.controller.ContextMenuUtil.createPrototypeMenu;
+import static org.fortiss.tooling.base.ui.utils.FXDNDUtils.canCompose;
+import static org.fortiss.tooling.base.ui.utils.FXDNDUtils.compose;
 
 import java.util.List;
 
@@ -40,6 +42,7 @@ import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService;
 
 import javafx.scene.Node;
 import javafx.scene.control.MenuItem;
+import javafx.scene.input.Dragboard;
 import javafx.scene.input.MouseEvent;
 
 /**
@@ -148,4 +151,18 @@ public abstract class EObjectEllipticResizableContentControllerBase<T extends EO
 	public IClickController getClickController(Node node, DiagramCoordinate diagramLocation) {
 		return openEditorDoubleClickController;
 	}
+
+	/** {@inheritDoc} */
+	@Override
+	public boolean handleExternalDNDDragOver(Dragboard db, DiagramCoordinate diagramLocation) {
+		double zoom = getViewer().getFeatures().getCurrentZoomFactor();
+		return canCompose(db, diagramLocation, getModelElement(), false, zoom);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public boolean handleExternalDNDDrop(Dragboard db, DiagramCoordinate diagramLocation) {
+		double zoom = getViewer().getFeatures().getCurrentZoomFactor();
+		return compose(db, diagramLocation, getModelElement(), false, zoom);
+	}
 }
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectRectangularResizableContentControllerBase.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectRectangularResizableContentControllerBase.java
index f4a967591..28a17bf87 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectRectangularResizableContentControllerBase.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectRectangularResizableContentControllerBase.java
@@ -19,6 +19,8 @@ import static org.fortiss.tooling.base.layout.DefaultLayoutConstants.DEFAULT_SHA
 import static org.fortiss.tooling.base.layout.DefaultLayoutConstants.DEFAULT_SHAPE_MINIMUM_WIDTH;
 import static org.fortiss.tooling.base.ui.editor.fx.controller.ContextMenuUtil.createElementCompositionContext;
 import static org.fortiss.tooling.base.ui.editor.fx.controller.ContextMenuUtil.createPrototypeMenu;
+import static org.fortiss.tooling.base.ui.utils.FXDNDUtils.canCompose;
+import static org.fortiss.tooling.base.ui.utils.FXDNDUtils.compose;
 
 import java.util.List;
 
@@ -46,6 +48,7 @@ import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService;
 import javafx.geometry.Dimension2D;
 import javafx.scene.Node;
 import javafx.scene.control.MenuItem;
+import javafx.scene.input.Dragboard;
 import javafx.scene.input.MouseEvent;
 
 /**
@@ -177,4 +180,18 @@ public abstract class EObjectRectangularResizableContentControllerBase<T extends
 	public IClickController getClickController(Node node, DiagramCoordinate diagramLocation) {
 		return openEditorDoubleClickController;
 	}
+
+	/** {@inheritDoc} */
+	@Override
+	public boolean handleExternalDNDDragOver(Dragboard db, DiagramCoordinate diagramLocation) {
+		double zoom = getViewer().getFeatures().getCurrentZoomFactor();
+		return canCompose(db, diagramLocation, getModelElement(), false, zoom);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public boolean handleExternalDNDDrop(Dragboard db, DiagramCoordinate diagramLocation) {
+		double zoom = getViewer().getFeatures().getCurrentZoomFactor();
+		return compose(db, diagramLocation, getModelElement(), false, zoom);
+	}
 }
-- 
GitLab