ref #6694 Fix session handling when moving feature nodes
authorPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 20 Jun 2017 14:43:49 +0000 (16:43 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 20 Jun 2017 14:43:49 +0000 (16:43 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureNodeDragListener.java
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/FeatureTreeEditor.java

index 10ddd7fc8114cfcfed9d3991a6afe5f503459901..e02342f84ef6a56f9d522872dbfa5e48b5d3c515 100644 (file)
@@ -10,7 +10,6 @@ package eu.etaxonomy.taxeditor.featuretree.e4;
 
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.dnd.DND;
 import org.eclipse.swt.dnd.DragSourceAdapter;
 import org.eclipse.swt.dnd.DragSourceEvent;
 
@@ -25,37 +24,17 @@ class FeatureNodeDragListener extends DragSourceAdapter {
                this.viewer = viewer;
        }
 
-       /**
-        * Method declared on DragSourceListener
-        */
-       @Override
-       public void dragFinished(DragSourceEvent event) {
-               if (!event.doit) {
-            return;
+    /**
+     * Method declared on DragSourceListener
+     */
+    @Override
+    public void dragSetData(DragSourceEvent event) {
+        IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+        FeatureNode[] featureNodes = (FeatureNode[]) selection.toList().toArray(new FeatureNode[selection.size()]);
+        if (FeatureNodeTransfer.getInstance().isSupportedType(event.dataType)) {
+            event.data = featureNodes;
         }
-               // if the featureNode was moved, remove it from the source viewer
-               if (event.detail == DND.DROP_MOVE) {
-                       IStructuredSelection selection = (IStructuredSelection) viewer
-                                       .getSelection();
-                       viewer.remove(selection);
-                       viewer.refresh();
-               }
-       }
-
-       /**
-        * Method declared on DragSourceListener
-        */
-       @Override
-       public void dragSetData(DragSourceEvent event) {
-               IStructuredSelection selection = (IStructuredSelection) viewer
-                               .getSelection();
-               FeatureNode[] featureNodes = (FeatureNode[]) selection.toList()
-                               .toArray(new FeatureNode[selection.size()]);
-               if (FeatureNodeTransfer.getInstance().isSupportedType(
-                               event.dataType)) {
-                       event.data = featureNodes;
-               }
-       }
+    }
 
        /**
         * Method declared on DragSourceListener
index 1c6e8da4e98b9855bf228a2b2cff68ae643df296..7d8607040faf21119dcf19fd3f38d42ebc59c16f 100644 (file)
@@ -13,16 +13,14 @@ import org.eclipse.jface.viewers.Viewer;
 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.FeatureNode;
 import eu.etaxonomy.cdm.model.description.FeatureTree;
 import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer;
-import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
 class FeatureNodeDropAdapter extends ViewerDropAdapter {
 
-       /**
-     *
-     */
     private final FeatureTreeEditor featureTreeEditor;
 
     protected FeatureNodeDropAdapter(FeatureTreeEditor featureTreeEditor, Viewer viewer) {
@@ -60,33 +58,23 @@ class FeatureNodeDropAdapter extends ViewerDropAdapter {
 
                // cannot drop a feature node onto itself
                for (Object droppedObject : droppedObjects) {
-                       if (droppedObject == null) {
-                               MessagingUtils.warningDialog(
-                                                               "Operation not supported yet",
-                                                               this,
-                                                               "We are currently unable to change the order of freshly created "
-                                                                               + "feature trees nodes. Please close and reopen the dialog to change the order of features.");
-                               return false;
-                       }
                        if (droppedObject.equals(target)) {
                                return false;
                        }
                }
                for (Object droppedObject : droppedObjects) {
                        FeatureNode droppedNode = (FeatureNode) droppedObject;
-                       target.addChild(droppedNode, position);
-                       viewer.add(target, droppedNode);
-                       viewer.reveal(droppedNode);
+                       CdmStore.getService(IFeatureNodeService.class).moveFeatureNode(droppedNode.getUuid(), target.getUuid(), position);
+                       viewer.refresh();
+//                     viewer.reveal(droppedNode);
                }
         this.featureTreeEditor.setDirty(true);
                return true;
        }
 
-       @Override
-       public boolean validateDrop(Object target, int operation,
-                       TransferData transferData) {
-               return FeatureNodeTransfer.getInstance().isSupportedType(
-                               transferData);
-       }
+    @Override
+    public boolean validateDrop(Object target, int operation, TransferData transferData) {
+        return FeatureNodeTransfer.getInstance().isSupportedType(transferData);
+    }
 
 }
\ No newline at end of file
index 331d5c72cdad7d95c26b02c6e0ba6fef9aaba8c3..d74a394fddbefe2cbef2233b9f4fd5e6ce420763 100644 (file)
@@ -89,17 +89,23 @@ public class FeatureTreeEditor implements
                 }
             }
         }, new AddButtonListener(), new RemoveSelectionListener());
+        composite.getText_title().setEnabled(false);
        }
 
        public void setDirty(boolean isDirty){
            this.dirty.setDirty(isDirty);
        }
 
+       public boolean isDirty(){
+           return dirty.isDirty();
+       }
+
     public void setSelectedTree(FeatureTree featureTree) {
                this.featureTree = HibernateProxyHelper.deproxy(featureTree, FeatureTree.class);
                this.featureTree.setRoot(HibernateProxyHelper.deproxy(featureTree.getRoot(), FeatureNode.class));
                composite.getViewer().setInput(featureTree);
 
+               composite.getText_title().setEnabled(true);
                composite.getText_title().removeModifyListener(this);
                composite.getText_title().setText(featureTree.getTitleCache());
                composite.getText_title().addModifyListener(this);
@@ -156,9 +162,8 @@ public class FeatureTreeEditor implements
                                                .getAdditionalFeatures();
                                for (Feature feature : additionalFeatures) {
                                        FeatureNode child = FeatureNode.NewInstance(feature);
-                                       CdmStore.getService(IFeatureNodeService.class).merge(child, true);
-
                                        parent.addChild(child);
+                                       CdmStore.getService(IFeatureNodeService.class).save(child);
                                }
                                setDirty(true);
                                composite.getViewer().refresh();