From: Patrick Plitzner Date: Mon, 21 Sep 2015 15:50:25 +0000 (+0200) Subject: Pre-select current classification for taxon node selection dialog X-Git-Tag: 3.12.0^2~135^2~3 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/0c6a1a43d5a7de0439117287eb678aa95bf919ba?hp=8393634c7af7b5de14b8caa3cfd69917d3f9fa7d Pre-select current classification for taxon node selection dialog (#3462) --- diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/ChangeSynonymToAcceptedTaxonHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/ChangeSynonymToAcceptedTaxonHandler.java index e76b8475e..b25601b21 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/ChangeSynonymToAcceptedTaxonHandler.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/ChangeSynonymToAcceptedTaxonHandler.java @@ -1,9 +1,9 @@ // $Id$ /** * Copyright (C) 2007 EDIT -* European Distributed Institute of Taxonomy +* European Distributed Institute of Taxonomy * http://www.e-taxonomy.eu -* +* * The contents of this file are subject to the Mozilla Public License Version 1.1 * See LICENSE.TXT at the top of this package for the full license terms. */ @@ -51,16 +51,17 @@ public class ChangeSynonymToAcceptedTaxonHandler extends AbstractHandler impleme private static final Logger logger = Logger .getLogger(ChangeSynonymToAcceptedTaxonHandler.class); private MultiPageTaxonEditor editor; - + /* (non-Javadoc) * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent) */ /** {@inheritDoc} */ - public Object execute(ExecutionEvent event) throws ExecutionException { + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { editor = (MultiPageTaxonEditor) HandlerUtil.getActiveEditor(event); Shell shell = HandlerUtil.getActiveShell(event); IEditorInput input = editor.getEditorInput(); - + if (!(input instanceof TaxonEditorInput)) { logger.error("Editor input is not TaxonEditorInput"); return null; @@ -74,7 +75,7 @@ public class ChangeSynonymToAcceptedTaxonHandler extends AbstractHandler impleme } Synonym synonym = (Synonym) selection.getFirstElement(); - + // Force user to save taxon - not really necessary though, is it? if (!EditorUtil.forceUserSave(editor, shell)) { return null; @@ -82,25 +83,25 @@ public class ChangeSynonymToAcceptedTaxonHandler extends AbstractHandler impleme // Get taxon Taxon taxon = ((TaxonEditorInput) input).getTaxon(); - + TaxonNode parentNode = (TaxonNode) HibernateProxyHelper.deproxy(((TaxonEditorInput) input).getTaxonNode().getParent()); - + List excludeTaxa = null; - - TaxonNode newParentNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), editor.getConversationHolder(), "Select parent", excludeTaxa, null, null); - + + TaxonNode newParentNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), editor.getConversationHolder(), "Select parent", excludeTaxa, null, ((TaxonEditorInput) input).getTaxonNode().getClassification()); + if(newParentNode != null){ - + // TODO get synonyms from homotypical group and add them as homotypic synonyms to new accepted taxon // apply confirmation dialog HomotypicalGroup group = synonym.getHomotypicGroup(); Set namesInGroup = group.getTypifiedNames(); // FIXME with this implementation we can not create a taxonNode that is a direct child of the classification node - AbstractPostOperation operation = new ChangeSynonymToAcceptedTaxonOperation("Change synonym to accepted taxon", EditorUtil.getUndoContext(), + AbstractPostOperation operation = new ChangeSynonymToAcceptedTaxonOperation("Change synonym to accepted taxon", EditorUtil.getUndoContext(), taxon, newParentNode, synonym, namesInGroup, this, editor); //$NON-NLS-1$ EditorUtil.executeOperation(operation); } - + return null; } @@ -108,19 +109,20 @@ public class ChangeSynonymToAcceptedTaxonHandler extends AbstractHandler impleme * @see eu.etaxonomy.taxeditor.operations.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase) */ /** {@inheritDoc} */ - public boolean postOperation(CdmBase objectAffectedByOperation) { - + @Override + public boolean postOperation(CdmBase objectAffectedByOperation) { + // Redraw existing editor ((IPostOperationEnabled) editor).postOperation(null); - + editor.doSave(EditorUtil.getMonitor()); - + if (objectAffectedByOperation instanceof TaxonNode) { - + // Open new unsaved editor with existing taxon's parent as temporary parent TaxonNode newNode = (TaxonNode) objectAffectedByOperation; // TaxonNode newNode = parentNode.addChild(newTaxon); - + try { // TODO /* @@ -129,7 +131,7 @@ public class ChangeSynonymToAcceptedTaxonHandler extends AbstractHandler impleme * doesn't work yet. */ EditorUtil.openTaxonNode(newNode.getUuid()); - + } catch (PartInitException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -145,7 +147,8 @@ public class ChangeSynonymToAcceptedTaxonHandler extends AbstractHandler impleme * * @return a boolean. */ - public boolean onComplete() { + @Override + public boolean onComplete() { // TODO Auto-generated method stub return false; } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/MoveSynonymToAnotherAcceptedTaxonHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/MoveSynonymToAnotherAcceptedTaxonHandler.java index 82198663a..b2c7b6453 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/MoveSynonymToAnotherAcceptedTaxonHandler.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/MoveSynonymToAnotherAcceptedTaxonHandler.java @@ -1,82 +1,78 @@ -package eu.etaxonomy.taxeditor.editor.name.handler; - -import java.util.UUID; - -import org.apache.log4j.Logger; -import org.eclipse.core.commands.AbstractHandler; -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.core.commands.common.NotDefinedException; -import org.eclipse.core.commands.operations.IUndoContext; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.handlers.HandlerUtil; - -import eu.etaxonomy.cdm.model.common.CdmBase; -import eu.etaxonomy.cdm.model.name.TaxonNameBase; -import eu.etaxonomy.cdm.model.taxon.Synonym; -import eu.etaxonomy.cdm.model.taxon.Taxon; -import eu.etaxonomy.cdm.model.taxon.TaxonNode; -import eu.etaxonomy.taxeditor.editor.EditorUtil; -import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor; -import eu.etaxonomy.taxeditor.editor.TaxonEditorInput; -import eu.etaxonomy.taxeditor.editor.name.operation.MoveSynonymToAnotherAcceptedTaxonOperation; -import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; -import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog; - -public class MoveSynonymToAnotherAcceptedTaxonHandler extends AbstractHandler implements IPostOperationEnabled { - private static final Logger logger = Logger - .getLogger(MoveSynonymToAnotherAcceptedTaxonHandler.class); - private MultiPageTaxonEditor editor; - - @Override - public Object execute(ExecutionEvent event) throws ExecutionException { - editor = (MultiPageTaxonEditor) HandlerUtil.getActiveEditor(event); - Shell shell = HandlerUtil.getActiveShell(event); - IEditorInput input = editor.getEditorInput(); - if (!EditorUtil.forceUserSave(editor, shell)) { - return null; - } - - if (!(input instanceof TaxonEditorInput)) { - logger.error("Editor input is not TaxonEditorInput"); - return null; - } - - // Get synonym from selection - StructuredSelection selection = (StructuredSelection) HandlerUtil.getCurrentSelection(event); - if (!(selection.getFirstElement() instanceof Synonym)) { - logger.error("Selection does not contain a Synonym"); - return null; - } - - Synonym synonym = (Synonym) selection.getFirstElement(); - TaxonNode newParentNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), editor.getConversationHolder(), "Select new accepted taxon", null, null, null); - Taxon oldParent = ((TaxonEditorInput)input).getTaxon(); - - MoveSynonymToAnotherAcceptedTaxonOperation operation = new MoveSynonymToAnotherAcceptedTaxonOperation("Change accepted Taxon of Synonym", EditorUtil.getUndoContext(), - oldParent.getUuid(), synonym.getUuid(), newParentNode.getTaxon(), editor); - - EditorUtil.executeOperation(operation); - - - return null; - } - - @Override - public boolean postOperation(CdmBase objectAffectedByOperation) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean onComplete() { - // TODO Auto-generated method stub - return false; - } - - - -} +package eu.etaxonomy.taxeditor.editor.name.handler; + +import org.apache.log4j.Logger; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.handlers.HandlerUtil; + +import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.model.taxon.Synonym; +import eu.etaxonomy.cdm.model.taxon.Taxon; +import eu.etaxonomy.cdm.model.taxon.TaxonNode; +import eu.etaxonomy.taxeditor.editor.EditorUtil; +import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor; +import eu.etaxonomy.taxeditor.editor.TaxonEditorInput; +import eu.etaxonomy.taxeditor.editor.name.operation.MoveSynonymToAnotherAcceptedTaxonOperation; +import eu.etaxonomy.taxeditor.model.AbstractUtility; +import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; +import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog; + +public class MoveSynonymToAnotherAcceptedTaxonHandler extends AbstractHandler implements IPostOperationEnabled { + private static final Logger logger = Logger + .getLogger(MoveSynonymToAnotherAcceptedTaxonHandler.class); + private MultiPageTaxonEditor editor; + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + editor = (MultiPageTaxonEditor) HandlerUtil.getActiveEditor(event); + Shell shell = HandlerUtil.getActiveShell(event); + IEditorInput input = editor.getEditorInput(); + if (!EditorUtil.forceUserSave(editor, shell)) { + return null; + } + + if (!(input instanceof TaxonEditorInput)) { + logger.error("Editor input is not TaxonEditorInput"); + return null; + } + + // Get synonym from selection + StructuredSelection selection = (StructuredSelection) HandlerUtil.getCurrentSelection(event); + if (!(selection.getFirstElement() instanceof Synonym)) { + logger.error("Selection does not contain a Synonym"); + return null; + } + + Synonym synonym = (Synonym) selection.getFirstElement(); + TaxonNode newParentNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), editor.getConversationHolder(), "Select new accepted taxon", null, null, ((TaxonEditorInput)input).getTaxonNode().getClassification()); + if(newParentNode!=null){ + Taxon oldParent = ((TaxonEditorInput)input).getTaxon(); + + MoveSynonymToAnotherAcceptedTaxonOperation operation = new MoveSynonymToAnotherAcceptedTaxonOperation("Change accepted Taxon of Synonym", EditorUtil.getUndoContext(), + oldParent.getUuid(), synonym.getUuid(), newParentNode.getTaxon(), editor); + + AbstractUtility.executeOperation(operation); + + } + return null; + } + + @Override + public boolean postOperation(CdmBase objectAffectedByOperation) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean onComplete() { + // TODO Auto-generated method stub + return false; + } + + + +} diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/MoveDescriptionToOtherTaxonHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/MoveDescriptionToOtherTaxonHandler.java index c4b57e9cb..281a1a22a 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/MoveDescriptionToOtherTaxonHandler.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/MoveDescriptionToOtherTaxonHandler.java @@ -22,10 +22,12 @@ import eu.etaxonomy.cdm.api.service.IDescriptionService; import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.description.DescriptionBase; import eu.etaxonomy.cdm.model.description.TaxonDescription; +import eu.etaxonomy.cdm.model.taxon.Classification; import eu.etaxonomy.cdm.model.taxon.TaxonNode; import eu.etaxonomy.taxeditor.editor.EditorUtil; import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor; import eu.etaxonomy.taxeditor.editor.Page; +import eu.etaxonomy.taxeditor.editor.TaxonEditorInput; import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor; import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.MoveDescriptionToOtherTaxonOperation; import eu.etaxonomy.taxeditor.model.AbstractUtility; @@ -74,7 +76,7 @@ public class MoveDescriptionToOtherTaxonHandler extends AbstractHandler } else if (element instanceof DescriptionBase){ uuid = ((DescriptionBase)element).getUuid(); } - + if (uuid != null){ descriptions.add((TaxonDescription) CdmStore.getService(IDescriptionService.class).load(uuid, null)); } @@ -87,12 +89,21 @@ public class MoveDescriptionToOtherTaxonHandler extends AbstractHandler List excludeTaxa = new ArrayList(); editor = (TaxonNameEditor) EditorUtil.getActiveEditorPage(Page.NAME); excludeTaxa.add(descriptions.get(0).getTaxon().getUuid()); + + //get current taxon node + TaxonNode node = null; + Classification classification = null; + MultiPageTaxonEditor taxonEditor = EditorUtil.getActiveMultiPageTaxonEditor(); + if(taxonEditor!=null){ + node = ((TaxonEditorInput) taxonEditor.getEditorInput()).getTaxonNode(); + classification = node.getClassification(); + } TaxonNode newAcceptedTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), editor.getConversationHolder(), "Choose the accepted taxon", excludeTaxa, - null, - null); + node, + classification); if (newAcceptedTaxonNode == null) { return null; diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveFactualDataHandler.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveFactualDataHandler.java index d89a11fda..7249dc198 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveFactualDataHandler.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/MoveFactualDataHandler.java @@ -69,8 +69,8 @@ public class MoveFactualDataHandler extends AbstractHandler { navigator.getConversationHolder(), "Choose the accepted taxon", excludeTaxa, - null, - null); + sourceTaxonNode, + sourceTaxonNode.getClassification()); if (dialogTaxonNode == null) { return null; } 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 a761433ad..9cc52f1b9 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 @@ -26,6 +26,7 @@ import org.eclipse.ui.handlers.HandlerUtil; import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.model.taxon.Classification; import eu.etaxonomy.cdm.model.taxon.TaxonNode; import eu.etaxonomy.taxeditor.navigation.NavigationUtil; import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigator; @@ -84,14 +85,15 @@ public class MoveTaxonHandler extends AbstractHandler implements IPostOperationE // TaxonNode taxonNode = (TaxonNode) selection.getFirstElement(); if (taxonNodes.size() >= 1){ + Classification classification = taxonNodes.iterator().next().getClassification(); boolean moveToNewParent = true; if (PreferencesUtil.getSortNodesNaturally()){ if(!MessageDialog.openQuestion(null, "Target node", "The choosen target node should be the parent?")){ moveToNewParent = false; } - parentTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), taxonNavigator.getConversationHolder(), "Choose the taxon above the moved taxon.", excludeTaxa, null, null); + parentTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), taxonNavigator.getConversationHolder(), "Choose the taxon above the moved taxon.", excludeTaxa, null, classification); }else{ - parentTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), taxonNavigator.getConversationHolder(), "Choose new parent", excludeTaxa, null, null); + parentTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), taxonNavigator.getConversationHolder(), "Choose new parent", excludeTaxa, null, classification); } if(parentTaxonNode != null){ if(NavigationUtil.isDirty(parentTaxonNode)){ diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java index 54a28eb90..93f7108d0 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java @@ -62,7 +62,7 @@ public class SelectionDialogFactory { return (T) ClassificationSelectionDialog.select(shell, conversation, (Classification) currentSelection); } if(clazz.equals(TaxonNode.class)){ - return (T) TaxonNodeSelectionDialog.select(shell, conversation, null, null, (TaxonNode) currentSelection, null); + return (T) TaxonNodeSelectionDialog.select(shell, conversation, null, null, (TaxonNode) currentSelection, ((TaxonNode) currentSelection).getClassification()); } if(clazz.equals(Reference.class)){ return (T) ReferenceSelectionDialog.select(shell, conversation, (Reference) currentSelection);