From 4dd52e033e150dd57d26f2d108663e7c86c1bd86 Mon Sep 17 00:00:00 2001 From: Katja Luther Date: Thu, 12 Mar 2015 11:50:20 +0000 Subject: [PATCH] --- .../navigator/handler/MoveTaxonHandler.java | 63 ++++++++++++------- 1 file changed, 42 insertions(+), 21 deletions(-) diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveTaxonHandler.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveTaxonHandler.java index 02f6a6659..ba681d70c 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveTaxonHandler.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveTaxonHandler.java @@ -19,17 +19,29 @@ import java.util.UUID; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.expressions.EvaluationContext; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.TreeSelection; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorReference; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; import org.eclipse.ui.handlers.HandlerUtil; +import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration; +import eu.etaxonomy.cdm.api.service.ITaxonNodeService; +import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.model.common.ITreeNode; +import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode; import eu.etaxonomy.cdm.model.taxon.TaxonNode; +import eu.etaxonomy.taxeditor.editor.TaxonEditorInput; import eu.etaxonomy.taxeditor.navigation.NavigationUtil; import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigator; import eu.etaxonomy.taxeditor.navigation.navigator.operation.MoveTaxonOperation; import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; +import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog; /** @@ -42,49 +54,56 @@ import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog; public class MoveTaxonHandler extends AbstractHandler implements IPostOperationEnabled { private TaxonNode parentTaxonNode; - + protected IWorkbenchPage activePage; /* (non-Javadoc) * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent) */ /** {@inheritDoc} */ public Object execute(ExecutionEvent event) throws ExecutionException { - TaxonNavigator taxonNavigator = NavigationUtil.showNavigator(); + activePage = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage(); + TaxonNavigator taxonNavigator = (TaxonNavigator)NavigationUtil.showView(TaxonNavigator.ID); TreeSelection selection = (TreeSelection) HandlerUtil.getCurrentSelection(event); Iterator selectionIterator = selection.iterator(); - Set taxonNodes = new HashSet(); + TaxonNode taxonNode = null; + UUID taxonNodeUUID = null; // do not show the current selection List excludeTaxa = new ArrayList(); - - while (selectionIterator.hasNext()){ + if (selection.size() == 1){ Object object = selectionIterator.next(); if(object instanceof TaxonNode){ - TaxonNode taxonNode = (TaxonNode) object; - taxonNodes.add(taxonNode); + taxonNode = HibernateProxyHelper.deproxy(object,TaxonNode.class); + taxonNodeUUID = taxonNode.getUuid(); excludeTaxa.add(taxonNode.getTaxon().getUuid()); } + } else{ + if( MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Moving taxon", "The operation move accepted taxon to other parent is available only for a single taxon.")){ + return null; + } } -// TaxonNode taxonNode = (TaxonNode) selection.getFirstElement(); - parentTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), taxonNavigator.getConversationHolder(), "Choose new parent", excludeTaxa, null, null); +// TaxonNode taxonNode = (TaxonNode) selection.getFirstElement(); + if (taxonNode != null){ + parentTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), taxonNavigator.getConversationHolder(), "Choose new parent", excludeTaxa, null, null); + + if(parentTaxonNode != null){ + if(NavigationUtil.isDirty(parentTaxonNode)){ + MessageDialog.openWarning(HandlerUtil.getActiveShell(event), "Unsaved Parent Taxon", "There are unsaved " + + "changes in the parent taxon. Please save first."); + return null; + } - if(parentTaxonNode != null){ - if(NavigationUtil.isDirty(parentTaxonNode)){ - MessageDialog.openWarning(HandlerUtil.getActiveShell(event), "Unsaved Parent Taxon", "There are unsaved " + - "changes in the parent taxon. Please save first."); - return null; - } + AbstractPostOperation operation = new MoveTaxonOperation + ("Move taxon to new parent", NavigationUtil.getUndoContext(), + taxonNode, parentTaxonNode, taxonNavigator, taxonNavigator); //$NON-NLS-1$ + NavigationUtil.executeOperation(operation); + taxonNavigator.refresh(); - AbstractPostOperation operation = new MoveTaxonOperation - ("Move taxon to new parent", NavigationUtil.getUndoContext(), - taxonNodes, parentTaxonNode, this, taxonNavigator); //$NON-NLS-1$ - NavigationUtil.executeOperation(operation); - + } } - return null; } @@ -105,4 +124,6 @@ public class MoveTaxonHandler extends AbstractHandler implements IPostOperationE return false; } + + } -- 2.34.1