ref #6805 Add drag and drop from Feature Editor to FeatureTreeEditor
authorPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 12 Jul 2017 16:12:28 +0000 (18:12 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 12 Jul 2017 16:12:28 +0000 (18:12 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureNodeDropAdapter.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureTreeEditorComposite.java

index 65f80312bb50fa7cbebb9f8f858341f247f97507..b6a5f82ef97f130662c2bea27dde1449a5e6465e 100644 (file)
@@ -15,8 +15,10 @@ import org.eclipse.jface.viewers.ViewerDropAdapter;
 import org.eclipse.swt.dnd.TransferData;
 
 import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
+import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.FeatureNode;
 import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.taxeditor.editor.definedterm.TermTransfer;
 import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
@@ -64,10 +66,17 @@ public class FeatureNodeDropAdapter extends ViewerDropAdapter {
                        }
                }
                for (Object droppedObject : droppedObjects) {
-                       FeatureNode droppedNode = (FeatureNode) droppedObject;
-                       CdmStore.getService(IFeatureNodeService.class).moveFeatureNode(droppedNode.getUuid(), target.getUuid(), position);
-                       viewer.refresh();
-                       viewer.reveal(droppedNode);
+                   if(droppedObject instanceof FeatureNode){
+                       FeatureNode droppedNode = (FeatureNode) droppedObject;
+                       CdmStore.getService(IFeatureNodeService.class).moveFeatureNode(droppedNode.getUuid(), target.getUuid(), position);
+                       viewer.reveal(droppedNode);
+                   }
+                   else if(droppedObject instanceof Feature){
+                       Feature droppedFeature = (Feature) droppedObject;
+                       CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(target.getUuid(), droppedFeature.getUuid());
+
+                   }
+                   viewer.refresh();
                }
         this.dirtyable.setDirty(true);
                return true;
@@ -75,7 +84,10 @@ public class FeatureNodeDropAdapter extends ViewerDropAdapter {
 
     @Override
     public boolean validateDrop(Object target, int operation, TransferData transferData) {
-        return FeatureNodeTransfer.getInstance().isSupportedType(transferData);
+        boolean isSupported = FeatureNodeTransfer.getInstance().isSupportedType(transferData);
+        isSupported |= TermTransfer.getInstance().isSupportedType(transferData);
+        isSupported &= getViewer().getInput()!=null;
+        return isSupported;
     }
 
 }
\ No newline at end of file
index 867790dcc777c5a5f94a3efd54b0581895b21065..4567543d19e7ee5caae28607e84b056685c9bdb0 100644 (file)
@@ -26,6 +26,7 @@ import org.eclipse.swt.widgets.Text;
 import org.eclipse.swt.widgets.Tree;
 
 import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.taxeditor.editor.definedterm.TermTransfer;
 import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer;
 import eu.etaxonomy.taxeditor.featuretree.FeatureTreeContentProvider;
 import eu.etaxonomy.taxeditor.featuretree.FeatureTreeLabelProvider;
@@ -114,7 +115,7 @@ public class FeatureTreeEditorComposite extends Composite{
 
         int ops = DND.DROP_COPY | DND.DROP_MOVE;
         Transfer[] transfers = new Transfer[] { FeatureNodeTransfer
-                .getInstance() };
+                .getInstance(), TermTransfer.getInstance() };
         if(dragSourceListener!=null){
             viewer.addDragSupport(ops, transfers, dragSourceListener);
         }