- initially expand modifier section if modifiers exist #4448
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / description / ModifierElement.java
index 22aaa02c7891eba67946c58ee9e9a584e54af879..8b3219d888f034502206e4d8120d2d0713ec1404 100644 (file)
@@ -1,23 +1,32 @@
 // $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.ui.section.description;
 
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
 import org.eclipse.swt.events.SelectionListener;
 
-import eu.etaxonomy.cdm.model.description.Modifier;
+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.cdm.model.description.StatisticalMeasurementValue;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
-import eu.etaxonomy.taxeditor.ui.section.campanula.compatibility.ICdmFormElement;
 
 /**
  * <p>ModifierElement class.</p>
@@ -26,9 +35,9 @@ import eu.etaxonomy.taxeditor.ui.section.campanula.compatibility.ICdmFormElement
  * @created Sep 15, 2010
  * @version 1.0
  */
-public class ModifierElement extends AbstractEntityCollectionElement<Modifier> {
-       
-       private TermComboElement<Modifier> combo_modifier;
+public class ModifierElement extends AbstractEntityCollectionElement<DefinedTerm> {
+
+       private TermComboElement<DefinedTerm> combo_modifier;
 
        /**
         * <p>Constructor for ModifierElement.</p>
@@ -40,27 +49,57 @@ public class ModifierElement extends AbstractEntityCollectionElement<Modifier> {
         * @param style a int.
         */
        public ModifierElement(CdmFormFactory formFactory,
-                       AbstractFormSection section, Modifier entity,
+                       AbstractFormSection<?> section, DefinedTerm entity,
                        SelectionListener removeListener, int style) {
                super(formFactory, section, entity, removeListener, null, style);
        }
-       
+
        /** {@inheritDoc} */
        @Override
-       public void setEntity(Modifier entity) {
+       public void setEntity(DefinedTerm entity) {
                this.entity = entity;
-               combo_modifier.setSelection(entity);
+               if(getParentElement() instanceof ModifierSection){
+                   ModifierSection parentSection = (ModifierSection) getParentElement();
+                   List<DefinedTerm> modifierTerms = new ArrayList<DefinedTerm>();
+            Set<TermVocabulary<DefinedTerm>> recommendedModifierEnumeration = new HashSet<TermVocabulary<DefinedTerm>>();
+                   if(parentSection.getEntity() instanceof StateData){
+                       StateData stateData = (StateData) parentSection.getEntity();
+                       recommendedModifierEnumeration = stateData.getCategoricalData().getFeature().getRecommendedModifierEnumeration();
+                   }
+                   if(parentSection.getEntity() instanceof StatisticalMeasurementValue){
+                       StatisticalMeasurementValue statisticalMeasurementValue = (StatisticalMeasurementValue)parentSection.getEntity();
+                       recommendedModifierEnumeration = statisticalMeasurementValue.getQuantitativeData().getFeature().getRecommendedModifierEnumeration();
+                   }
+                   for (TermVocabulary<DefinedTerm> termVocabulary : recommendedModifierEnumeration) {
+                       modifierTerms.addAll(termVocabulary.getTerms());
+                   }
+                   combo_modifier.setTerms(modifierTerms);
+               }
+        if(entity.getId()>0){
+            combo_modifier.setSelection(entity);
+        }
        }
 
        /** {@inheritDoc} */
        @Override
        public void createControls(ICdmFormElement element, int style) {
-               combo_modifier = formFactory.createTermComboElement(Modifier.class, element, "Modifier", getEntity(), style);
+               combo_modifier = formFactory.createDefinedTermComboElement(TermType.Modifier, element, "Modifier", getEntity(), false, style);
        }
 
        /** {@inheritDoc} */
        @Override
        public void handleEvent(Object eventSource) {
-               
+           if(eventSource==combo_modifier && combo_modifier.getSelection()!=null){
+               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;
+                   }
+               }
+           }
        }
 }