- implemented and added recommended modifier section to Feature DetailView (#4448)
authorPatric Plitzner <p.plitzner@bgbm.org>
Wed, 29 Apr 2015 14:35:40 +0000 (14:35 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Wed, 29 Apr 2015 14:35:40 +0000 (14:35 +0000)
.gitattributes
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/description/ModifierElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateModifierElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/FeatureDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateModifierCollectionSection.java [new file with mode: 0644]

index 5e0485cf4d3b9ea43c9e4f0ba7892c3bf89c4f16..be12c222ccb1990b8f2860525d023cdfb329b6e1 100644 (file)
@@ -1571,6 +1571,7 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/des
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ScopeSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateModifierElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StatisticalMeasurementValueElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StatisticalMeasurementValueSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/AbstractDetailedDescriptionDetailElement.java -text
@@ -1762,6 +1763,7 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/voc
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/NamedAreaDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/NamedAreaDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/NamedAreaLevelDetailSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateModifierCollectionSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateVocabularyCollectionElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateVocabularyCollectionSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StatisticalMeasureCollectionElement.java -text
index 3e88fdacdf8b5cf23b81c2b4acb0329567810a48..4ee7621855b16adfed95c108413bb2c80ee35872 100644 (file)
@@ -150,6 +150,7 @@ import eu.etaxonomy.taxeditor.ui.section.description.ScopeElement;
 import eu.etaxonomy.taxeditor.ui.section.description.ScopeSection;
 import eu.etaxonomy.taxeditor.ui.section.description.StateDataElement;
 import eu.etaxonomy.taxeditor.ui.section.description.StateDataSection;
+import eu.etaxonomy.taxeditor.ui.section.description.StateModifierElement;
 import eu.etaxonomy.taxeditor.ui.section.description.StatisticalMeasurementValueElement;
 import eu.etaxonomy.taxeditor.ui.section.description.StatisticalMeasurementValueSection;
 import eu.etaxonomy.taxeditor.ui.section.description.detail.AbstractDetailedDescriptionDetailElement;
@@ -312,6 +313,7 @@ import eu.etaxonomy.taxeditor.ui.section.vocabulary.FeatureDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.vocabulary.MeasurementUnitCollectionElement;
 import eu.etaxonomy.taxeditor.ui.section.vocabulary.MeasurementUnitCollectionSection;
 import eu.etaxonomy.taxeditor.ui.section.vocabulary.NamedAreaDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.vocabulary.StateModifierCollectionSection;
 import eu.etaxonomy.taxeditor.ui.section.vocabulary.StateVocabularyCollectionElement;
 import eu.etaxonomy.taxeditor.ui.section.vocabulary.StateVocabularyCollectionSection;
 import eu.etaxonomy.taxeditor.ui.section.vocabulary.StatisticalMeasureCollectionElement;
@@ -2317,12 +2319,18 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
+    public StateModifierCollectionSection createStateModifierCollectionSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+        StateModifierCollectionSection section = new StateModifierCollectionSection(this, conversation, parentElement, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
     public MeasurementUnitCollectionSection createMeasurementUnitCollectionSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
         MeasurementUnitCollectionSection section = new MeasurementUnitCollectionSection(this, conversation, parentElement, style);
         addAndAdaptSection(parentElement, section);
         return section;
     }
-    
+
     public StatisticalMeasureCollectionSection createStatisticalMeasureCollectionSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
         StatisticalMeasureCollectionSection section = new StatisticalMeasureCollectionSection(this, conversation, parentElement, style);
         addAndAdaptSection(parentElement, section);
@@ -2485,8 +2493,6 @@ public class CdmFormFactory extends FormToolkit {
                         style);
                 break;
             default:
-                //FIXME : Actually we should through an exception here
-                element = null;
                 break;
 
             }
@@ -2561,7 +2567,17 @@ public class CdmFormFactory extends FormToolkit {
                 element = new IdentifierDetailElement(this, parentElement, (Identifier) entity, removeListener, style);
             }
         } else if (entity instanceof TermVocabulary) {
-            element = new StateVocabularyCollectionElement(this, parentElement, (TermVocabulary<State>) entity, removeListener, backgroundColor, style);
+            TermVocabulary<?> termVocabulary = (TermVocabulary<?>)entity;
+            switch (termVocabulary.getTermType()) {
+            case State:
+                element = new StateVocabularyCollectionElement(this, parentElement, (TermVocabulary<State>) entity, removeListener, backgroundColor, style);
+                break;
+            case Modifier:
+                element = new StateModifierElement(this, parentElement, (TermVocabulary<DefinedTerm>) entity, removeListener, backgroundColor, style);
+                break;
+            default:
+                break;
+            }
         } else if (entity instanceof MeasurementUnit) {
             element = new MeasurementUnitCollectionElement(this, parentElement, (MeasurementUnit) entity, removeListener, backgroundColor, style);
         } else if (entity instanceof StatisticalMeasure) {
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;
+                   }
+               }
+           }
        }
 }
