-// $Id$
/**
* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
+* 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.expressions.PropertyTester;
import org.eclipse.jface.viewers.IStructuredSelection;
+import eu.etaxonomy.cdm.model.common.CdmBase;
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;
+import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
+import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
+import eu.etaxonomy.taxeditor.event.EventUtility;
+import eu.etaxonomy.taxeditor.store.CdmStore;
/**
* <p>NameEditorMenuPropertyTester class.</p>
* @created Jun 22, 2010
* @version 1.0
*/
-public class NameEditorMenuPropertyTester extends org.eclipse.core.expressions.PropertyTester {
-
- 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";
- private static final String ACCEPTED_AND_NO_HOMOTYPIC_SYNONYMS = "isAcceptedAndHasNoHomotypicSynonyms";
-
+public class NameEditorMenuPropertyTester extends PropertyTester {
+
+ private static final String ACCEPTED = "isAcceptedTaxon"; //$NON-NLS-1$
+ private static final String SYNONYM = "isSynonym"; //$NON-NLS-1$
+ private static final String MISAPPLICATION = "isMisapplication"; //$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$
+ private static final String ACCEPTED_AND_NO_HOMOTYPIC_SYNONYMS = "isAcceptedAndHasNoHomotypicSynonyms"; //$NON-NLS-1$
+ private static final String NOT_HOMOTYPIC_SYNONYM_OF_ACCEPTED = "isNotHomotypicSynonymOfAcceptedTaxon"; //$NON-NLS-1$
+ private static final String SYNONYM_WITH_HOMOTYPIC_SYNONYMS = "isSynonymInHomotypicalGroupWithMoreSynonyms"; //$NON-NLS-1$
+ private static final String IS_ORPHANED = "isOrphaned"; //$NON-NLS-1$
+
/**
* <p>Constructor for NameEditorMenuPropertyTester.</p>
*/
public NameEditorMenuPropertyTester() {
}
- /* (non-Javadoc)
- * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
- */
/** {@inheritDoc} */
- public boolean test(Object receiver, String property, Object[] args,
+ @Override
+ public boolean test(Object receiver, String property, Object[] args,
Object expectedValue) {
-
+
if(receiver instanceof IStructuredSelection){
-
+
IStructuredSelection selection = (IStructuredSelection) receiver;
-
+
Object selectedElement = selection.getFirstElement();
-
- System.out.println(selectedElement);
- System.out.println(property);
+ if(selectedElement instanceof UuidAndTitleCache){
+ UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache<?>)selectedElement;
+ CdmBase cdmBase = CdmStore.getCommonService().find(uuidAndTitleCache.getType(), uuidAndTitleCache.getUuid());
+ selectedElement = cdmBase;
+ }
+
if(ACCEPTED.equals(property)){
return isAccepted(selectedElement);
}
else if(SYNONYM.equals(property)){
- System.out.println(isSynonym(selectedElement));
return isSynonym(selectedElement);
}
else if(MISAPPLICATION.equals(property)){
else if(ACCEPTED_AND_NO_HOMOTYPIC_SYNONYMS.equals(property)){
return isAcceptedAndHasNoHomotypicSynonyms(selectedElement);
}
+ else if (NOT_HOMOTYPIC_SYNONYM_OF_ACCEPTED.equals(property)){
+ return isNotHomotypicSynonymOfAcceptedTaxon(selectedElement);
+ }
+ else if (SYNONYM_WITH_HOMOTYPIC_SYNONYMS.equals(property)){
+ return isSynonymInHomotypicalGroupWithMoreSynonyms(selectedElement);
+ }
+ else if (IS_ORPHANED.equals(property)){
+ return isOrphaned(selectedElement);
+ }
+
}
-
+
return false;
-
+
}
- private boolean isAcceptedAndHasNoHomotypicSynonyms(Object selectedElement) {
+ public static boolean isAcceptedAndHasNoHomotypicSynonyms(Object selectedElement) {
if (isAccepted(selectedElement)){
Taxon taxon = (Taxon) selectedElement;
return taxon.getSynonymsInGroup(taxon.getHomotypicGroup()).isEmpty();
return false;
}
+ public static boolean isSynonymInHomotypicalGroupWithMoreSynonyms(Object selectedElement) {
+ if (isSynonym(selectedElement)){
+ Synonym synonym = (Synonym) selectedElement;
+ return synonym.getHomotypicGroup().getTypifiedNames().size()>1;
+ }
+ return false;
+ }
+
+
+ public static boolean isNotHomotypicSynonymOfAcceptedTaxon(Object selectedElement) {
+ if (isSynonym(selectedElement)){
+ Synonym synonym = (Synonym) selectedElement;
+ Taxon taxon = synonym.getAcceptedTaxon();
+ if (taxon != null &&
+ taxon.getHomotypicGroup().equals(synonym.getHomotypicGroup())){
+ return false;
+ }
+ }
+ return true;
+ }
+
+
/**
* @param receiver
* @return
*/
- private boolean hasEmptyNames(Object receiver) {
- TaxonNameEditor editor = (TaxonNameEditor) EditorUtil.getActiveEditorPage(Page.NAME);
+ public static boolean hasEmptyNames(Object receiver) {
+ TaxonNameEditorE4 editor = (TaxonNameEditorE4) EventUtility.getEditor();
return editor == null ? false : editor.checkForEmptyNames();
}
- private boolean isRelatedConcept(Object selectedElement) {
+ public static boolean isRelatedConcept(Object selectedElement) {
if(selectedElement instanceof Taxon && ((Taxon) selectedElement).isRelatedConcept()){
return true;
}
return false;
}
- private boolean isTaxonBase(Object selectedElement) {
+ public static boolean isTaxonBase(Object selectedElement) {
return (selectedElement instanceof TaxonBase) ? true : false;
}
- private boolean isMisapplication(Object selectedElement) {
+ public static boolean isMisapplication(Object selectedElement) {
if(selectedElement instanceof Taxon && ((Taxon) selectedElement).isMisapplication()){
return true;
}
return false;
}
- private boolean isSynonym(Object selectedElement) {
- System.out.println("isSynonym...." + selectedElement);
+ public static boolean isSynonym(Object selectedElement) {
return (selectedElement instanceof Synonym) ? true : false;
}
- private boolean isAccepted(Object selectedElement) {
+ public static boolean isAccepted(Object selectedElement) {
return (selectedElement instanceof Taxon && ! ((Taxon) selectedElement).isMisapplication()) ? true : false;
}
+
+ public static boolean isOrphaned(Object selectedElement) {
+ if(selectedElement instanceof Taxon){
+ return ((Taxon) selectedElement).isOrphaned();
+ }
+ else if(selectedElement instanceof Synonym){
+ return ((Synonym) selectedElement).isOrphaned();
+ }
+ return false;
+ }
}