diff --git a/org.fortiss.tooling.base.ui/trunk/META-INF/MANIFEST.MF b/org.fortiss.tooling.base.ui/trunk/META-INF/MANIFEST.MF index 1b301674c2b24ad4f506e990e3b8faef9747c2f7..6b838be0965003c08eaa0290ab36c58117a61d3a 100644 --- a/org.fortiss.tooling.base.ui/trunk/META-INF/MANIFEST.MF +++ b/org.fortiss.tooling.base.ui/trunk/META-INF/MANIFEST.MF @@ -15,7 +15,8 @@ Export-Package: org.fortiss.tooling.base.ui, org.fortiss.tooling.base.ui.compose, org.fortiss.tooling.base.ui.contentprovider, org.fortiss.tooling.base.ui.databinding, - org.fortiss.tooling.base.ui.dnd, + org.fortiss.tooling.base.ui.dnd.gef, + org.fortiss.tooling.base.ui.dnd.jface, org.fortiss.tooling.base.ui.editor, org.fortiss.tooling.base.ui.editpart, org.fortiss.tooling.base.ui.editpart.anchor, diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/command/ConnectionCommand.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/command/ConnectionCommand.java index 097523ba5840bab350a184efc217502615912d67..6e4b30a5f17dd8ca9b762e89c0a8315f62ab4d61 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/command/ConnectionCommand.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/command/ConnectionCommand.java @@ -21,7 +21,7 @@ import org.eclipse.draw2d.geometry.Point; import org.eclipse.emf.ecore.EObject; import org.eclipse.gef.EditPart; import org.eclipse.gef.commands.Command; -import org.fortiss.tooling.base.ui.dnd.ConnectionDragContext; +import org.fortiss.tooling.base.ui.dnd.gef.ConnectionDragContext; import org.fortiss.tooling.base.ui.editpart.policy.ConnectionGraphicalNodeEditPolicy; import org.fortiss.tooling.kernel.service.IConnectionCompositorService; diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/compose/ConnectorConnectionCompositorBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/compose/ConnectorConnectionCompositorBase.java index 6f9f291bfa7e29e93badc83ea3df34ff76e20495..6baf83d31eea66d520059f608e738c1823ee07b9 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/compose/ConnectorConnectionCompositorBase.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/compose/ConnectorConnectionCompositorBase.java @@ -27,7 +27,7 @@ import org.fortiss.tooling.base.model.element.IConnection; import org.fortiss.tooling.base.model.element.IConnector; import org.fortiss.tooling.base.model.element.IHierarchicElement; import org.fortiss.tooling.base.model.element.IModelElementSpecification; -import org.fortiss.tooling.base.ui.dnd.ConnectionDragContext; +import org.fortiss.tooling.base.ui.dnd.gef.ConnectionDragContext; import org.fortiss.tooling.base.ui.editpart.FreeConnectorEditPartBase; import org.fortiss.tooling.kernel.extension.IConnectionCompositor; import org.fortiss.tooling.kernel.extension.data.IConnectionCompositionContext; diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/compose/HierarchicElementConnectionCompositorBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/compose/HierarchicElementConnectionCompositorBase.java index 8640db7fce6b9ac5c1175ab513662dca5877617e..3e899772c840145329441b802d4cbe20ab522bf1 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/compose/HierarchicElementConnectionCompositorBase.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/compose/HierarchicElementConnectionCompositorBase.java @@ -23,8 +23,8 @@ import org.fortiss.tooling.base.model.element.IConnection; import org.fortiss.tooling.base.model.element.IConnector; import org.fortiss.tooling.base.model.element.IHierarchicElement; import org.fortiss.tooling.base.model.element.IModelElementSpecification; -import org.fortiss.tooling.base.ui.dnd.ConnectionDragContext; -import org.fortiss.tooling.base.ui.dnd.ElementDropContext; +import org.fortiss.tooling.base.ui.dnd.gef.ConnectionDragContext; +import org.fortiss.tooling.base.ui.dnd.gef.ElementDropContext; import org.fortiss.tooling.base.ui.editpart.DiagramEditPartBase; import org.fortiss.tooling.kernel.extension.IConnectionCompositor; import org.fortiss.tooling.kernel.extension.data.IConnectionCompositionContext; diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionCompositionDropTargetListener.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionCompositionDropTargetListener.java similarity index 98% rename from org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionCompositionDropTargetListener.java rename to org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionCompositionDropTargetListener.java index 5f3ebcc20d16b5e31e196879bd6a3b3fad95d4f9..58ac7b506e8bb8957e2594d7c961572e573220b6 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionCompositionDropTargetListener.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionCompositionDropTargetListener.java @@ -15,7 +15,7 @@ $Id$ | See the License for the specific language governing permissions and | | limitations under the License. | +--------------------------------------------------------------------------*/ -package org.fortiss.tooling.base.ui.dnd; +package org.fortiss.tooling.base.ui.dnd.gef; import org.eclipse.gef.EditPartViewer; import org.eclipse.gef.Request; diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionDragContext.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionDragContext.java similarity index 98% rename from org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionDragContext.java rename to org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionDragContext.java index e1406cd7aacb1ded46b078cd5ebef71d935645c2..bf2594268fe95ccd5aac23be3e6f4dc1c5e63887 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionDragContext.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionDragContext.java @@ -15,7 +15,7 @@ $Id$ | See the License for the specific language governing permissions and | | limitations under the License. | +--------------------------------------------------------------------------*/ -package org.fortiss.tooling.base.ui.dnd; +package org.fortiss.tooling.base.ui.dnd.gef; import org.eclipse.draw2d.geometry.Point; import org.eclipse.gef.EditPart; diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionDropContext.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionDropContext.java similarity index 98% rename from org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionDropContext.java rename to org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionDropContext.java index cbb2c14777ff4318f0de2c135281d24a20b54d4e..ac58c505286a0aa28d2c78bc08f66ae6a6627288 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ConnectionDropContext.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ConnectionDropContext.java @@ -15,7 +15,7 @@ $Id$ | See the License for the specific language governing permissions and | | limitations under the License. | +--------------------------------------------------------------------------*/ -package org.fortiss.tooling.base.ui.dnd; +package org.fortiss.tooling.base.ui.dnd.gef; import org.eclipse.draw2d.geometry.Point; import org.eclipse.gef.EditPart; diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ElementCompositionDropTargetListener.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ElementCompositionDropTargetListener.java similarity index 98% rename from org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ElementCompositionDropTargetListener.java rename to org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ElementCompositionDropTargetListener.java index e91c75ed490dca2cb6d73e547e5a5c25c3b95ec3..32fc03fea876023dc0c528f17aeedcb3e2fb5e6c 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ElementCompositionDropTargetListener.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ElementCompositionDropTargetListener.java @@ -15,7 +15,7 @@ $Id$ | See the License for the specific language governing permissions and | | limitations under the License. | +--------------------------------------------------------------------------*/ -package org.fortiss.tooling.base.ui.dnd; +package org.fortiss.tooling.base.ui.dnd.gef; import org.eclipse.gef.EditPartViewer; import org.eclipse.gef.Request; diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ElementDropContext.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ElementDropContext.java similarity index 98% rename from org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ElementDropContext.java rename to org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ElementDropContext.java index 54159005cb626b891c0cabdd589ad72e716c860c..d657631f570042a6a456261268f77ef8a8adb7fc 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/ElementDropContext.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/gef/ElementDropContext.java @@ -15,7 +15,7 @@ $Id$ | See the License for the specific language governing permissions and | | limitations under the License. | +--------------------------------------------------------------------------*/ -package org.fortiss.tooling.base.ui.dnd; +package org.fortiss.tooling.base.ui.dnd.gef; import org.eclipse.draw2d.geometry.Point; import org.eclipse.gef.EditPart; diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/jface/ViewerElementCompositionDropAdapter.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/jface/ViewerElementCompositionDropAdapter.java new file mode 100644 index 0000000000000000000000000000000000000000..baa3e9b8e5eb0100e7133ea564e13f0d4394e16e --- /dev/null +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/dnd/jface/ViewerElementCompositionDropAdapter.java @@ -0,0 +1,113 @@ +/*--------------------------------------------------------------------------+ +$Id$ +| | +| Copyright 2011 ForTISS GmbH | +| | +| Licensed under the Apache License, Version 2.0 (the "License"); | +| you may not use this file except in compliance with the License. | +| You may obtain a copy of the License at | +| | +| http://www.apache.org/licenses/LICENSE-2.0 | +| | +| Unless required by applicable law or agreed to in writing, software | +| distributed under the License is distributed on an "AS IS" BASIS, | +| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | +| See the License for the specific language governing permissions and | +| limitations under the License. | ++--------------------------------------------------------------------------*/ +package org.fortiss.tooling.base.ui.dnd.jface; + +import static org.fortiss.tooling.kernel.ui.util.DragAndDropUtils.extractDroppedEObject; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.ViewerDropAdapter; +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.DropTargetEvent; +import org.eclipse.swt.dnd.Transfer; +import org.eclipse.swt.dnd.TransferData; +import org.fortiss.tooling.kernel.service.IElementCompositorService; +import org.fortiss.tooling.kernel.ui.dnd.CompositionServiceLocalTransfer; +import org.fortiss.tooling.kernel.ui.dnd.ElementCompositionDropTargetAdapter; +import org.fortiss.tooling.kernel.ui.util.DragAndDropUtils; +import org.fortiss.tooling.kernel.utils.ModelUtils; + +/** + * {@link ElementCompositionDropTargetAdapter} implementation for a JFace + * {@link TreeViewer}. + * + * @author hoelzl + * @author $Author$ + * @version $Rev$ + * @ConQAT.Rating RED Hash: + */ +public class ViewerElementCompositionDropAdapter extends ViewerDropAdapter { + + /** Remember the last target. */ + Object lastTarget = null; + + /** Constructor. */ + public ViewerElementCompositionDropAdapter(Viewer viewer) { + super(viewer); + setExpandEnabled(true); + } + + /** {@inheritDoc} */ + @Override + public boolean validateDrop(Object target, int operation, + TransferData transferType) { + if (target == null) { + target = getViewer().getInput(); + } + lastTarget = target; + + if (lastTarget instanceof EObject) { + EObject dropped = extractDroppedEObject(CompositionServiceLocalTransfer + .getInstance().getObject()); + + return IElementCompositorService.INSTANCE.canCompose( + (EObject) lastTarget, dropped, null); + } + return false; + } + + /** {@inheritDoc} */ + @Override + public boolean performDrop(Object data) { + if (lastTarget instanceof EObject) { + final EObject target = (EObject) lastTarget; + final EObject dropped = DragAndDropUtils + .extractDroppedEObject(data); + if (IElementCompositorService.INSTANCE.canCompose(target, dropped, + null)) { + ModelUtils.runAsCommand(target, new Runnable() { + @Override + public void run() { + IElementCompositorService.INSTANCE.compose(target, + dropped, null); + } + }); + return true; + } + } + return false; + } + + /** Returns the supported DND operations as defined in {@link DND}. */ + public int getSupportedDNDOperations() { + return DND.DROP_COPY; + } + + /** {@inheritDoc} */ + @Override + public void dragEnter(DropTargetEvent event) { + event.detail = DND.DROP_COPY; + super.dragEnter(event); + } + + /** Returns the preferred transfer for the DND operation. */ + public Transfer[] getPreferredTransfers() { + return DragAndDropUtils.getCompositionServiceTransfers(); + } +} diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/DiagramEditorBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/DiagramEditorBase.java index 6e5dc8eba21997a2923f14e7b1d380dc59d79a7f..a578af775b93b04337997a3ccf04b9a94df6ab96 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/DiagramEditorBase.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/DiagramEditorBase.java @@ -76,7 +76,7 @@ import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.PartInitException; import org.fortiss.tooling.base.layout.DefaultLayoutConstants; import org.fortiss.tooling.base.ui.ToolingBaseUIActivator; -import org.fortiss.tooling.base.ui.dnd.ElementCompositionDropTargetListener; +import org.fortiss.tooling.base.ui.dnd.gef.ElementCompositionDropTargetListener; import org.fortiss.tooling.base.ui.editpart.ConnectorEditPartBase; import org.fortiss.tooling.base.ui.editpart.ExtendedLayerRootEditPart; import org.fortiss.tooling.base.ui.editpart.figure.EVisualStyle; diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/TreeViewerEditorBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/TreeViewerEditorBase.java index 0ef53ab5b652082deaa7f947984908bae21ed71a..cb0e34d3e3fa27fe5d1c2e51209cd217e892f8eb 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/TreeViewerEditorBase.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/TreeViewerEditorBase.java @@ -27,19 +27,11 @@ import org.eclipse.emf.ecore.util.EContentAdapter; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.util.LocalSelectionTransfer; import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerDropAdapter; -import org.eclipse.swt.dnd.DND; -import org.eclipse.swt.dnd.DropTargetEvent; -import org.eclipse.swt.dnd.Transfer; -import org.eclipse.swt.dnd.TransferData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Menu; -import org.fortiss.tooling.kernel.service.IElementCompositorService; +import org.fortiss.tooling.base.ui.dnd.jface.ViewerElementCompositionDropAdapter; import org.fortiss.tooling.kernel.ui.extension.base.EditorBase; -import org.fortiss.tooling.kernel.ui.util.DragAndDropUtils; import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils; /** @@ -76,11 +68,10 @@ public abstract class TreeViewerEditorBase<T extends EObject> extends setupTreeViewer(treeViewer); - // FIXME (FH): use new kernel DND mechanism - treeViewer.addDropSupport( - DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK, - new Transfer[] { LocalSelectionTransfer.getTransfer() }, - new TreeDropAdapter(treeViewer)); + ViewerElementCompositionDropAdapter dndAdapter = new ViewerElementCompositionDropAdapter( + treeViewer); + treeViewer.addDropSupport(dndAdapter.getSupportedDNDOperations(), + dndAdapter.getPreferredTransfers(), dndAdapter); treeViewer.setInput(editedObject); getEditorSite().setSelectionProvider(treeViewer); @@ -135,71 +126,4 @@ public abstract class TreeViewerEditorBase<T extends EObject> extends public void setFocus() { treeViewer.getTree().setFocus(); } - - /** The drop adapter for the tree. */ - private class TreeDropAdapter extends ViewerDropAdapter { - - /** Remember the last target. */ - Object lastTarget = null; - - /** Constructor. */ - private TreeDropAdapter(Viewer viewer) { - super(viewer); - setExpandEnabled(true); - } - - /** - * {@inheritDoc} - * <p> - * Hook this method to set a "valid" details field. - */ - @Override - public void dragEnter(DropTargetEvent event) { - event.detail = DND.DROP_COPY; - // event.data = LocalSelectionTransfer.getTransfer().getSelection(); - super.dragEnter(event); - } - - /** {@inheritDoc} */ - @Override - public boolean validateDrop(Object target, int operation, - TransferData transferType) { - if (target == null) { - target = treeViewer.getInput(); - } - lastTarget = target; - - if (lastTarget instanceof EObject) { - - EObject dropped = DragAndDropUtils - .extractDroppedEObject(LocalSelectionTransfer - .getTransfer().getSelection()); - - return IElementCompositorService.INSTANCE.canCompose( - (EObject) lastTarget, dropped, null); - } - return false; - } - - /** {@inheritDoc} */ - @Override - public boolean performDrop(Object data) { - if (lastTarget instanceof EObject) { - final EObject dropped = DragAndDropUtils - .extractDroppedEObject(data); - if (IElementCompositorService.INSTANCE.canCompose( - (EObject) lastTarget, dropped, null)) { - TreeViewerEditorBase.this.executeCommand(new Runnable() { - @Override - public void run() { - IElementCompositorService.INSTANCE.compose( - (EObject) lastTarget, dropped, null); - } - }); - return true; - } - } - return false; - } - } } diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/policy/ConnectionGraphicalNodeEditPolicy.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/policy/ConnectionGraphicalNodeEditPolicy.java index 82bf150345f280b74cbdf074223bce00fa534669..72b36b90cefdf3f9f812e6d81e9fdef681b0832b 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/policy/ConnectionGraphicalNodeEditPolicy.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/policy/ConnectionGraphicalNodeEditPolicy.java @@ -25,7 +25,7 @@ import org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy; import org.eclipse.gef.requests.CreateConnectionRequest; import org.eclipse.gef.requests.ReconnectRequest; import org.fortiss.tooling.base.ui.command.ConnectionCommand; -import org.fortiss.tooling.base.ui.dnd.ConnectionDragContext; +import org.fortiss.tooling.base.ui.dnd.gef.ConnectionDragContext; /** * This is the edit policy to be installed on edit parts that allow creation of diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/policy/RelayCreateCommandEditPolicyBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/policy/RelayCreateCommandEditPolicyBase.java index 4ac2945123404005fbdfa0feb9ef6bad145cdf1f..d7b3102e818e9359da1add901987018abad90054 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/policy/RelayCreateCommandEditPolicyBase.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/policy/RelayCreateCommandEditPolicyBase.java @@ -25,8 +25,8 @@ import org.eclipse.gef.Request; import org.eclipse.gef.commands.Command; import org.eclipse.gef.editpolicies.LayoutEditPolicy; import org.eclipse.gef.requests.CreateRequest; -import org.fortiss.tooling.base.ui.dnd.ConnectionDropContext; -import org.fortiss.tooling.base.ui.dnd.ElementDropContext; +import org.fortiss.tooling.base.ui.dnd.gef.ConnectionDropContext; +import org.fortiss.tooling.base.ui.dnd.gef.ElementDropContext; import org.fortiss.tooling.base.ui.editpart.request.CreateConnectionCompositionRequest; import org.fortiss.tooling.base.ui.editpart.request.CreateElementCompositionRequest; import org.fortiss.tooling.kernel.extension.data.IConnectionCompositionContext; diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/utils/RectangleLayoutUtils.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/utils/RectangleLayoutUtils.java index 20df2784e908befdf86a6f17d8098d002fe80a38..219da08059552ffa70c8394fcc959abb6d7ccdbb 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/utils/RectangleLayoutUtils.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/utils/RectangleLayoutUtils.java @@ -26,7 +26,7 @@ import org.fortiss.tooling.base.layout.DefaultLayoutConstants; import org.fortiss.tooling.base.model.layout.EOrientation; import org.fortiss.tooling.base.model.layout.ILayoutedModelElement; import org.fortiss.tooling.base.model.layout.OffsetOrientation; -import org.fortiss.tooling.base.ui.dnd.ElementDropContext; +import org.fortiss.tooling.base.ui.dnd.gef.ElementDropContext; import org.fortiss.tooling.base.utils.LayoutModelElementFactory; /** diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionDropTargetAdapter.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionDropTargetAdapter.java index dad97433ee151370a0f792147a478b9b58dad025..49bf542d9ebbf58f9af2a380af17e8c7eff6e7fa 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionDropTargetAdapter.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/dnd/ElementCompositionDropTargetAdapter.java @@ -37,8 +37,6 @@ import org.fortiss.tooling.kernel.service.IElementCompositorService; public abstract class ElementCompositionDropTargetAdapter extends DropTargetAdapter { - // TODO @review CD: Again: This class sure is useful yet has never been - // implemented. Has it ever been tested? /** {@inheritDoc} */ @Override public void drop(DropTargetEvent event) { @@ -57,13 +55,12 @@ public abstract class ElementCompositionDropTargetAdapter extends event.detail = DND.DROP_NONE; return; } - // TODO @review CD: abort when canCompose succeeds? if (IElementCompositorService.INSTANCE.canCompose(target, dragSource.getDesignatedElement(), null)) { - event.detail = DND.DROP_NONE; + event.detail = DND.DROP_COPY; return; } - event.detail = DND.DROP_COPY; + event.detail = DND.DROP_NONE; } /** Returns the current target element. */ diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/DragAndDropUtils.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/DragAndDropUtils.java index d092835a655507aaad4394005ea73528619e8ffd..6f57012c86e95fb9cc5c3594446c1c21e47b2899 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/DragAndDropUtils.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/DragAndDropUtils.java @@ -19,7 +19,9 @@ package org.fortiss.tooling.kernel.ui.util; import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.swt.dnd.Transfer; import org.fortiss.tooling.kernel.extension.data.Prototype; +import org.fortiss.tooling.kernel.ui.dnd.CompositionServiceLocalTransfer; import org.fortiss.tooling.kernel.ui.dnd.ElementCompositionSource; /** @@ -52,4 +54,18 @@ public final class DragAndDropUtils { } return null; } + + /** Returns the transfered element composition source. */ + public static ElementCompositionSource getElementCompositionSourceFromTransfer() { + return (ElementCompositionSource) CompositionServiceLocalTransfer + .getInstance().getObject(); + } + + /** + * Returns the preferred transfer for the DND operation via composition + * service. + */ + public static Transfer[] getCompositionServiceTransfers() { + return new Transfer[] { CompositionServiceLocalTransfer.getInstance() }; + } }