index 686da6260d15741a9040fe0b380f9122263f4c8e..b5359b7c0e7230ad598334a0ad60fde9be282331 100644 (file)
@@ -1,9 +1,9 @@
 // $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.
 */
@@ -18,7 +18,7 @@ import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.description.IModifiable;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AbstractUnboundEntityCollectionSection;
 
 /**
  * <p>ModifierSection class.</p>
@@ -27,7 +27,7 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
  * @created Sep 15, 2010
  * @version 1.0
  */
-public class ModifierSection extends AbstractEntityCollectionSection<IModifiable, DefinedTerm> {
+public class ModifierSection extends AbstractUnboundEntityCollectionSection<IModifiable, DefinedTerm> {
 
        /**
         * <p>Constructor for ModifierSection.</p>
@@ -42,17 +42,11 @@ public class ModifierSection extends AbstractEntityCollectionSection<IModifiable
                        int style) {
                super(formFactory, conversation, parentElement, "Modifiers", style);
        }
-       
-       /** {@inheritDoc} */
-       @Override
-       public Collection<DefinedTerm> getCollection(IModifiable entity) {
-               return entity.getModifiers();
-       }
 
        /** {@inheritDoc} */
        @Override
-       public DefinedTerm createNewElement() {         
-               return DefinedTerm.NewInstance(TermType.Modifier,"","Untitled","");                             
+       public DefinedTerm createNewElement() {
+               return DefinedTerm.NewInstance(TermType.Modifier,"","Untitled","");
        }
 
        /** {@inheritDoc} */
@@ -78,4 +72,12 @@ public class ModifierSection extends AbstractEntityCollectionSection<IModifiable
        protected String getTooltipString() {
                return "Add a modifier.";
        }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AbstractUnboundEntityCollectionSection#getEntityCollection(java.lang.Object)
+     */
+    @Override
+    protected Collection<DefinedTerm> getEntityCollection(IModifiable entity) {
+        return entity.getModifiers();
+    }
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateModifierElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateModifierElement.java
new file mode 100644 (file)
index 0000000..34a7893
--- /dev/null
@@ -0,0 +1,77 @@
+// $Id$
+/**
+* Copyright (C) 2015 EDIT
+* 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 org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+
+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.Feature;
+import eu.etaxonomy.taxeditor.ui.combo.VocabularyComboElement;
+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.vocabulary.StateModifierCollectionSection;
+
+/**
+ * @author pplitzner
+ * @date Apr 27, 2015
+ *
+ */
+public class StateModifierElement extends AbstractEntityCollectionElement<TermVocabulary<DefinedTerm>> {
+
+
+    private VocabularyComboElement<DefinedTerm, TermVocabulary<DefinedTerm>> comboStateVocabulary;
+
+    /**
+     * @param formFactory
+     * @param section
+     * @param entity
+     * @param removeListener
+     * @param isChoosableEntity
+     * @param backgroundColor
+     * @param style
+     */
+    public StateModifierElement(CdmFormFactory formFactory, AbstractFormSection section, TermVocabulary<DefinedTerm> entity,
+            SelectionListener removeListener, Color backgroundColor, int style) {
+        super(formFactory, section, entity, removeListener, false, backgroundColor, style);
+
+    }
+
+    @Override
+    public void createControls(ICdmFormElement element, int style) {
+        comboStateVocabulary = formFactory.createVocabularyComboElement(TermType.Modifier, "State modifiers", null, element, style);
+    }
+
+    @Override
+    public void setEntity(TermVocabulary<DefinedTerm> entity) {
+        this.entity = entity;
+        if(entity.getId()!=0){
+            comboStateVocabulary.setSelection(entity);
+        }
+    }
+
+    @Override
+    public void handleEvent(Object eventSource) {
+        if(eventSource==comboStateVocabulary && comboStateVocabulary.getSelection()!=null){
+            if(getParentElement() instanceof StateModifierCollectionSection){
+                Feature feature = ((StateModifierCollectionSection) getParentElement()).getEntity();
+                feature.removeRecommendedModifierEnumeration(entity);
+                TermVocabulary<DefinedTerm> vocabulary = comboStateVocabulary.getSelection();
+                feature.addRecommendedModifierEnumeration(vocabulary);
+                entity = vocabulary;
+            }
+        }
+    }
+
+}
index a997eb256a53de87fd5b8bfc535306f93089eaf6..5bbd72f7fd7b390df49d7462bc480946bbbe2c6a 100644 (file)
@@ -46,6 +46,8 @@ public class FeatureDetailElement extends DefinedTermDetailElement<Feature> {
 \r
     private StatisticalMeasureCollectionSection sectionStatisticalMeasures;\r
 \r
+    private StateModifierCollectionSection sectionStateModifiers;;\r
+\r
     /**\r
         * @param formFactory\r
         * @param formElement\r
@@ -74,6 +76,10 @@ public class FeatureDetailElement extends DefinedTermDetailElement<Feature> {
             sectionStateVocabularies = formFactory.createStateVocabulariesSection(getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);\r
             sectionStateVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
             sectionStateVocabularies.setEntity(getEntity());\r
+\r
+            sectionStateModifiers = formFactory.createStateModifierCollectionSection(getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);\r
+            sectionStateModifiers.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
+            sectionStateModifiers.setEntity(getEntity());\r
         }\r
         if(supportsQuantitativeData.getSelection()){\r
             sectionMeasurementUnits = formFactory.createMeasurementUnitCollectionSection(getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);\r
@@ -128,10 +134,15 @@ public class FeatureDetailElement extends DefinedTermDetailElement<Feature> {
                    sectionStateVocabularies = formFactory.createStateVocabulariesSection(getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);\r
                    sectionStateVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
                    sectionStateVocabularies.setEntity(getEntity());\r
+\r
+                   sectionStateModifiers = formFactory.createStateModifierCollectionSection(getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);\r
+                   sectionStateModifiers.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
+                   sectionStateModifiers.setEntity(getEntity());\r
                }\r
                else{\r
                    if(sectionStateVocabularies!=null){\r
                        removeElementsAndControls(sectionStateVocabularies);\r
+                       removeElementsAndControls(sectionStateModifiers);\r
                    }\r
                }\r
            }\r
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateModifierCollectionSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateModifierCollectionSection.java
new file mode 100644 (file)
index 0000000..c8ba3aa
--- /dev/null
@@ -0,0 +1,90 @@
+// $Id$
+/**
+* Copyright (C) 2015 EDIT
+* 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.vocabulary;
+
+import java.util.Collection;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+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.Feature;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AbstractUnboundEntityCollectionSection;
+
+/**
+ * @author pplitzner
+ * @date Apr 27, 2015
+ *
+ */
+public class StateModifierCollectionSection extends AbstractUnboundEntityCollectionSection<Feature, TermVocabulary<DefinedTerm>> {
+
+    public StateModifierCollectionSection(CdmFormFactory formFactory,
+            ConversationHolder conversation, ICdmFormElement parentElement, int style) {
+        super(formFactory, conversation, parentElement, "Recommended state modifier", style);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AbstractNullEntityCollectionSection#getEntityCollection(java.lang.Object)
+     */
+    /** {@inheritDoc} */
+    @Override
+    protected Collection<TermVocabulary<DefinedTerm>> getEntityCollection(Feature entity) {
+        return entity.getRecommendedModifierEnumeration();
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection#createNewElement()
+     */
+    /** {@inheritDoc} */
+    @Override
+    public TermVocabulary<DefinedTerm> createNewElement() {
+        return TermVocabulary.NewInstance(TermType.Modifier);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#addElement(eu.etaxonomy.cdm.model.common.IVersionableEntity)
+     */
+    /** {@inheritDoc} */
+    @Override
+    public void addElement(TermVocabulary<DefinedTerm> element) {
+        //never gets called
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#removeElement(eu.etaxonomy.cdm.model.common.IVersionableEntity)
+     */
+    /** {@inheritDoc} */
+    @Override
+    public void removeElement(TermVocabulary<DefinedTerm> element) {
+        getEntity().removeRecommendedModifierEnumeration(element);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#getEmptyString()
+     */
+    /** {@inheritDoc} */
+    @Override
+    public String getEmptyString() {
+        return "No state modifiers yet.";
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#getTooltipString()
+     */
+    /** {@inheritDoc} */
+    @Override
+    protected String getTooltipString() {
+        return "Add a state modifier";
+    }
+
+
+}