smaller changes for drag & dop with natural order in taxonnavigator
[taxeditor.git] / eu.etaxonomy.taxeditor.navigation / src / main / java / eu / etaxonomy / taxeditor / navigation / navigator / TreeNodeDropAdapterAssistant.java
index 0f16d0e8d075650a4028e95aba411948672f66ee..33c0be7541f96d1dbd65474211ee049abc2158f4 100644 (file)
@@ -37,6 +37,7 @@ import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
 import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
+import eu.etaxonomy.taxeditor.navigation.navigator.TreeNodeDropAdapter.MovingType;
 import eu.etaxonomy.taxeditor.navigation.navigator.operation.MoveTaxonOperation;
 import eu.etaxonomy.taxeditor.navigation.navigator.operation.RemotingMoveTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
@@ -198,19 +199,19 @@ public class TreeNodeDropAdapterAssistant extends CommonDropAdapterAssistant imp
                        }
 
                        if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                           AbstractOperation operation = new RemotingMoveTaxonOperation(taxonNavigator, false, uuids, (TaxonNode)targetITaxonTreeNode, true);
+                           AbstractOperation operation = new RemotingMoveTaxonOperation(taxonNavigator, false, uuids, (TaxonNode)targetITaxonTreeNode, MovingType.CHILD);
                            NavigationUtil.executeOperation(operation, null);
                        } else {
                            AbstractPostOperation operation = new MoveTaxonOperation
-                                   ("Move Taxon", workspaceUndoContext, uuids, targetITaxonTreeNode, this, taxonNavigator, true);
+                                   ("Move Taxon", workspaceUndoContext, uuids, targetITaxonTreeNode, this, taxonNavigator, MovingType.CHILD);
                            NavigationUtil.executeOperation(operation);
             }
 
                        logger.info("Moved taxa to new parent " + targetITaxonTreeNode);
                        return Status.OK_STATUS;
                }else{
-                       String[] buttonLables = {"Parent", "Predecessor", "Cancel"};
-                       MessageDialog dialog = new MessageDialog(null, "Target node", null, "Do you want to use the target node as parent or do you want to move the taxon below the target.", MessageDialog.QUESTION_WITH_CANCEL, buttonLables, 0);
+                       String[] buttonLables = {"Child", "Behind", "Cancel"};
+                       MessageDialog dialog = new MessageDialog(null, "Target node", null, "Do you want to move the taxon as child, before or behind the target.", MessageDialog.QUESTION_WITH_CANCEL, buttonLables, 0);
                        dialog.open();
                        int returnCode = dialog.getReturnCode();
                        if (returnCode == 0){
@@ -221,11 +222,11 @@ public class TreeNodeDropAdapterAssistant extends CommonDropAdapterAssistant imp
                                }
 
                                if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                                   AbstractOperation operation = new RemotingMoveTaxonOperation(taxonNavigator, false, uuids, (TaxonNode)targetITaxonTreeNode, true);
+                                   AbstractOperation operation = new RemotingMoveTaxonOperation(taxonNavigator, false, uuids, (TaxonNode)targetITaxonTreeNode, MovingType.CHILD);
                                    NavigationUtil.executeOperation(operation, null);
                                } else {
                                    AbstractPostOperation operation = new MoveTaxonOperation
-                                           ("Move Taxon", workspaceUndoContext, uuids, targetITaxonTreeNode, this, taxonNavigator, true);
+                                           ("Move Taxon", workspaceUndoContext, uuids, targetITaxonTreeNode, this, taxonNavigator, MovingType.CHILD);
                                    NavigationUtil.executeOperation(operation);
                                }
 
@@ -240,16 +241,34 @@ public class TreeNodeDropAdapterAssistant extends CommonDropAdapterAssistant imp
                                TaxonNode targetNode = (TaxonNode) targetITaxonTreeNode;
 
                                if(CdmStore.getCurrentSessionManager().isRemoting()) {
-                                   AbstractOperation operation = new RemotingMoveTaxonOperation(taxonNavigator, false, uuids, targetNode, false);
+                                   AbstractOperation operation = new RemotingMoveTaxonOperation(taxonNavigator, false, uuids, targetNode, MovingType.BEHIND);
                                    NavigationUtil.executeOperation(operation, null);
                                } else {
                                    AbstractPostOperation operation = new MoveTaxonOperation
-                                           ("Move Taxon", workspaceUndoContext, uuids, targetNode, this, taxonNavigator, false);
+                                           ("Move Taxon", workspaceUndoContext, uuids, targetNode, this, taxonNavigator, MovingType.BEHIND);
                                    NavigationUtil.executeOperation(operation);
                                }
                                logger.info("Moved taxa to new parent " + targetITaxonTreeNode);
                                return Status.OK_STATUS;
-                       } else{
+//                     }else if (returnCode == 2){
+//                IUndoContext workspaceUndoContext = NavigationUtil.getWorkbenchUndoContext();
+//                if (workspaceUndoContext == null) {
+//                    logger.error("Workspace undo context is null. DND operation cancelled");
+//                    return Status.CANCEL_STATUS;
+//                }
+//                TaxonNode targetNode = (TaxonNode) targetITaxonTreeNode;
+//
+//                if(CdmStore.getCurrentSessionManager().isRemoting()) {
+//                    AbstractOperation operation = new RemotingMoveTaxonOperation(taxonNavigator, false, uuids, targetNode, MovingType.PREVIOUS);
+//                    NavigationUtil.executeOperation(operation, null);
+//                } else {
+//                    AbstractPostOperation operation = new MoveTaxonOperation
+//                            ("Move Taxon", workspaceUndoContext, uuids, targetNode, this, taxonNavigator, MovingType.PREVIOUS);
+//                    NavigationUtil.executeOperation(operation);
+//                }
+//                logger.info("Moved taxa to new parent " + targetITaxonTreeNode);
+//                return Status.OK_STATUS;
+            } else{
                                return Status.CANCEL_STATUS;
                        }