From: Patrick Plitzner
Date: Tue, 27 Oct 2015 14:35:25 +0000 (+0100)
Subject: Allow null as parent when moving derivatives
X-Git-Tag: 3.12.0^2~77^2~1
X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/b43b1993534142ba9c92dbd5d0c090c91e7bf10e
Allow null as parent when moving derivatives
---
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/MoveDerivateOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/MoveDerivateOperation.java
index 93107ebfe..b1426ddb6 100644
--- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/MoveDerivateOperation.java
+++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/operation/MoveDerivateOperation.java
@@ -9,6 +9,8 @@
*/
package eu.etaxonomy.taxeditor.editor.view.derivate.operation;
+import java.util.UUID;
+
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.operations.IUndoContext;
import org.eclipse.core.runtime.IAdaptable;
@@ -71,6 +73,10 @@ public class MoveDerivateOperation extends AbstractPostOperation {
fromNode = draggedNode.getParent();
if(moveTreeNode(draggedNode, fromNode, targetNode)){
+ //special case if derivative with no parent was moved
+ if(fromNode==null && draggedNode!=null && draggedNode.getValue()!=null){
+ derivateView.remove(draggedNode.getValue());
+ }
//update DerivateView
derivateView.getConversationHolder().commit();
LocalSelectionTransfer.getTransfer().setSelection(null);
@@ -96,10 +102,12 @@ public class MoveDerivateOperation extends AbstractPostOperation {
DerivedUnit draggedSpecimen = (DerivedUnit) draggedNodeValue;
SpecimenOrObservationBase> targetSpecimen = (SpecimenOrObservationBase>) targetNodeValue;
//check if type is a sub derivate type
- if(fromParentSpecimen instanceof SpecimenOrObservationBase>
- && fromNode!=null
- && !fromNode.equals(targetNode)){//don't drag on direct parent node)
- return occurrenceService.moveDerivate(((SpecimenOrObservationBase>)fromParentSpecimen).getUuid(),
+ if(fromNode==null || !fromNode.equals(targetNode)){//don't drag on direct parent node)
+ UUID fromUuid = null;
+ if(fromParentSpecimen!=null){
+ fromUuid = ((SpecimenOrObservationBase>)fromParentSpecimen).getUuid();
+ }
+ return occurrenceService.moveDerivate(fromUuid,
targetSpecimen.getUuid(),
draggedSpecimen.getUuid()).isOk();
}