From b1f7620d39a83e4fd456ca6efbe1765ea5be7d5c Mon Sep 17 00:00:00 2001 From: Florian Hoelzl <hoelzl@fortiss.org> Date: Thu, 10 Nov 2011 10:54:45 +0000 Subject: [PATCH] some cleanup and implementation refs 265 --- .../dnd/CompositionServiceLocalTransfer.java | 2 +- ...onnectionCompositionDragSourceAdapter.java | 2 +- ...onnectionCompositionDropTargetAdapter.java | 43 ++++++++++++++++++- .../ui/dnd/ConnectionCompositionSource.java | 7 ++- .../ElementCompositionDragSourceAdapter.java | 2 +- .../ui/dnd/ElementCompositionSource.java | 7 ++- 6 files changed, 55 insertions(+), 8 deletions(-) diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/CompositionServiceLocalTransfer.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/CompositionServiceLocalTransfer.java index 139728b19..8d2e0edc6 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/CompositionServiceLocalTransfer.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/CompositionServiceLocalTransfer.java @@ -28,7 +28,7 @@ import org.fortiss.tooling.kernel.service.IElementCompositorService; * @author hoelzl * @author $Author$ * @version $Rev$ - * @ConQAT.Rating RED Hash: + * @ConQAT.Rating YELLOW Hash: 736E49D75B233CB065D623C1236DEE52 */ public class CompositionServiceLocalTransfer extends SimpleObjectTransfer { /** Singleton instance. */ diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionDragSourceAdapter.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionDragSourceAdapter.java index ec9877612..2bd7cd271 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionDragSourceAdapter.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionDragSourceAdapter.java @@ -32,7 +32,7 @@ import org.eclipse.swt.dnd.DragSourceAdapter; * @author hoelzl * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: F6A441B08B971BCE814614E2C95BF3AF + * @ConQAT.Rating YELLOW Hash: 95C337E875F3C6A557C6067C7B4D4C42 */ public abstract class ConnectionCompositionDragSourceAdapter extends ElementCompositionDragSourceAdapter { diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionDropTargetAdapter.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionDropTargetAdapter.java index 7af87d886..83379ff4f 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionDropTargetAdapter.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionDropTargetAdapter.java @@ -17,7 +17,12 @@ $Id$ +--------------------------------------------------------------------------*/ package org.fortiss.tooling.kernel.ui.dnd; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.DropTargetAdapter; +import org.eclipse.swt.dnd.DropTargetEvent; +import org.eclipse.swt.widgets.Widget; +import org.fortiss.tooling.kernel.service.IConnectionCompositorService; /** * {@link DropTargetAdapter} for completing an EObject connection via a drop @@ -30,5 +35,41 @@ import org.eclipse.swt.dnd.DropTargetAdapter; */ public abstract class ConnectionCompositionDropTargetAdapter extends DropTargetAdapter { - // TODO: implement + + /** {@inheritDoc} */ + @Override + public void drop(DropTargetEvent event) { + ConnectionCompositionSource dragSource = getDragSourceFromTransfer(); + EObject target = getTargetModel(event.item); + IConnectionCompositorService.INSTANCE.connect( + dragSource.getDesignatedElement(), target, + dragSource.getDesignatedParentElement(), null); + } + + /** {@inheritDoc} */ + @Override + public void dragOver(DropTargetEvent event) { + ConnectionCompositionSource dragSource = getDragSourceFromTransfer(); + EObject target = getTargetModel(event.item); + if (target == null || dragSource.getDesignatedElement() == null) { + event.detail = DND.DROP_NONE; + return; + } + if (IConnectionCompositorService.INSTANCE.canConnect( + dragSource.getDesignatedElement(), target, + dragSource.getDesignatedParentElement(), null)) { + event.detail = DND.DROP_NONE; + return; + } + event.detail = DND.DROP_LINK; + } + + /** Returns the current target element. */ + protected abstract EObject getTargetModel(Widget dropTarget); + + /** Returns the transfered object. */ + private ConnectionCompositionSource getDragSourceFromTransfer() { + return (ConnectionCompositionSource) CompositionServiceLocalTransfer + .getInstance().getObject(); + } } diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionSource.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionSource.java index b9f3fa1e0..fda6aced4 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionSource.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ConnectionCompositionSource.java @@ -18,14 +18,17 @@ $Id$ package org.fortiss.tooling.kernel.ui.dnd; import org.eclipse.emf.ecore.EObject; +import org.fortiss.tooling.kernel.service.IConnectionCompositorService; /** - * DND transfer object for EObject linking. + * DND transfer object for EObject connection composition. If an object of this + * class is transfered via DND, the drop target usually uses the information + * contained herein to call the {@link IConnectionCompositorService}. * * @author hoelzl * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: 8DA926A0F40041760D2A719D7D70F954 + * @ConQAT.Rating YELLOW Hash: 7A9A3F2F21B95A7ABBC4CD6743224DD6 */ public class ConnectionCompositionSource extends ElementCompositionSource { /** Stores the designated parent element. */ diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionDragSourceAdapter.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionDragSourceAdapter.java index f9b494024..a273d5296 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionDragSourceAdapter.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionDragSourceAdapter.java @@ -32,7 +32,7 @@ import org.eclipse.swt.dnd.Transfer; * @author hoelzl * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: 26A507800DA077F9F9F4593751639A74 + * @ConQAT.Rating YELLOW Hash: 70273F4B405C5A2C55ACC3BFFC57D5C1 */ public abstract class ElementCompositionDragSourceAdapter extends DragSourceAdapter { diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionSource.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionSource.java index 32dfae1b3..67b66d908 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionSource.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionSource.java @@ -18,14 +18,17 @@ $Id$ package org.fortiss.tooling.kernel.ui.dnd; import org.eclipse.emf.ecore.EObject; +import org.fortiss.tooling.kernel.service.IElementCompositorService; /** - * DND transfer object for EObject element composition. + * DND transfer object for EObject element composition. If an object of this + * class is transfered via DND, the drop target usually uses the information + * contained herein to call the {@link IElementCompositorService}. * * @author hoelzl * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: A077E28503FF32EFBB402C70FC7A61C2 + * @ConQAT.Rating YELLOW Hash: EAB27D084A09CC5D79CABEBF38DCD7F9 */ public class ElementCompositionSource { -- GitLab