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(); }