Fixes #2559
authorn.hoffmann <n.hoffmann@localhost>
Wed, 7 Sep 2011 14:25:38 +0000 (14:25 +0000)
committern.hoffmann <n.hoffmann@localhost>
Wed, 7 Sep 2011 14:25:38 +0000 (14:25 +0000)
eu.etaxonomy.taxeditor.editor/plugin.xml
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/NameEditorMenuPropertyTester.java

index 04eb1319b38f433794676ca4025ebc0d03694438..99bef4cf7d14692d4be97fafc7c4ec8273780c2b 100644 (file)
                commandId="eu.etaxonomy.taxeditor.editor.name.changeAcceptedToSynonym"
                label="Change Accepted Taxon to Synonym"
                style="push">
-            <visibleWhen>
+            <visibleWhen
+                  checkEnabled="true">
                <reference
-                     definitionId="isAcceptedTaxon">
+                     definitionId="isAcceptedAndHasNoHomotypicSynonyms">
                </reference>
             </visibleWhen>
          </command>
             </test>
          </with>
       </definition>
+      <definition
+            id="isAcceptedAndHasNoHomotypicSynonyms">
+         <with
+               variable="selection">
+            <test
+                  property="eu.etaxonomy.taxeditor.editor.name.propertyTester.isAcceptedAndHasNoHomotypicSynonyms">
+            </test>
+         </with>
+      </definition>
    </extension>
    <extension
          point="org.eclipse.core.expressions.propertyTesters">
             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,hasEmptyNames"
+            properties="isAcceptedTaxon,isSynonym,isMisapplication,isTaxonBase,hasEmptyNames,isAcceptedAndHasNoHomotypicSynonyms"
             type="org.eclipse.jface.viewers.IStructuredSelection">
       </propertyTester>
       <propertyTester
index b2950fceacc0d24b89d356fb4b4cb9a9ebb32c2d..44c865976a7d0ef6b0fd2df0001e49aad3322525 100644 (file)
@@ -10,9 +10,7 @@
 
 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;
@@ -36,6 +34,7 @@ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.P
        private static final String TAXONBASE = "isTaxonBase";
        private static final String CONCEPT = "isConceptRelation";
        private static final String EMPTY_NAMES = "hasEmptyNames";
+       private static final String ACCEPTED_AND_NO_HOMOTYPIC_SYNONYMS = "isAcceptedAndHasNoHomotypicSynonyms";
        
        /**
         * <p>Constructor for NameEditorMenuPropertyTester.</p>
@@ -74,12 +73,23 @@ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.P
                        else if(EMPTY_NAMES.equals(property)){
                                return hasEmptyNames(receiver);
                        }
+                       else if(ACCEPTED_AND_NO_HOMOTYPIC_SYNONYMS.equals(property)){
+                               return isAcceptedAndHasNoHomotypicSynonyms(selectedElement);
+                       }
                }
                
                return false;
                
        }
 
+       private boolean isAcceptedAndHasNoHomotypicSynonyms(Object selectedElement) {
+               if (isAccepted(selectedElement)){
+                       Taxon taxon = (Taxon) selectedElement;
+                       return taxon.getSynonymsInGroup(taxon.getHomotypicGroup()).isEmpty();
+               }
+               return false;
+       }
+
        /**
         * @param receiver
         * @return