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 139728b195e18bc7cc141b38729c19bb63fcb66a..8d2e0edc6ecb00823eed8fc090166c104be8e912 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 ec987761247f704e682f2a99e753e69a565f0f8d..2bd7cd27147916a89e11f44c42c15e2a3d130518 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 7af87d886a69eb560f09b14633b9eda12d62782b..83379ff4f9c35457bf3e0fd8658bf5a522ffbbc7 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 b9f3fa1e0c6873b93e265cfedfebffc916bbc1cc..fda6aced469e873f9e4058fe596dc8af7e975b04 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 f9b494024137a03cd8607548643be1f80bfdafd4..a273d52961bc0bbdd16324623d4a4baab5f99154 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 32dfae1b3b84af7207b9ec43740fa44caeeb4ce3..67b66d9088c7bac094e68b07635ddab601152d85 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 {