command.label.12 = Akzeptiertes Taxon
command.label.13 = Synonym
command.label.14 = Misapplication
+command.label.61 = Pro Parte Synonym
command.label.15 = L\u00f6schen
command.label.16 = L\u00f6sche alle leeren Namen
command.label.17 = Tausche Synonym mit akzeptiertem Namen
command.label.50 = Benutze vorhandenes Bild
command.name.36 = Erstelle Misapplication
command.name.60 = Erstelle Pro Parte Synonym
+command.name.61 = Pro Parte Synonym
+
command.name.37 = Benutze vorhandenes Bild
command.name.38 = \u00d6ffne Verbreitungs-Editor
command.name.39 = Neue Datenquelle
<handlers xmi:id="_edkd4IvQEee7R4eqeQiXZg" elementId="eu.etaxonomy.taxeditor.editor.name.e4.handler.SetBasionymHandlerE4" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.name.e4.handler.SetBasionymHandlerE4" command="_b2nCsIvQEee7R4eqeQiXZg"/>
<handlers xmi:id="_lv9GYIvQEee7R4eqeQiXZg" elementId="eu.etaxonomy.taxeditor.editor.name.e4.handler.MoveSynonymToAnotherAcceptedTaxonHandlerE4" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.name.e4.handler.MoveSynonymToAnotherAcceptedTaxonHandlerE4" command="_jNvBQIvQEee7R4eqeQiXZg"/>
<handlers xmi:id="_g8QScFgWEeiQk_eTMvMviQ" elementId="eu.etaxonomy.taxeditor.editor.name.e4.handler.CreateProParteSynonymHandlerE4" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.name.e4.handler.CreateProParteSynonymHandlerE4" command="_HSKdYFgXEeiQk_eTMvMviQ"/>
+ <handlers xmi:id="_442rEFj-EeiQk_eTMvMviQ" elementId="eu.etaxonomy.taxeditor.editor.name.e4.handler.ChangeToMisapplicationHandlerE4" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.name.e4.handler.ChangeToProParteSynonymHandlerE5" command="_BgX6gFj_EeiQk_eTMvMviQ"/>
<menus xsi:type="menu:PopupMenu" xmi:id="_tLceQYl4Eeeox7omhvOBWg" elementId="eu.etaxonomy.taxeditor.editor.popupmenu.nameeditor">
<children xsi:type="menu:Menu" xmi:id="_R6buoIl5Eeeox7omhvOBWg" elementId="eu.etaxonomy.taxeditor.editor.nameEditor.menu.new" label="%menu.label">
<visibleWhen xsi:type="ui:CoreExpression" xmi:id="_X1lWsEoREeiEhr9v9h_MoA" coreExpressionId="isNotMisapplication"/>
<visibleWhen xsi:type="ui:CoreExpression" xmi:id="_lSby0EoQEeiEhr9v9h_MoA" coreExpressionId="isSynonym"/>
</children>
<children xsi:type="menu:HandledMenuItem" xmi:id="_POj24Il8Eeeox7omhvOBWg" elementId="eu.etaxonomy.taxeditor.editor.nameEditor.nameEditor.menuItem.changeToSynonym" label="%command.label.13" command="_yh49QIvPEee7R4eqeQiXZg">
- <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_h6hb0EoQEeiEhr9v9h_MoA" coreExpressionId="isMisapplication"/>
+ <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_h6hb0EoQEeiEhr9v9h_MoA" coreExpressionId="isNotSynonym"/>
</children>
<children xsi:type="menu:HandledMenuItem" xmi:id="_QbC4IIl8Eeeox7omhvOBWg" elementId="eu.etaxonomy.taxeditor.editor.nameEditor.menuItem.changeToMisapplication" label="%command.label.14" command="_56AaUIvPEee7R4eqeQiXZg">
- <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_fYbSgEoQEeiEhr9v9h_MoA" coreExpressionId="isSynonym"/>
+ <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_fYbSgEoQEeiEhr9v9h_MoA" coreExpressionId="isNotMisapplication"/>
+ </children>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_F0EH0FkAEeiQk_eTMvMviQ" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.changeToProparteSynonym" label="%command.label.61" command="_BgX6gFj_EeiQk_eTMvMviQ">
+ <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_Lc4KcFkAEeiQk_eTMvMviQ" coreExpressionId="isNotProparteSynonym"/>
</children>
</children>
<children xsi:type="menu:MenuSeparator" xmi:id="_a0anEIl5Eeeox7omhvOBWg" elementId="eu.etaxonomy.taxeditor.editor.menuseparator.13"/>
<elements xsi:type="commands:Command" xmi:id="_0DKb4E3kEeivZbtHG8C6kA" elementId="eu.etaxonomy.taxeditor.editor.openSpecimenEditorForSpecimenOrObservation" commandName="%command.name.OPEN_DERIVATIVE_EDITOR"/>
<elements xsi:type="commands:Command" xmi:id="_c3wW8FeBEeiJAP3GTkE0aQ" elementId="eu.etaxonomy.taxeditor.editor.command.descriptivedataseteditor.removeTaxon" commandName="%command.commandname.21"/>
<elements xsi:type="commands:Command" xmi:id="_HSKdYFgXEeiQk_eTMvMviQ" elementId="eu.etaxonomy.taxeditor.editor.name.createProParteSynonym" commandName="%command.name.60"/>
+ <elements xsi:type="commands:Command" xmi:id="_BgX6gFj_EeiQk_eTMvMviQ" elementId="eu.etaxonomy.taxeditor.editor.command.changeToProParteSynonym" commandName="%command.name.61"/>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_pZmusEalEeeXMc6kSYO7Xg" featurename="children" parentElementId="eu.etaxonomy.taxeditor.menu.showView" positionInList="after:eu.etaxonomy.taxeditor.workbench.menuseparator.navigation">
<elements xsi:type="menu:HandledMenuItem" xmi:id="_FPIHQKNwEeebGZ23ERGMGw" elementId="eu.etaxonomy.taxeditor.editor.showViewMenu.conceptGraph" label="%view.name.3" iconURI="" tooltip="%view.name.3" command="_WPjpoDSnEeek0dKsFNy--Q">
</test>
</with>
</definition>
+ <definition
+ id="isNotSynonym">
+ <with
+ variable="selection">
+ <test
+ property="eu.etaxonomy.taxeditor.editor.name.propertyTester.isNotSynonym">
+ </test>
+ </with>
+ </definition>
<definition
id="isMisapplication">
<with
property="eu.etaxonomy.taxeditor.editor.name.propertyTester.isMisapplication">
</test>
</with>
+ </definition>
+ <definition
+ id="isProparteSynonym">
+ <with
+ variable="selection">
+ <test
+ property="eu.etaxonomy.taxeditor.editor.name.propertyTester.isProparteSynonym">
+ </test>
+ </with>
+ </definition>
+ <definition
+ id="isNotProparteSynonym">
+ <with
+ variable="selection">
+ <test
+ property="eu.etaxonomy.taxeditor.editor.name.propertyTester.isNotProparteSynonym">
+ </test>
+ </with>
</definition>
<definition
id="isNotMisapplication">
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,isNotMisapplication,isTaxonBase,hasEmptyNames,isAcceptedAndHasNoHomotypicSynonyms,isNotHomotypicSynonymOfAcceptedTaxon,isNotAcceptedTaxon,isSynonymInHomotypicalGroupWithMoreSynonyms,isOrphaned"
+ properties="isAcceptedTaxon,isSynonym,isNotSynonym,isMisapplication,isProparteSynonym,isNotProparteSynonym,isNotMisapplication,isTaxonBase,hasEmptyNames,isAcceptedAndHasNoHomotypicSynonyms,isNotHomotypicSynonymOfAcceptedTaxon,isNotAcceptedTaxon,isSynonymInHomotypicalGroupWithMoreSynonyms,isOrphaned"
type="java.lang.Object">
</propertyTester>
<propertyTester
canExecute =
NameEditorMenuPropertyTester.isNotHomotypicSynonymOfAcceptedTaxon(selectedElement)
&& !NameEditorMenuPropertyTester.isAccepted(selectedElement)
- && !NameEditorMenuPropertyTester.isMisapplication(selectedElement);
+ && !NameEditorMenuPropertyTester.isMisapplication(selectedElement)
+ && !NameEditorMenuPropertyTester.isProparteSynonym(selectedElement);
menuItem.setVisible(canExecute);
return canExecute;
}
--- /dev/null
+/**
+* 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.e4.handler;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Shell;
+
+import eu.etaxonomy.cdm.model.taxon.Synonym;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
+import eu.etaxonomy.taxeditor.editor.name.handler.NameEditorMenuPropertyTester;
+import eu.etaxonomy.taxeditor.editor.name.operation.ChangeConceptRelationshipTypeOperation;
+import eu.etaxonomy.taxeditor.editor.name.operation.ChangeSynonymToConceptOperation;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+
+/**
+ *
+ * @author pplitzner
+ * @since Aug 28, 2017
+ *
+ */
+public class ChangeToProParteSynonymHandlerE5 {
+
+ private TaxonNameEditorE4 editor;
+
+ @Execute
+ public void execute(@Named(IServiceConstants.ACTIVE_PART)MPart activePart,
+ @Named(IServiceConstants.ACTIVE_SELECTION)IStructuredSelection selection,
+ @Named(IServiceConstants.ACTIVE_SHELL)Shell shell,
+ MHandledMenuItem menuItem,
+ UISynchronize sync) {
+
+ editor = (TaxonNameEditorE4) activePart.getObject();
+
+ if (!EditorUtil.forceUserSaveE4Editor(editor, shell)){
+ return ;
+ }
+ Object selectedElement = selection.getFirstElement();
+
+ AbstractPostOperation operation = null;
+ if(selectedElement instanceof Taxon){
+ operation = new ChangeConceptRelationshipTypeOperation(menuItem.getLocalizedLabel(),
+ editor.getUndoContext(), editor.getTaxon(), (Taxon) selectedElement, TaxonRelationshipType.PRO_PARTE_SYNONYM_FOR(), editor);
+ }
+ if(selectedElement instanceof Synonym){
+ operation = new ChangeSynonymToConceptOperation(menuItem.getLocalizedLabel(), editor.getUndoContext(), editor.getTaxon(), (Synonym)selectedElement, TaxonRelationshipType.PRO_PARTE_SYNONYM_FOR(), editor);
+ }
+
+
+ AbstractUtility.executeOperation(operation, sync);
+ }
+
+ @CanExecute
+ public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION)IStructuredSelection selection,
+ MHandledMenuItem menuItem){
+ boolean canExecute = false;
+ Object selectedElement = selection.getFirstElement();
+ canExecute =
+ !NameEditorMenuPropertyTester.isAccepted(selectedElement)
+ && !NameEditorMenuPropertyTester.isProparteSynonym(selectedElement);
+ return canExecute;
+ }
+
+}
private static final String ACCEPTED = "isAcceptedTaxon"; //$NON-NLS-1$
private static final String NOT_ACCEPTED = "isNotAcceptedTaxon"; //$NON-NLS-1$
private static final String SYNONYM = "isSynonym"; //$NON-NLS-1$
+ private static final String NOT_SYNONYM = "isNotSynonym"; //$NON-NLS-1$
private static final String MISAPPLICATION = "isMisapplication"; //$NON-NLS-1$
private static final String NOT_MISAPPLICATION = "isNotMisapplication"; //$NON-NLS-1$
+ private static final String PROPARTE_SYNONYM = "isProparteSynonym";//$NON-NLS-1$
+ private static final String NOT_PROPARTE_SYNONYM = "isNotProparteSynonym"; //$NON-NLS-1$
private static final String TAXONBASE = "isTaxonBase"; //$NON-NLS-1$
private static final String CONCEPT = "isConceptRelation"; //$NON-NLS-1$
private static final String EMPTY_NAMES = "hasEmptyNames"; //$NON-NLS-1$
else if(SYNONYM.equals(property)){
return isSynonym(selectedElement);
}
+ else if(NOT_SYNONYM.equals(property)){
+ return isNotSynonym(selectedElement);
+ }
else if(MISAPPLICATION.equals(property)){
return isMisapplication(selectedElement);
}
+ else if(PROPARTE_SYNONYM.equals(property)){
+ return isProparteSynonym(selectedElement);
+ }
+ else if(NOT_PROPARTE_SYNONYM.equals(property)){
+ return isNotProparteSynonym(selectedElement);
+ }
else if(NOT_MISAPPLICATION.equals(property)){
return isNotMisapplication(selectedElement);
}
}
public static boolean isMisapplication(Object selectedElement) {
- if(selectedElement instanceof Taxon && ((Taxon) selectedElement).isMisapplication()){
+ if(selectedElement instanceof Taxon && ((Taxon) selectedElement).isMisapplication() ){
return true;
}
return false;
}
+ public static boolean isProparteSynonym(Object selectedElement) {
+ if(selectedElement instanceof Taxon && ((Taxon) selectedElement).isProparteSynonym()){
+ return true;
+ }
+ return false;
+ }
+ public static boolean isNotProparteSynonym(Object selectedElement) {
+ if (selectedElement instanceof Synonym){
+ return true;
+ }
+ if(!((Taxon) selectedElement).isProparteSynonym() ){
+ return true;
+ }
+ return false;
+ }
+
public static boolean isSynonym(Object selectedElement) {
return (selectedElement instanceof Synonym) ? true : false;
}
+ public static boolean isNotSynonym(Object selectedElement) {
+ return !isSynonym(selectedElement);
+ }
public static boolean isAccepted(Object selectedElement) {
- return (selectedElement instanceof Taxon && ! ((Taxon) selectedElement).isMisapplication()) ? true : false;
+ return (selectedElement instanceof Taxon && ! ((Taxon) selectedElement).isMisapplication() && ! ((Taxon) selectedElement).isProparteSynonym()) ? true : false;
}
public static boolean isOrphaned(Object selectedElement) {
class="eu.etaxonomy.taxeditor.navigation.navigator.TaxonNodePropertyTester"
id="eu.etaxonomy.taxeditor.navigation.navigator.navigatorPropertyTester"
namespace="eu.etaxonomy.taxeditor.navigation.navigator.navigatorPropertyTester"
- properties="hasSynonyms, isClassification"
+ properties="hasSynonyms,isClassification"
type="java.lang.Object">
</propertyTester>
</reference>
</and>
</definition>
+ <definition
+ id="isClassification">
+ <test
+ property="eu.etaxonomy.taxeditor.navigation.navigator.TaxonNodePropertyTester.isClassification">
+ </test>
+ </definition>
</extension>
<extension
id="eu.etaxonomy.taxeditor.navigation.workbench.model"