drag and drop between editors
diff --git a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/ui/BasicSearchResultCustomUiCreator.java b/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/ui/BasicSearchResultCustomUiCreator.java
index 647be20..1cbb7eb 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/ui/BasicSearchResultCustomUiCreator.java
+++ b/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/ui/BasicSearchResultCustomUiCreator.java
@@ -44,8 +44,8 @@
 import org.eclipse.wst.sse.sieditor.search.i18n.Messages;
 import org.eclipse.wst.sse.sieditor.search.ui.actions.CopyAction;
 import org.eclipse.wst.sse.sieditor.search.ui.actions.OpenInEditorAction;
-import org.eclipse.wst.sse.sieditor.search.ui.tree.TreeNodeDragListener;
 import org.eclipse.wst.sse.sieditor.ui.v2.dt.dnd.SiEditorTransfer;
+import org.eclipse.wst.sse.sieditor.ui.v2.dt.dnd.TreeViewerDragAdapter;
 
 public class BasicSearchResultCustomUiCreator implements ISearchResultCustomUiCreator {
 
@@ -97,7 +97,7 @@
     private void addDragSupportToTreeViewer() {
         int ops = DND.DROP_COPY | DND.DROP_MOVE;
         Transfer[] transfers = new Transfer[] { SiEditorTransfer.getInstance() };
-        treeViewer.addDragSupport(ops, transfers, new TreeNodeDragListener(treeViewer));
+        treeViewer.addDragSupport(ops, transfers, new TreeViewerDragAdapter(treeViewer));
     }
 
     private void createMenuManager(final TreeViewer treeViewer) {
diff --git a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/ui/tree/NamespaceNode.java b/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/ui/tree/NamespaceNode.java
index b15af3f..2407de5 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/ui/tree/NamespaceNode.java
+++ b/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/ui/tree/NamespaceNode.java
@@ -15,9 +15,10 @@
 import org.eclipse.wst.sse.sieditor.model.api.INamespacedObject;
 import org.eclipse.wst.sse.sieditor.ui.Activator;
 import org.eclipse.wst.sse.sieditor.ui.v2.UIConstants;
+import org.eclipse.wst.sse.sieditor.ui.v2.dt.nodes.IDataTypesTreeNode;
 import org.eclipse.wst.sse.sieditor.ui.v2.nodes.ITreeNode;
 
-public class NamespaceNode extends AbstractTreeNode {
+public class NamespaceNode extends AbstractTreeNode implements IDataTypesTreeNode {
 
     private INamespacedObject namespacedObject;
 
diff --git a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/ui/tree/TreeNodeDragListener.java b/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/ui/tree/TreeNodeDragListener.java
deleted file mode 100644
index 9266a2e..0000000
--- a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/ui/tree/TreeNodeDragListener.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.eclipse.wst.sse.sieditor.search.ui.tree;

-

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.viewers.IStructuredSelection;

-import org.eclipse.jface.viewers.StructuredViewer;

-import org.eclipse.swt.dnd.DragSourceAdapter;

-import org.eclipse.swt.dnd.DragSourceEvent;

-import org.eclipse.wst.sse.sieditor.model.api.IModelObject;

-import org.eclipse.wst.sse.sieditor.ui.v2.dt.clipboard.ClipboardService;

-import org.eclipse.wst.sse.sieditor.ui.v2.dt.dnd.SiEditorTransfer;

-import org.eclipse.wst.sse.sieditor.ui.v2.nodes.ITreeNode;

-

-/**

- * Supports dragging gadgets from a structured viewer.

- */

-public class TreeNodeDragListener extends DragSourceAdapter {

-    private StructuredViewer viewer;

-

-    public TreeNodeDragListener(StructuredViewer viewer) {

-        this.viewer = viewer;

-    }

-

-    /**

-     * Method declared on DragSourceListener

-     */

-    public void dragSetData(DragSourceEvent event) {

-        if (!SiEditorTransfer.getInstance().isSupportedType(event.dataType)) {

-            return;

-        }

-        IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();

-        IModelObject modelObject = ((ITreeNode) selection.getFirstElement()).getModelObject();

-        event.data = modelObject;

-    }

-

-    /**

-     * Method declared on DragSourceListener

-     */

-    public void dragStart(DragSourceEvent event) {

-        ISelection selection = viewer.getSelection();

-        if (selection instanceof IStructuredSelection) {

-            IStructuredSelection structuredSelection = (IStructuredSelection) selection;

-            if (structuredSelection.size() != 1) {

-                event.doit = false;

-                return;

-            }

-            event.doit = ClipboardService.isCopyEnabled(structuredSelection.getFirstElement());

-        } else {

-            event.doit = !selection.isEmpty();

-        }

-    }

-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/v2/AbstractMasterDetailsBlock.java b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/v2/AbstractMasterDetailsBlock.java
index 91bc6f5..b5f0154 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/v2/AbstractMasterDetailsBlock.java
+++ b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/v2/AbstractMasterDetailsBlock.java
@@ -47,6 +47,7 @@
 import org.eclipse.wst.sse.sieditor.model.api.IModelChangeEvent;
 import org.eclipse.wst.sse.sieditor.ui.Activator;
 import org.eclipse.wst.sse.sieditor.ui.v2.dt.dnd.SiEditorTransfer;
+import org.eclipse.wst.sse.sieditor.ui.v2.dt.dnd.TreeViewerDragAdapter;
 import org.eclipse.wst.sse.sieditor.ui.v2.dt.dnd.TreeViewerDropAdapter;
 
 public abstract class AbstractMasterDetailsBlock extends MasterDetailsBlock implements IChangeListener {
@@ -129,6 +130,7 @@
         final FilteredTree filteredTree = new FilteredTree(masterClientComposite, SWT.BORDER | SWT.MULTI, new PatternFilter(),
                 true);
         treeViewer = filteredTree.getViewer();
+        addDragAdapterToTreeViewer();
         addDropAdapterToTreeViewer();
         final Composite buttonsComposite = toolkit.createComposite(masterClientComposite);
         createButtons(toolkit, buttonsComposite);
@@ -167,6 +169,12 @@
         filteredTree.setLayoutData(gridData);
     }
 
+    private void addDragAdapterToTreeViewer() {
+        int ops = DND.DROP_COPY | DND.DROP_MOVE;
+        Transfer[] transfers = new Transfer[] { SiEditorTransfer.getInstance() };
+        treeViewer.addDragSupport(ops, transfers, new TreeViewerDragAdapter(treeViewer));
+    }
+
     private void addDropAdapterToTreeViewer() {
         int ops = DND.DROP_COPY | DND.DROP_MOVE;
         Transfer[] transfers = new Transfer[] { SiEditorTransfer.getInstance() };
diff --git a/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/v2/dt/DataTypesFormPageController.java b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/v2/dt/DataTypesFormPageController.java
index e40732f..8da63b8 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/v2/dt/DataTypesFormPageController.java
+++ b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/v2/dt/DataTypesFormPageController.java
@@ -1515,6 +1515,10 @@
             targetSchema = (ISchema) namespaceNode.getModelObject();
         }
 
+        if (typeToBeCopied.getParent() == targetSchema) {
+            return true;
+        }
+
         copyTypeAndSelectItOnTree(targetSchema, typeToBeCopied);
 
         return true;