From: Katja Luther
Constructor for GroupBasionymContributionItem.
- */ - public GroupBasionymContributionItem() {} - - /** - *Constructor for GroupBasionymContributionItem.
- * - * @param id a {@link java.lang.String} object. - */ - public GroupBasionymContributionItem(String id) { - super(id); - } - - - /** {@inheritDoc} */ - @Override - protected IContributionItem[] getContributionItems() { - - IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); - - ISelectionService selectionService = window.getSelectionService(); - - ISelection selection = selectionService.getSelection(); - - if(selection instanceof IStructuredSelection){ - Object selectedObject = ((IStructuredSelection) selection).getFirstElement(); - - if(selectedObject != null && selectedObject instanceof TaxonBase){ - - TaxonNameBase name = (TaxonNameBase) HibernateProxyHelper.deproxy(((TaxonBase) selectedObject).getName()); - - if(name != null && name.getHomotypicalGroup().getTypifiedNames().size() > 1){ - - CommandContributionItemParameter parameter = - new CommandContributionItemParameter( - window, null, getCommand(name), SWT.NONE); - - parameter.label = getLabel(name); - - return new IContributionItem[] { - new CommandContributionItem(parameter) - }; - } - - } - } - - return new IContributionItem[]{}; - } - - /** - * @param name - * @return - */ - private String getCommand(TaxonNameBase name) { - if(name.isGroupsBasionym()){ - return "eu.etaxonomy.taxeditor.editor.name.removeBasionym" ; - } - return "eu.etaxonomy.taxeditor.editor.name.setBasionym"; - } - - /** - * @param name - * @return - */ - private String getLabel(TaxonNameBase name) { - ILabelImageStrategy strategy = LabelImageProvider.getLabelStrategy(name); - LabelImageProvider labelProvider = new LabelImageProvider(strategy); - return (name.isGroupsBasionym() ? "Remove" : "Set") - + " as " + labelProvider.getNameRelationTypeDescription(NameRelationshipType.BASIONYM()) + " for Homotypic Group"; - } -} diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/NameEditorMenuPropertyTester.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/NameEditorMenuPropertyTester.java index 856934698..f8a49eb01 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/NameEditorMenuPropertyTester.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/NameEditorMenuPropertyTester.java @@ -36,7 +36,7 @@ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.P private static final String EMPTY_NAMES = "hasEmptyNames"; private static final String ACCEPTED_AND_NO_HOMOTYPIC_SYNONYMS = "isAcceptedAndHasNoHomotypicSynonyms"; private static final String NOT_HOMOTYPIC_SYNONYM_OF_ACCEPTED = "isNotHomotypicSynonymOfAcceptedTaxon"; - + private static final String SYNONYM_WITH_HOMOTYPIC_SYNONYMS = "isSynonymInHomotypicalGroupWithMoreSynonyms"; /** *Constructor for NameEditorMenuPropertyTester.
@@ -78,9 +78,13 @@ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.P } else if(ACCEPTED_AND_NO_HOMOTYPIC_SYNONYMS.equals(property)){ return isAcceptedAndHasNoHomotypicSynonyms(selectedElement); - }else if (NOT_HOMOTYPIC_SYNONYM_OF_ACCEPTED.equals(property)){ + } + else if (NOT_HOMOTYPIC_SYNONYM_OF_ACCEPTED.equals(property)){ return isNotHomotypicSynonymOfAcceptedTaxon(selectedElement); } + else if (SYNONYM_WITH_HOMOTYPIC_SYNONYMS.equals(property)){ + return isSynonymInHomotypicalGroupWithMoreSynonyms(selectedElement); + } } @@ -95,6 +99,15 @@ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.P } return false; } + + private boolean isSynonymInHomotypicalGroupWithMoreSynonyms(Object selectedElement) { + if (isSynonym(selectedElement)){ + Synonym synonym = (Synonym) selectedElement; + return synonym.getHomotypicGroup().getTypifiedNames().size()>1; + } + return false; + } + private boolean isNotHomotypicSynonymOfAcceptedTaxon(Object selectedElement) { if (isSynonym(selectedElement)){