From b43b1993534142ba9c92dbd5d0c090c91e7bf10e Mon Sep 17 00:00:00 2001 From: Patrick Plitzner Date: Tue, 27 Oct 2015 15:35:25 +0100 Subject: [PATCH] Allow null as parent when moving derivatives --- .../operation/MoveDerivateOperation.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) 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(); } -- 2.30.2