From ea3b1f1c6137f0a0ad5aba1f441a28cec8206893 Mon Sep 17 00:00:00 2001 From: Patrick Plitzner Date: Thu, 29 Oct 2015 13:32:57 +0100 Subject: [PATCH] Fix possible NPE and widget disposed exception --- ...eSynonymToAnotherAcceptedTaxonHandler.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) 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 281e83df6..4ffee2de6 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,5 +1,9 @@ package eu.etaxonomy.taxeditor.editor.name.handler; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + import org.apache.log4j.Logger; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; @@ -9,10 +13,6 @@ import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.handlers.HandlerUtil; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.taxon.Synonym; import eu.etaxonomy.cdm.model.taxon.Taxon; @@ -22,6 +22,7 @@ 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.model.MessagingUtils; import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog; @@ -35,6 +36,10 @@ public class MoveSynonymToAnotherAcceptedTaxonHandler extends AbstractHandler im editor = (MultiPageTaxonEditor) HandlerUtil.getActiveEditor(event); Shell shell = HandlerUtil.getActiveShell(event); IEditorInput input = editor.getEditorInput(); + // Get synonym from selection before possible save dialog + // because the selection will be null if save dialog is shown + StructuredSelection selection = (StructuredSelection) HandlerUtil.getCurrentSelection(event); + if (!EditorUtil.forceUserSave(editor, shell)) { return null; } @@ -44,9 +49,8 @@ public class MoveSynonymToAnotherAcceptedTaxonHandler extends AbstractHandler im return null; } - // Get synonym from selection - StructuredSelection selection = (StructuredSelection) HandlerUtil.getCurrentSelection(event); - if (!(selection.getFirstElement() instanceof Synonym)) { + if (selection==null || !(selection.getFirstElement() instanceof Synonym)) { + MessagingUtils.warningDialog("No selection", this, "No synonym selected"); logger.error("Selection does not contain a Synonym"); return null; } @@ -55,8 +59,8 @@ public class MoveSynonymToAnotherAcceptedTaxonHandler extends AbstractHandler im Taxon oldParent = ((TaxonEditorInput)input).getTaxon(); List excludeTaxa = new ArrayList(); excludeTaxa.add(oldParent.getUuid()); - - TaxonNode newParentNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event), editor.getConversationHolder(), "Select new accepted taxon", null, null, ((TaxonEditorInput)input).getTaxonNode().getClassification()); + + TaxonNode newParentNode = TaxonNodeSelectionDialog.select(editor.getSite().getShell(), editor.getConversationHolder(), "Select new accepted taxon", null, null, ((TaxonEditorInput)input).getTaxonNode().getClassification()); if(newParentNode!=null){ MoveSynonymToAnotherAcceptedTaxonOperation operation = new MoveSynonymToAnotherAcceptedTaxonOperation("Change accepted Taxon of Synonym", EditorUtil.getUndoContext(), oldParent.getUuid(), synonym.getUuid(), newParentNode.getTaxon(), editor); -- 2.30.2