do not provide menu item change synonym to accepted taxon for homotyp. synonym of...
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / name / handler / NameEditorMenuPropertyTester.java
index 73c2f94d0eeb09e1a0c80aa04ed91d2a75adbd4c..5c7ca9a444c804c7227f318ce0a71990876edc87 100644 (file)
@@ -35,6 +35,8 @@ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.P
        private static final String CONCEPT = "isConceptRelation";
        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";
+       
 
        /**
         * <p>Constructor for NameEditorMenuPropertyTester.</p>
@@ -76,7 +78,10 @@ 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)){
+                               return isNotHomotypicSynonymOfAcceptedTaxon(selectedElement);
                        }
+                       
                }
 
                return false;
@@ -90,6 +95,19 @@ public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.P
                }
                return false;
        }
+       
+       private boolean isNotHomotypicSynonymOfAcceptedTaxon(Object selectedElement) {
+               if (isSynonym(selectedElement)){
+                       Synonym synonym = (Synonym) selectedElement;
+                       for (Taxon taxon:synonym.getAcceptedTaxa()){
+                               if (taxon.getHomotypicGroup().equals(synonym.getHomotypicGroup())){
+                                       return false;
+                               }
+                       }
+               }
+               return true;
+       }
+
 
        /**
         * @param receiver