TaxonRelationshipTypeInverseContainer should not inherit from DefinedTermBase and...
authorKatja Luther <k.luther@bgbm.org>
Mon, 20 Jun 2022 08:42:49 +0000 (10:42 +0200)
committerKatja Luther <k.luther@bgbm.org>
Mon, 20 Jun 2022 08:42:49 +0000 (10:42 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/TaxonRelationshipTypeInverseContainer.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/TermManager.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/TermStore.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/InverseTermWrapper.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/RelationshipTypeCombo.java [moved from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/NameRelationshipTypeCombo.java with 80% similarity]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameRelationshipWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonRelationshipDetailElement.java

index 94985cf28277b7d9b9d622c9583447dc4b307d92..694e4e2981fe128a7ca201e5b3d7f72f065fdaf8 100644 (file)
@@ -18,7 +18,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @author n.hoffmann
  * @created Nov 30, 2011
  */
-public class TaxonRelationshipTypeInverseContainer extends DefinedTermBase<DefinedTermBase> {
+public class TaxonRelationshipTypeInverseContainer  {
 
        private static final long serialVersionUID = 7225140304186547675L;
        private boolean inverse;
@@ -50,7 +50,7 @@ public class TaxonRelationshipTypeInverseContainer extends DefinedTermBase<Defin
         * @param language
         * @return representation
         */
-       @Override
+//     @Override
     public Representation getRepresentation(Language language){
                Representation result;
                result = inverse ? type.getInverseRepresentation(language) : type.getRepresentation(language);
@@ -75,12 +75,12 @@ public class TaxonRelationshipTypeInverseContainer extends DefinedTermBase<Defin
         * @param language
         * @return label
         */
-       @Override
+//     @Override
     public String getLabel(Language language){
                return getRepresentation(language).getLabel();
        }
 
-       @Override
+//     @Override
     public String getDescription(Language language){
                return getRepresentation(language).getDescription();
        }
@@ -101,17 +101,17 @@ public class TaxonRelationshipTypeInverseContainer extends DefinedTermBase<Defin
                this.type = type;
        }
 
-       @Override
+//     @Override
        public String getTitleCache() {
                return String.format("%s (%s)", getLabel(CdmStore.getDefaultLanguage()), getAbbreviatedLabel());
        }
 
-       @Override
+//     @Override
        public void resetTerms() {
                throw new NotImplementedException();
        }
 
-       @Override
+//     @Override
        protected void setDefaultTerms(
                        TermVocabulary<DefinedTermBase> termVocabulary) {
                throw new NotImplementedException();
index ee62ebcf5a534b1ae8a9fb50bd07a7f3fb03a525..c84e5f93ba0d67f241405de5481fe66dc96c8384 100644 (file)
@@ -33,6 +33,7 @@ import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
 import eu.etaxonomy.taxeditor.model.DefaultTermComparator;
 import eu.etaxonomy.taxeditor.model.TaxonRelationshipTypeInverseContainer;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.ui.combo.InverseTermWrapper;
 
 /**
  * @author n.hoffmann
@@ -158,12 +159,12 @@ public class TermManager {
                }
 
                for (T term : initialTerms){
-                       if (term instanceof TaxonRelationshipTypeInverseContainer){
-                               if(!PreferencesUtil.getBooleanValue(getPrefName(term), true)){
-                                       T type = (T)((TaxonRelationshipTypeInverseContainer) term).getType();
-                                       filteredTerms.add(type);
-                               }
-                       }
+//                     if (term instanceof InverseTermWrapper){
+//                             if(!PreferencesUtil.getBooleanValue(getPrefName(term), true)){
+//                                     T type = (T)((TaxonRelationshipTypeInverseContainer) term).getType();
+//                                     filteredTerms.add(type);
+//                             }
+//                     }
 
                        if(PreferencesUtil.getBooleanValue(getPrefName(term), true)){
                                filteredTerms.add(term);
index 185c5eefde18b5b81829cc98f11eacd9dd843bf3..9eac9a2a9058a32e66c184f24f0921fd2b789b29 100644 (file)
@@ -216,37 +216,37 @@ public class TermStore {
                                return presenceAbsenceTerms;
                        }
                });
-               termStoreEdgeCases.add(new ITermStoreEdgeCase<TaxonRelationshipTypeInverseContainer>() {
-                       @Override
-                       public Class<TaxonRelationshipTypeInverseContainer> getTermClass() {
-                               return TaxonRelationshipTypeInverseContainer.class;
-                       }
-                       @Override
-                       public List<TaxonRelationshipTypeInverseContainer> getTerms() {
-                               List<TaxonRelationshipType> excludeTaxonRelationshipTypes = Arrays.asList(new TaxonRelationshipType[]{
-                                       TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN(),
-                                       TaxonRelationshipType.MISAPPLIED_NAME_FOR(),
-                                       TaxonRelationshipType.ALL_RELATIONSHIPS()
-                               });
-
-                               List<TaxonRelationshipTypeInverseContainer> relationshipTypeInverseContainers = new ArrayList<>();
-
-                               List<TaxonRelationshipType> relationshipTypes = TermStore.getTerms(TaxonRelationshipType.class);
-
-                               relationshipTypes.removeAll(excludeTaxonRelationshipTypes);
-
-                               for (TaxonRelationshipType relationshipType : relationshipTypes){
-                                       if(!relationshipType.isSymmetric()){
-                                               TaxonRelationshipTypeInverseContainer inverseContainer = new TaxonRelationshipTypeInverseContainer(relationshipType, true);
-                                               relationshipTypeInverseContainers.add(inverseContainer);
-                                       }
-                                       TaxonRelationshipTypeInverseContainer container = new TaxonRelationshipTypeInverseContainer(relationshipType, false);
-                                       relationshipTypeInverseContainers.add(container);
-                               }
-
-                               return relationshipTypeInverseContainers;
-                       }
-               });
+//             termStoreEdgeCases.add(new ITermStoreEdgeCase<TaxonRelationshipTypeInverseContainer>() {
+//                     @Override
+//                     public Class<TaxonRelationshipTypeInverseContainer> getTermClass() {
+//                             return TaxonRelationshipTypeInverseContainer.class;
+//                     }
+//                     @Override
+//                     public List<TaxonRelationshipTypeInverseContainer> getTerms() {
+//                             List<TaxonRelationshipType> excludeTaxonRelationshipTypes = Arrays.asList(new TaxonRelationshipType[]{
+//                                     TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN(),
+//                                     TaxonRelationshipType.MISAPPLIED_NAME_FOR(),
+//                                     TaxonRelationshipType.ALL_RELATIONSHIPS()
+//                             });
+//
+//                             List<TaxonRelationshipTypeInverseContainer> relationshipTypeInverseContainers = new ArrayList<>();
+//
+//                             List<TaxonRelationshipType> relationshipTypes = TermStore.getTerms(TaxonRelationshipType.class);
+//
+//                             relationshipTypes.removeAll(excludeTaxonRelationshipTypes);
+//
+//                             for (TaxonRelationshipType relationshipType : relationshipTypes){
+//                                     if(!relationshipType.isSymmetric()){
+//                                             TaxonRelationshipTypeInverseContainer inverseContainer = new TaxonRelationshipTypeInverseContainer(relationshipType, true);
+//                                             relationshipTypeInverseContainers.add(inverseContainer);
+//                                     }
+//                                     TaxonRelationshipTypeInverseContainer container = new TaxonRelationshipTypeInverseContainer(relationshipType, false);
+//                                     relationshipTypeInverseContainers.add(container);
+//                             }
+//
+//                             return relationshipTypeInverseContainers;
+//                     }
+//             });
        }
 
        private static <T extends DefinedTermBase> ITermStoreEdgeCase<T> getEdgeCase(Class<T> termClass) {
index 7e9b7d938c8fe73aec973b815d6ef5c9051572fc..64e7164a24eb9249d99dd4d6d93edff6f641d23a 100755 (executable)
@@ -12,7 +12,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.name.NameRelationshipType;
+import eu.etaxonomy.cdm.model.common.RelationshipTermBase;
 import eu.etaxonomy.cdm.model.term.Representation;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
@@ -25,12 +25,12 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 public class InverseTermWrapper {
 
     private String label;
-    private NameRelationshipType term;
+    private RelationshipTermBase term;
     boolean isInverse;
 
     boolean useAbbrevLabel;
 
-    InverseTermWrapper(NameRelationshipType term, boolean isInverse, boolean useAbbrevLabel){
+    InverseTermWrapper(RelationshipTermBase term, boolean isInverse, boolean useAbbrevLabel){
         this.term = term;
         this.isInverse = isInverse;
         this.useAbbrevLabel = useAbbrevLabel;
@@ -41,10 +41,10 @@ public class InverseTermWrapper {
         }
     }
 
-    public NameRelationshipType getTerm() {
+    public RelationshipTermBase getTerm() {
         return term;
     }
-    public void setTerm(NameRelationshipType term) {
+    public void setTerm(RelationshipTermBase term) {
         this.term = term;
     }
 
@@ -62,7 +62,7 @@ public class InverseTermWrapper {
         this.isInverse = isInverse;
     }
 
-    private String getInverseLabel(NameRelationshipType term) {
+    private String getInverseLabel(RelationshipTermBase term) {
         if (term == null){
             return "";
         }else{
@@ -97,7 +97,7 @@ public class InverseTermWrapper {
      *            a T object.
      * @return a {@link java.lang.String} object.
      */
-    protected String getLabel(NameRelationshipType term) {
+    protected String getLabel(RelationshipTermBase term) {
         if (term == null){
             return "";
         }else{
similarity index 80%
rename from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/NameRelationshipTypeCombo.java
rename to eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/RelationshipTypeCombo.java
index 040690bae6c202c13608b5b7c962a7ea89527709..eec13b7283ddda945d77d8d69c3745b2f44995d6 100755 (executable)
@@ -18,11 +18,13 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionEvent;
 
 import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.RelationshipTermBase;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermRelationshipType;
 import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -36,12 +38,12 @@ import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
  * @since 08.10.2018
  *
  */
-public class NameRelationshipTypeCombo<T extends InverseTermWrapper> extends AbstractComboElement<T> {
+public class RelationshipTypeCombo<T extends InverseTermWrapper> extends AbstractComboElement<T> {
 
 
    List<InverseTermWrapper> wrapperList = new ArrayList<>();
    T wrapperSelection;
-   List<NameRelationshipType> terms = new ArrayList();
+   List<RelationshipTermBase> terms = new ArrayList();
    boolean useAbbrevLabel;
 
 
@@ -56,14 +58,24 @@ public class NameRelationshipTypeCombo<T extends InverseTermWrapper> extends Abs
      * @param useAbbrevLabel
      * @param comparator
      */
-    public NameRelationshipTypeCombo(CdmFormFactory cdmFormFactory, ICdmFormElement parentElement,
+    public RelationshipTypeCombo(CdmFormFactory cdmFormFactory, ICdmFormElement parentElement, TermType type,
             String labelString,  boolean addEmptyElement, int style, boolean useAbbrevLabel,
             Comparator<T> comparator) {
      super(cdmFormFactory, parentElement);
      // labelString, selection, addEmptyElement, style,  comparator
      
-     String availableTypes = PreferencesUtil.getStringValue(PreferencePredicate.AvailableNameRelationshipType.getKey());
-     List<NameRelationshipType> relTypes = CdmStore.getTermManager().createTermListFromString(availableTypes, TermType.NameRelationshipType);
+     String availableTypes;
+     List<RelationshipTermBase> relTypes;
+     if (TermType.TaxonRelationshipType.equals(type )) {
+        availableTypes = PreferencesUtil.getStringValue(PreferencePredicate.ConceptRelationshipType.getKey());
+        relTypes = CdmStore.getTermManager().createTermListFromString(availableTypes, TermType.TaxonRelationshipType);
+     }else if (TermType.NameRelationshipType.equals(type)) {
+        availableTypes = PreferencesUtil.getStringValue(PreferencePredicate.AvailableNameRelationshipType.getKey());
+        relTypes = CdmStore.getTermManager().createTermListFromString(availableTypes, TermType.NameRelationshipType);
+     }else {
+//this should not happen.
+        return;
+     }
      
 //     terms = getTermManager().getPreferredTerms(TermType.NameRelationshipType);
      
@@ -115,7 +127,7 @@ public class NameRelationshipTypeCombo<T extends InverseTermWrapper> extends Abs
      *
      */
     private void fillInverseTermWrapperList() {
-        for (NameRelationshipType term: terms){
+        for (RelationshipTermBase term: terms){
             wrapperList.add(new InverseTermWrapper(term, false, useAbbrevLabel));
             List<Language> languages = new ArrayList();
             languages.add(CdmStore.getDefaultLanguage());
index 52a766c3cd4c3c98965ed0830f96f95d34a6c1d5..f218b2c3f2e65523ae91944a924164297a55302f 100755 (executable)
@@ -131,6 +131,7 @@ import eu.etaxonomy.cdm.model.term.TermBase;
 import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.term.TermVocabulary;
+import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
 import eu.etaxonomy.cdm.persistence.dto.FeatureStateDto;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
@@ -141,7 +142,7 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
 import eu.etaxonomy.taxeditor.ui.combo.InverseTermWrapper;
 import eu.etaxonomy.taxeditor.ui.combo.MisappliedRelationshipComboElement;
-import eu.etaxonomy.taxeditor.ui.combo.NameRelationshipTypeCombo;
+import eu.etaxonomy.taxeditor.ui.combo.RelationshipTypeCombo;
 import eu.etaxonomy.taxeditor.ui.combo.VocabularyComboElement;
 import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.dialog.CloneClassificationDetailElement;
@@ -681,6 +682,13 @@ public class CdmFormFactory extends FormToolkit {
         parentElement.addElement(element);
         return element;
     }
+    
+    public RepresentationElement createRepresentationElement(ICdmFormElement parentElement, Representation representation, AbstractTermDto term,int textHeight, int style, boolean fillDetails) {
+        RepresentationElement element = new RepresentationElement(this, parentElement, representation, term, textHeight, style, fillDetails);
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
     /**
      * createMultiLanguageTextElement
@@ -706,7 +714,7 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
-    public TranslatableRepresentationElement createTranslatableRepresentationElementDto(ICdmFormElement parentElement, Representation representation, TermDto term,int textHeight, int style, boolean fillDetails) {
+    public TranslatableRepresentationElement createTranslatableRepresentationElementDto(ICdmFormElement parentElement, Representation representation, AbstractTermDto term,int textHeight, int style, boolean fillDetails) {
         TranslatableRepresentationElement element = new TranslatableRepresentationElement(this, parentElement, representation, term, textHeight, style, fillDetails);
         adapt(element);
         parentElement.addElement(element);
@@ -1161,13 +1169,25 @@ public class CdmFormFactory extends FormToolkit {
                }
            }
 
-       public NameRelationshipTypeCombo createNameRelationshipTypeCombo(ICdmFormElement parentElement,
+       public RelationshipTypeCombo createNameRelationshipTypeCombo(ICdmFormElement parentElement,
             String labelString,
             int style,
             boolean useAbbrevLabel,
             Comparator<NameRelationshipType> comparator) {
 
-        NameRelationshipTypeCombo<InverseTermWrapper> element = new NameRelationshipTypeCombo(this, parentElement, labelString, true, style, useAbbrevLabel, comparator);
+        RelationshipTypeCombo<InverseTermWrapper> element = new RelationshipTypeCombo(this, parentElement, TermType.NameRelationshipType, labelString, true, style, useAbbrevLabel, comparator);
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
+       
+       public RelationshipTypeCombo createTaxonRelationshipTypeCombo(ICdmFormElement parentElement,
+            String labelString,
+            int style,
+            boolean useAbbrevLabel,
+            Comparator<TaxonRelationshipType> comparator) {
+
+        RelationshipTypeCombo<InverseTermWrapper> element = new RelationshipTypeCombo(this, parentElement, TermType.TaxonRelationshipType, labelString, true, style, useAbbrevLabel, comparator);
         adapt(element);
         parentElement.addElement(element);
         return element;
index 8c7da76bc953d09f2f2c66817a8000cc071ba638..e8729b142a288192ac448261363493dde09cef89 100644 (file)
@@ -13,12 +13,14 @@ import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
 
+import eu.etaxonomy.cdm.model.common.RelationshipTermBase;
 import eu.etaxonomy.cdm.model.name.NameRelationship;
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;
 import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.cdm.model.term.TermRelationshipType;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.ui.AbstractEntityCollectionElementWizardPage;
-import eu.etaxonomy.taxeditor.ui.combo.NameRelationshipTypeCombo;
+import eu.etaxonomy.taxeditor.ui.combo.RelationshipTypeCombo;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
@@ -35,11 +37,11 @@ public class NameRelationshipWizardPage extends AbstractEntityCollectionElementW
 
        private EntitySelectionElement<TaxonName> selection_relatedTo;
 
-       private NameRelationshipTypeCombo combo_relationshipType;
+       private RelationshipTypeCombo combo_relationshipType;
 
        private final TaxonName entity;
 
-       private NameRelationshipType type;
+       private RelationshipTermBase type;
 
        private TaxonName relatedName;
        boolean inverse;
@@ -98,9 +100,9 @@ public class NameRelationshipWizardPage extends AbstractEntityCollectionElementW
        public NameRelationship getNameRelationship() {
            NameRelationship rel;
            if (inverse){
-               rel = entity.addRelationshipFromName(relatedName, type, null, null, null, null);
+               rel = entity.addRelationshipFromName(relatedName, (NameRelationshipType)type, null, null, null, null);
            }else{
-               rel = entity.addRelationshipToName(relatedName, type, null, null, null, null);
+               rel = entity.addRelationshipToName(relatedName, (NameRelationshipType)type, null, null, null, null);
            }
            return rel;
        }
index 3862e0bf983f2c0b1d26d88077049cca58b2e5db..8828f664a3b72841739cae9d938bb9d8b608303d 100644 (file)
@@ -8,17 +8,24 @@
 */
 package eu.etaxonomy.taxeditor.ui.section.taxon;
 
+import java.util.Comparator;
+
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.SWT;
 
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
+import eu.etaxonomy.cdm.model.term.TermRelationshipType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.event.EventUtility;
 import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
 import eu.etaxonomy.taxeditor.model.TaxonRelationshipTypeInverseContainer;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.combo.InverseTermWrapper;
 import eu.etaxonomy.taxeditor.ui.combo.MisappliedRelationshipComboElement;
+import eu.etaxonomy.taxeditor.ui.combo.RelationshipTypeCombo;
 import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
@@ -37,18 +44,14 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
  */
 public class TaxonRelationshipDetailElement extends AbstractSingleSourceElement<TaxonRelationship> {//TODO: use AbstractSingleSourcedElement
 
-       private TermComboElement<TaxonRelationshipTypeInverseContainer> combo_taxonRelationshipType;
+       private RelationshipTypeCombo<InverseTermWrapper> combo_taxonRelationshipType;
        private MisappliedRelationshipComboElement combo_misappliedRelationshipType;
 
        private EntitySelectionElement<Taxon> selection_relatedTaxon;
        private CheckboxElement checkBoxDoubtful;
        protected ToggleableTextElement toggleable_cache;
-//     private  EntitySelectionElement<Reference> secReference;
        private  EntitySelectionElement<Reference> sensuReference;
        private TextWithLabelElement text_sensu_microreference;
-
-//     private TextWithLabelElement text_secundum_microreference;
-
        private TextWithLabelElement text_appendedPhrase;
 
     private CheckboxElement checkbox_published;
@@ -184,11 +187,13 @@ public class TaxonRelationshipDetailElement extends AbstractSingleSourceElement<
             checkBoxDoubtful = formFactory.createCheckbox(formElement, "Syn. Doubtful", entity.isDoubtful(), style);
 
         }else{
-            combo_taxonRelationshipType = formFactory.createTermComboElement(
-                    TaxonRelationshipTypeInverseContainer.class,
-                    formElement, "Relationship Type",
-                    getTaxonRelationshipTypeInverseContainer(), style);
-
+            combo_taxonRelationshipType = formFactory.createTaxonRelationshipTypeCombo(
+                       formElement,
+                    "Relationship Type",
+                    style,
+                    false,
+                    null);
             combo_taxonRelationshipType.setEnabled(false);
             selection_relatedTaxon = formFactory.createSelectionElement(
                     Taxon.class, //getConversationHolder(),
@@ -213,18 +218,12 @@ public class TaxonRelationshipDetailElement extends AbstractSingleSourceElement<
        @Override
        public void handleEvent(Object eventSource) {
                if (getEntity().getType().isAnyMisappliedName() || getEntity().getType().isAnySynonym()){
-                       /* if (eventSource == secReference) {
-                               getEntity().setCitation(secReference.getSelection());
-                       } else if (eventSource == text_secundum_microreference) {
-                               getEntity().setCitationMicroReference(text_secundum_microreference.getText());
-                       }  else
-                          */
-                           if (eventSource == text_sensu_microreference) {
+                   if (eventSource == text_sensu_microreference) {
                        taxon.setSecMicroReference(text_sensu_microreference.getText());
                        } else if (eventSource == sensuReference) {
                                taxon.setSec(sensuReference.getSelection());
                        } else if (eventSource == combo_taxonRelationshipType ) {
-                           getEntity().setType(combo_taxonRelationshipType.getSelection().getType());
+                           getEntity().setType((TaxonRelationshipType) combo_taxonRelationshipType.getSelection().getTerm());
                        } else if ( eventSource == combo_misappliedRelationshipType) {
                 getEntity().setType(combo_misappliedRelationshipType.getSelection());
             } else if (eventSource == text_appendedPhrase) {