fixes #1089
authorn.hoffmann <n.hoffmann@localhost>
Wed, 23 Sep 2009 11:01:58 +0000 (11:01 +0000)
committern.hoffmann <n.hoffmann@localhost>
Wed, 23 Sep 2009 11:01:58 +0000 (11:01 +0000)
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonDropAdapterAssistant.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/operations/MoveTaxonOperation.java

index e12c1eab8ab9b79317f478028f03e0abc5cde34f..3fe7c615f293ae7585fc6994c66424f7167f4c81 100644 (file)
@@ -26,9 +26,8 @@ import org.eclipse.ui.navigator.CommonDropAdapterAssistant;
 \r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.taxon.ITreeNode;\r
+import eu.etaxonomy.cdm.model.taxon.IllegalAncestryException;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
-import eu.etaxonomy.taxeditor.model.NameHelper;\r
 import eu.etaxonomy.taxeditor.navigation.NavigationUtil;\r
 import eu.etaxonomy.taxeditor.operations.IPostOperationEnabled;\r
 import eu.etaxonomy.taxeditor.operations.MoveTaxonOperation;\r
@@ -95,15 +94,8 @@ public class TaxonDropAdapterAssistant extends CommonDropAdapterAssistant implem
                \r
                        TaxonNode targetTaxonNode = (TaxonNode) targetTreeNode;\r
                        \r
-                       // TODO what should happen here?\r
-                       // Make sure parentTaxon is not a child\r
+                       // Make sure parentTaxon is not the drop target\r
                        if (!childTaxonNode.isTopmostNode() && childTaxonNode.getParent().equals(targetTaxonNode)){\r
-                               \r
-                               MessageDialog.openError(NavigationUtil.getShell(), "Can't move taxon.",\r
-                                               "'" + NameHelper.getDisplayName(childTaxonNode.getTaxon()) + "' sits above " +\r
-                                               "'" + NameHelper.getDisplayName(targetTaxonNode.getTaxon()) + "' " +\r
-                                               "in the taxonomic hierarchy.");\r
-                               \r
                                return Status.CANCEL_STATUS;\r
                        }\r
                        \r
@@ -127,9 +119,11 @@ public class TaxonDropAdapterAssistant extends CommonDropAdapterAssistant implem
                }\r
                \r
 \r
+\r
                IUndoableOperation operation = new MoveTaxonOperation\r
                                ("Move Taxon", workspaceUndoContext, childTaxonNode, targetTreeNode, this);\r
                NavigationUtil.executeOperation(operation);     \r
+\r
                \r
                \r
                logger.info("Moved taxon " + childTaxonNode + " to new parent " + targetTreeNode);\r
index 4fa470d405cd9d4146855b89b23ee21fa009be6e..9dbbfe2e65d36c8cc835314fb83c66c31810e87b 100644 (file)
@@ -21,8 +21,10 @@ import org.eclipse.core.runtime.Status;
 \r
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
 import eu.etaxonomy.cdm.model.taxon.ITreeNode;\r
+import eu.etaxonomy.cdm.model.taxon.IllegalAncestryException;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
+import eu.etaxonomy.taxeditor.store.StoreUtil;\r
 \r
 /**\r
  * Change the taxonomic parent of a given taxon.\r
@@ -103,10 +105,14 @@ public class MoveTaxonOperation extends AbstractPostOperation {
                // find the new parent node\r
                ITreeNode newParentTreeNode = CdmStore.getTaxonTreeService().getTreeNodeByUuid(newParentTreeNodeUuid);\r
                // add node to new parent\r
-               TaxonNode newChild = newParentTreeNode.addChildNode(taxonNode, newParentTreeNode.getReference(), newParentTreeNode.getMicroReference(), taxonNode.getSynonymToBeUsed());\r
-               \r
-               // commit the conversation\r
-               conversation.commit(true);              \r
-               return newChild;\r
+               try{\r
+                       TaxonNode newChild = newParentTreeNode.addChildNode(taxonNode, newParentTreeNode.getReference(), newParentTreeNode.getMicroReference(), taxonNode.getSynonymToBeUsed());\r
+                       // commit the conversation\r
+                       conversation.commit(true);              \r
+                       return newChild;\r
+               }catch(IllegalAncestryException e){\r
+                       StoreUtil.warningDialog("Illegal ancestry", e.getMessage());\r
+               }\r
+               return null;\r
        }\r
 }\r