From 6a6ea3651115d77a62da84e665dec5b656e12ee3 Mon Sep 17 00:00:00 2001 From: "n.hoffmann" Date: Fri, 28 Jan 2011 16:48:01 +0000 Subject: [PATCH] Introduces a handler to delete all empty names; Cleans up the name editors context menu; repairs keybinding for delete in various views and editors; fixes #2182 --- .gitattributes | 1 + taxeditor-editor/plugin.xml | 95 ++++++++----------- .../editor/MultiPageTaxonEditor.java | 4 +- .../editor/name/TaxonNameEditor.java | 20 +++- .../CreateHomotypicSynonymHandler.java | 5 +- .../handler/DeleteAllEmptyNamesHandler.java | 43 +++++++++ .../name/handler/DeleteTaxonBaseHandler.java | 28 +++--- .../handler/NameEditorMenuPropertyTester.java | 64 ++++++++----- .../editor/view/concept/ConceptViewPart.java | 2 + .../handler/DeleteConceptRelationHandler.java | 2 +- .../descriptive/handler/DeleteHandler.java | 6 +- .../section/AbstractCdmDetailSection.java | 9 +- .../section/name/NameDetailElement.java | 9 -- .../name/NonViralNameDetailElement.java | 4 + .../wizard/VocabularyTermWizard.java | 1 - 15 files changed, 170 insertions(+), 123 deletions(-) create mode 100644 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteAllEmptyNamesHandler.java diff --git a/.gitattributes b/.gitattributes index 162555bfd..587665351 100644 --- a/.gitattributes +++ b/.gitattributes @@ -408,6 +408,7 @@ taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/Create taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/CreateHomotypicSynonymHandler.java -text taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/CreateMisapplicationHandler.java -text taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/CreateSynonymInHomotypicalGroupHandler.java -text +taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteAllEmptyNamesHandler.java -text taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteTaxonBaseHandler.java -text taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/GroupBasionymContributionItem.java -text taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/NameEditorMenuPropertyTester.java -text diff --git a/taxeditor-editor/plugin.xml b/taxeditor-editor/plugin.xml index 5ed9dcce5..0d4e2910a 100644 --- a/taxeditor-editor/plugin.xml +++ b/taxeditor-editor/plugin.xml @@ -250,23 +250,6 @@ name="separator1" visible="true"> - - - - - - - - - - - - - - @@ -350,18 +330,6 @@ - - - - - - - - @@ -384,6 +352,16 @@ + + + + + + @@ -549,21 +527,11 @@ id="eu.etaxonomy.taxeditor.editor.name.changeToAcceptedTaxon" name="Change To Accepted Taxon"> - - - - + + @@ -599,7 +572,7 @@ + variable="selection"> @@ -608,7 +581,7 @@ + variable="selection"> @@ -617,27 +590,27 @@ + variable="selection"> + id="isTaxonBase"> + variable="selection"> + property="eu.etaxonomy.taxeditor.editor.name.propertyTester.isTaxonBase"> + id="hasEmptyNames"> + variable="selection"> + property="eu.etaxonomy.taxeditor.editor.name.propertyTester.hasEmptyNames"> @@ -648,7 +621,7 @@ class="eu.etaxonomy.taxeditor.editor.name.handler.NameEditorMenuPropertyTester" id="eu.etaxonomy.taxeditor.editor.name.propertyTester" namespace="eu.etaxonomy.taxeditor.editor.name.propertyTester" - properties="isAcceptedTaxon,isSynonym,isMisapplication,isTaxonBase,isConceptRelation" + properties="isAcceptedTaxon,isSynonym,isMisapplication,isTaxonBase,hasEmptyNames" type="org.eclipse.jface.viewers.IStructuredSelection"> @@ -748,7 +721,7 @@ + variable="selection"> @@ -757,7 +730,7 @@ + variable="selection"> @@ -766,7 +739,7 @@ + variable="selection"> @@ -775,7 +748,7 @@ + variable="selection"> @@ -784,7 +757,7 @@ + variable="selection"> @@ -1051,6 +1024,14 @@ + + + + + + diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditor.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditor.java index 9aade67d3..40d94f879 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditor.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditor.java @@ -16,6 +16,7 @@ import java.util.UUID; import org.eclipse.core.commands.operations.IUndoContext; import org.eclipse.core.commands.operations.UndoContext; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IEditorSite; @@ -115,7 +116,8 @@ public class MultiPageTaxonEditor extends FormEditor implements IConversationEna for(IEditorPart editorPage : getPages()){ if(editorPage instanceof TaxonNameEditor){ if(((TaxonNameEditor) editorPage).checkForEmptyNames()){ - // abort + MessageDialog.openWarning(EditorUtil.getShell(), "No Name Specified", "An attempt was made to save a taxon or synonym with " + + "an empty name. Operation was cancelled."); return; } } diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java index ba6295d4f..cc5f95fbd 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java @@ -14,6 +14,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import org.apache.commons.lang.StringUtils; import org.eclipse.core.commands.operations.IUndoContext; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; @@ -369,15 +370,26 @@ public class TaxonNameEditor extends EditorPart implements IMultiPageTaxonEditor */ public boolean checkForEmptyNames() { for(AbstractGroupedContainer container : getGroupedContainers()){ - if(container.getName() == null || container.getName().getTitleCache().equals("")){ - MessageDialog.openWarning(EditorUtil.getShell(), "No Name Specified", "An attempt was made to save a taxon or synonym with " + - "an empty name. Operation was cancelled."); + if(container.getName() == null || StringUtils.isEmpty(container.getName().getTitleCache())){ return true; } } return false; } + + public Set getEmptyContainers(){ + Set containersWithEmptyNames = new HashSet(); + + for(AbstractGroupedContainer container : getGroupedContainers()){ + if(container.getName() == null || StringUtils.isEmpty(container.getName().getTitleCache())){ + containersWithEmptyNames.add(container); + } + } + + return containersWithEmptyNames; + } + /** {@inheritDoc} */ @Override public void doSave(IProgressMonitor monitor) { @@ -750,8 +762,6 @@ public class TaxonNameEditor extends EditorPart implements IMultiPageTaxonEditor } } - - /** * @param element * @return diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/CreateHomotypicSynonymHandler.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/CreateHomotypicSynonymHandler.java index a926d9a2a..514d9dcae 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/CreateHomotypicSynonymHandler.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/CreateHomotypicSynonymHandler.java @@ -9,7 +9,6 @@ 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; @@ -35,8 +34,6 @@ import eu.etaxonomy.taxeditor.parser.ParseHandler; */ public class CreateHomotypicSynonymHandler extends AbstractHandler implements IHandler { - private static final Logger logger = Logger - .getLogger(CreateHomotypicSynonymHandler.class); /* (non-Javadoc) * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent) @@ -55,7 +52,7 @@ public class CreateHomotypicSynonymHandler extends AbstractHandler implements editor.getUndoContext(), taxon, group, newSynonymName, editor); EditorUtil.executeOperation(operation); } catch (NotDefinedException e) { - logger.warn("Command name not set"); + EditorUtil.error(getClass(), e); } diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteAllEmptyNamesHandler.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteAllEmptyNamesHandler.java new file mode 100644 index 000000000..009edab8c --- /dev/null +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteAllEmptyNamesHandler.java @@ -0,0 +1,43 @@ +// $Id$ +/** +* Copyright (C) 2007 EDIT +* 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. +*/ + +package eu.etaxonomy.taxeditor.editor.name.handler; + +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; + +import eu.etaxonomy.cdm.model.taxon.TaxonBase; +import eu.etaxonomy.taxeditor.editor.EditorUtil; +import eu.etaxonomy.taxeditor.editor.Page; +import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor; +import eu.etaxonomy.taxeditor.editor.name.container.AbstractGroupedContainer; + +/** + * @author n.hoffmann + * @created Jan 28, 2011 + * @version 1.0 + */ +public class DeleteAllEmptyNamesHandler extends DeleteTaxonBaseHandler { + + /* (non-Javadoc) + * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent) + */ + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + TaxonNameEditor editor = (TaxonNameEditor) EditorUtil.getActiveEditorPage(Page.NAME); + + for(AbstractGroupedContainer containerWithEmptyName : editor.getEmptyContainers()){ + doExecute(event, editor, containerWithEmptyName.getData()); + } + + return null; + } + +} diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteTaxonBaseHandler.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteTaxonBaseHandler.java index adf079813..1d3678ee3 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteTaxonBaseHandler.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/DeleteTaxonBaseHandler.java @@ -8,7 +8,6 @@ */ 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; @@ -22,7 +21,6 @@ import eu.etaxonomy.taxeditor.editor.Page; import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor; import eu.etaxonomy.taxeditor.editor.name.operation.DeleteMisapplicationOperation; import eu.etaxonomy.taxeditor.editor.name.operation.DeleteSynonymOperation; -import eu.etaxonomy.taxeditor.editor.view.concept.operation.DeleteConceptRelationOperation; import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; /** @@ -33,8 +31,7 @@ import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; * @version 1.0 */ public class DeleteTaxonBaseHandler extends AbstractHandler implements IHandler { - private static final Logger logger = Logger - .getLogger(DeleteTaxonBaseHandler.class); + /* (non-Javadoc) * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent) */ @@ -44,18 +41,27 @@ public class DeleteTaxonBaseHandler extends AbstractHandler implements IHandler Object selectedElement = EditorUtil.getSelection(event).getFirstElement(); - AbstractPostOperation operation = null; - String commandName = null; - + doExecute(event, editor, selectedElement); + return null; + } + + /** + * @param editor + * @param selectedElement + * @param operation + * @param commandName + */ + protected void doExecute(ExecutionEvent event, TaxonNameEditor editor, Object selectedElement) { + AbstractPostOperation operation = null; + String commandName = null; + try { commandName = event.getCommand().getName(); } catch (NotDefinedException e) { - logger.error(e); - throw new RuntimeException(e); + EditorUtil.error(getClass(), e); } - // synonym if(selectedElement instanceof Synonym){ operation = new DeleteSynonymOperation(commandName, editor.getUndoContext(), editor.getTaxon(), (Synonym) selectedElement, editor); @@ -70,8 +76,6 @@ public class DeleteTaxonBaseHandler extends AbstractHandler implements IHandler } EditorUtil.executeOperation(operation); - - return null; } } diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/NameEditorMenuPropertyTester.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/NameEditorMenuPropertyTester.java index b30d362e7..59ae7296b 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/NameEditorMenuPropertyTester.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/NameEditorMenuPropertyTester.java @@ -12,10 +12,14 @@ package eu.etaxonomy.taxeditor.editor.name.handler; import org.apache.log4j.Logger; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.IEditorPart; import eu.etaxonomy.cdm.model.taxon.Synonym; import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.cdm.model.taxon.TaxonBase; +import eu.etaxonomy.taxeditor.editor.EditorUtil; +import eu.etaxonomy.taxeditor.editor.Page; +import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor; /** *

