- implemented and added recommended modifier section to Feature DetailView (#4448)
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / description / ModifierElement.java
index 6aaa67b9a9cef02bd952680ee08912769edd0bfc..a213340408c8588c0322f01c6a7eafb8615c3ea5 100644 (file)
 
 package eu.etaxonomy.taxeditor.ui.section.description;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.description.StateData;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
@@ -41,7 +47,7 @@ public class ModifierElement extends AbstractEntityCollectionElement<DefinedTerm
         * @param style a int.
         */
        public ModifierElement(CdmFormFactory formFactory,
-                       AbstractFormSection section, DefinedTerm entity,
+                       AbstractFormSection<?> section, DefinedTerm entity,
                        SelectionListener removeListener, int style) {
                super(formFactory, section, entity, removeListener, null, style);
        }
@@ -50,7 +56,21 @@ public class ModifierElement extends AbstractEntityCollectionElement<DefinedTerm
        @Override
        public void setEntity(DefinedTerm entity) {
                this.entity = entity;
-               combo_modifier.setSelection(entity);
+               if(getParentElement() instanceof ModifierSection){
+                   ModifierSection parentSection = (ModifierSection) getParentElement();
+                   if(parentSection.getEntity() instanceof StateData){
+                       StateData stateData = (StateData) parentSection.getEntity();
+                       List<DefinedTerm> modifierTerms = new ArrayList<DefinedTerm>();
+                       Set<TermVocabulary<DefinedTerm>> recommendedModifierEnumeration = stateData.getCategoricalData().getFeature().getRecommendedModifierEnumeration();
+                       for (TermVocabulary<DefinedTerm> termVocabulary : recommendedModifierEnumeration) {
+                           modifierTerms.addAll(termVocabulary.getTerms());
+                       }
+                       combo_modifier.setTerms(modifierTerms);
+                   }
+               }
+        if(entity.getId()>0){
+            combo_modifier.setSelection(entity);
+        }
        }
 
        /** {@inheritDoc} */
@@ -62,6 +82,17 @@ public class ModifierElement extends AbstractEntityCollectionElement<DefinedTerm
        /** {@inheritDoc} */
        @Override
        public void handleEvent(Object eventSource) {
-
+           if(eventSource==combo_modifier){
+               if(getParentElement() instanceof ModifierSection){
+                   ModifierSection parentSection = (ModifierSection) getParentElement();
+                   if((parentSection).getEntity() instanceof StateData){
+                       StateData stateData = (StateData) parentSection.getEntity();
+                       stateData.removeModifier(entity);
+                       DefinedTerm term = combo_modifier.getSelection();
+                       stateData.addModifier(term);
+                       entity = term;
+                   }
+               }
+           }
        }
 }