NameEditorMenuPropertyTester class.

@@ -25,13 +29,13 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase; * @version 1.0 */ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.PropertyTester { - private static final Logger logger = Logger.getLogger(NameEditorMenuPropertyTester.class); private static final String ACCEPTED = "isAcceptedTaxon"; private static final String SYNONYM = "isSynonym"; private static final String MISAPPLICATION = "isMisapplication"; private static final String TAXONBASE = "isTaxonBase"; private static final String CONCEPT = "isConceptRelation"; + private static final String EMPTY_NAMES = "hasEmptyNames"; /** *

Constructor for NameEditorMenuPropertyTester.

@@ -46,32 +50,42 @@ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.P public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { - if(!(receiver instanceof IStructuredSelection)){ - return false; + if(receiver instanceof IStructuredSelection){ + + IStructuredSelection selection = (IStructuredSelection) receiver; + + Object selectedElement = selection.getFirstElement(); + + if(ACCEPTED.equals(property)){ + return isAccepted(selectedElement); + } + else if(SYNONYM.equals(property)){ + return isSynonym(selectedElement); + } + else if(MISAPPLICATION.equals(property)){ + return isMisapplication(selectedElement); + } + else if(TAXONBASE.equals(property)){ + return isTaxonBase(selectedElement); + } + else if(CONCEPT.equals(property)){ + return isRelatedConcept(selectedElement); + } + else if(EMPTY_NAMES.equals(property)){ + return hasEmptyNames(receiver); + } } - IStructuredSelection selection = (IStructuredSelection) receiver; - - Object selectedElement = selection.getFirstElement(); + return false; - if(ACCEPTED.equals(property)){ - return isAccepted(selectedElement); - } - else if(SYNONYM.equals(property)){ - return isSynonym(selectedElement); - } - else if(MISAPPLICATION.equals(property)){ - return isMisapplication(selectedElement); - } - else if(TAXONBASE.equals(property)){ - return isTaxonBase(selectedElement); - } - else if(CONCEPT.equals(property)){ - return isRelatedConcept(selectedElement); - } - else{ - return false; - } + } + + /** + * @param receiver + * @return + */ + private boolean hasEmptyNames(Object receiver) { + return ((TaxonNameEditor) EditorUtil.getActiveEditorPage(Page.NAME)).checkForEmptyNames(); } private boolean isRelatedConcept(Object selectedElement) { @@ -97,6 +111,6 @@ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.P } private boolean isAccepted(Object selectedElement) { - return (selectedElement instanceof Taxon && ! ((Taxon) selectedElement).isRelatedConcept() && ! ((Taxon) selectedElement).isMisapplication()) ? true : false; + return (selectedElement instanceof Taxon && ! ((Taxon) selectedElement).isMisapplication()) ? true : false; } } diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/ConceptViewPart.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/ConceptViewPart.java index 72426bea7..dea4553a5 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/ConceptViewPart.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/ConceptViewPart.java @@ -101,6 +101,8 @@ public class ConceptViewPart extends AbstractCdmEditorViewPart { viewer.setSorter(new ConceptViewerSorter()); + getSite().setSelectionProvider(viewer); + createMenu(); createToolbar(); diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/handler/DeleteConceptRelationHandler.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/handler/DeleteConceptRelationHandler.java index 336554143..bc5a8eb65 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/handler/DeleteConceptRelationHandler.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/handler/DeleteConceptRelationHandler.java @@ -46,7 +46,7 @@ public class DeleteConceptRelationHandler extends AbstractHandler { TaxonNameEditor editor = (TaxonNameEditor) EditorUtil.getActiveEditorPage( Page.NAME); - ISelection selection = HandlerUtil.getActiveMenuSelection(event); + ISelection selection = HandlerUtil.getActiveSite(event).getSelectionProvider().getSelection(); Set relations = new HashSet(); diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/DeleteHandler.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/DeleteHandler.java index 0e8324c4e..04fbab44f 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/DeleteHandler.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/DeleteHandler.java @@ -49,7 +49,7 @@ public class DeleteHandler extends AbstractHandler { */ /** {@inheritDoc} */ public Object execute(ExecutionEvent event) throws ExecutionException { - IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getActiveMenuSelection(event); + IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getActiveSite(event).getSelectionProvider().getSelection(); IWorkbenchPart part = HandlerUtil.getActivePart(event); IPostOperationEnabled postOperationEnabled = (part instanceof IPostOperationEnabled) ? (IPostOperationEnabled) part : null; @@ -77,12 +77,12 @@ public class DeleteHandler extends AbstractHandler { List descriptions = ((FeatureNodeContainer) object).getDescriptionElementsForEntireBranch(); for(DescriptionElementBase description : descriptions){ - operations.add(new DeleteDescriptionElementOperation(label, undoContext, (DescriptionElementBase) object, postOperationEnabled)); + operations.add(new DeleteDescriptionElementOperation(label, undoContext, description, postOperationEnabled)); } } // Media else if(object instanceof Media){ - TreeSelection treeSelection = (TreeSelection) HandlerUtil.getActiveMenuSelection(event); + TreeSelection treeSelection = (TreeSelection) selection; TreePath[] path = treeSelection.getPathsFor(object); diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/AbstractCdmDetailSection.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/AbstractCdmDetailSection.java index ab8995e51..82cb3e6f6 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/AbstractCdmDetailSection.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/AbstractCdmDetailSection.java @@ -21,7 +21,6 @@ import org.eclipse.ui.forms.widgets.Section; import org.eclipse.ui.forms.widgets.TableWrapLayout; import eu.etaxonomy.cdm.api.conversation.ConversationHolder; -import eu.etaxonomy.cdm.model.common.IAnnotatableEntity; import eu.etaxonomy.cdm.model.common.IdentifiableEntity; import eu.etaxonomy.taxeditor.forms.AbstractFormSection; import eu.etaxonomy.taxeditor.forms.CdmFormFactory; @@ -29,7 +28,6 @@ import eu.etaxonomy.taxeditor.forms.CdmFormFactory.DetailType; import eu.etaxonomy.taxeditor.forms.ICdmFormElement; import eu.etaxonomy.taxeditor.forms.IEnableableFormElement; import eu.etaxonomy.taxeditor.forms.ISelectableElement; -import eu.etaxonomy.taxeditor.forms.SelectionArbitrator; /** *

Abstract AbstractCdmDetailSection class.

@@ -42,8 +40,6 @@ public abstract class AbstractCdmDetailSection extends AbstractFormSecti protected AbstractCdmDetailElement detailElement; - protected SelectionArbitrator selectionArbitrator; - /** *

Constructor for AbstractCdmDetailSection.

* @@ -99,7 +95,10 @@ public abstract class AbstractCdmDetailSection extends AbstractFormSecti @Override public void dispose() { if(detailElement instanceof ISelectableElement){ - formFactory.destroySelectionArbitrator(((ISelectableElement)detailElement).getSelectionArbitrator()); + ISelectableElement selectableElement = (ISelectableElement) detailElement; + if(selectableElement.getSelectionArbitrator() != null){ + formFactory.destroySelectionArbitrator(selectableElement.getSelectionArbitrator()); + } } super.dispose(); } diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NameDetailElement.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NameDetailElement.java index 27794d769..80d68c9c2 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NameDetailElement.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NameDetailElement.java @@ -30,7 +30,6 @@ import eu.etaxonomy.taxeditor.forms.CheckboxElement; import eu.etaxonomy.taxeditor.forms.ICdmFormElement; import eu.etaxonomy.taxeditor.forms.IEnableableFormElement; import eu.etaxonomy.taxeditor.forms.ISelectableElement; -import eu.etaxonomy.taxeditor.forms.LabelElement; import eu.etaxonomy.taxeditor.forms.NumberWithLabelElement; import eu.etaxonomy.taxeditor.forms.SelectionArbitrator; import eu.etaxonomy.taxeditor.forms.TextWithLabelElement; @@ -189,14 +188,6 @@ public class NameDetailElement extends AbstractCdmDetailElement im if(eventSource == combo_rank){ getEntity().setRank(combo_rank.getSelection()); clearCheckRankWarnings(); - // TODO -// logger.warn("Refreshing the details view at this stage may lead to 'Widget is disposed' errors. They can be ignored."); - try{ - EditorUtil.refreshDetailsViewer(); - getParentElement().getParentElement().getParentElement().refresh(); - }catch(SWTException e){ - // ignore - } } else if(eventSource == text_appendedPhrase){ getEntity().setAppendedPhrase(text_appendedPhrase.getText()); diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NonViralNameDetailElement.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NonViralNameDetailElement.java index fe310970f..b1ad97843 100644 --- a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NonViralNameDetailElement.java +++ b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NonViralNameDetailElement.java @@ -133,5 +133,9 @@ public class NonViralNameDetailElement extends AbstractCdmDetailElement extends Wizard impl } getConversationHolder().commit(true); -// getConversationHolder().close(); return true; } -- 2.34.1