From faa30aca82ac9cea3a40357f08476bb69fc87501 Mon Sep 17 00:00:00 2001
From: Patric Plitzner
Date: Wed, 29 Apr 2015 14:35:40 +0000
Subject: [PATCH] - implemented and added recommended modifier section to
Feature DetailView (#4448)
---
.gitattributes | 2 +
.../taxeditor/ui/element/CdmFormFactory.java | 24 ++++-
.../section/description/ModifierElement.java | 37 +++++++-
.../section/description/ModifierSection.java | 26 +++---
.../description/StateModifierElement.java | 77 ++++++++++++++++
.../vocabulary/FeatureDetailElement.java | 11 +++
.../StateModifierCollectionSection.java | 90 +++++++++++++++++++
7 files changed, 248 insertions(+), 19 deletions(-)
create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateModifierElement.java
create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateModifierCollectionSection.java
diff --git a/.gitattributes b/.gitattributes
index 5e0485cf4..be12c222c 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -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
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java
index 3e88fdacd..4ee762185 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java
@@ -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) entity, removeListener, backgroundColor, style);
+ TermVocabulary> termVocabulary = (TermVocabulary>)entity;
+ switch (termVocabulary.getTermType()) {
+ case State:
+ element = new StateVocabularyCollectionElement(this, parentElement, (TermVocabulary) entity, removeListener, backgroundColor, style);
+ break;
+ case Modifier:
+ element = new StateModifierElement(this, parentElement, (TermVocabulary) 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) {
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierElement.java
index 6aaa67b9a..a21334040 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierElement.java
@@ -10,10 +10,16 @@
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 section, DefinedTerm entity,
SelectionListener removeListener, int style) {
super(formFactory, section, entity, removeListener, null, style);
}
@@ -50,7 +56,21 @@ public class ModifierElement extends AbstractEntityCollectionElement modifierTerms = new ArrayList();
+ Set> recommendedModifierEnumeration = stateData.getCategoricalData().getFeature().getRecommendedModifierEnumeration();
+ for (TermVocabulary 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 AbstractEntityCollectionElementModifierSection class.
@@ -27,7 +27,7 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
* @created Sep 15, 2010
* @version 1.0
*/
-public class ModifierSection extends AbstractEntityCollectionSection {
+public class ModifierSection extends AbstractUnboundEntityCollectionSection {
/**
* Constructor for ModifierSection.
@@ -42,17 +42,11 @@ public class ModifierSection extends AbstractEntityCollectionSection 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 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
index 000000000..34a7893d6
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateModifierElement.java
@@ -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> {
+
+
+ private VocabularyComboElement> comboStateVocabulary;
+
+ /**
+ * @param formFactory
+ * @param section
+ * @param entity
+ * @param removeListener
+ * @param isChoosableEntity
+ * @param backgroundColor
+ * @param style
+ */
+ public StateModifierElement(CdmFormFactory formFactory, AbstractFormSection section, TermVocabulary 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 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 vocabulary = comboStateVocabulary.getSelection();
+ feature.addRecommendedModifierEnumeration(vocabulary);
+ entity = vocabulary;
+ }
+ }
+ }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/FeatureDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/FeatureDetailElement.java
index a997eb256..5bbd72f7f 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/FeatureDetailElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/FeatureDetailElement.java
@@ -46,6 +46,8 @@ public class FeatureDetailElement extends DefinedTermDetailElement {
private StatisticalMeasureCollectionSection sectionStatisticalMeasures;
+ private StateModifierCollectionSection sectionStateModifiers;;
+
/**
* @param formFactory
* @param formElement
@@ -74,6 +76,10 @@ public class FeatureDetailElement extends DefinedTermDetailElement {
sectionStateVocabularies = formFactory.createStateVocabulariesSection(getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);
sectionStateVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
sectionStateVocabularies.setEntity(getEntity());
+
+ sectionStateModifiers = formFactory.createStateModifierCollectionSection(getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);
+ sectionStateModifiers.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+ sectionStateModifiers.setEntity(getEntity());
}
if(supportsQuantitativeData.getSelection()){
sectionMeasurementUnits = formFactory.createMeasurementUnitCollectionSection(getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);
@@ -128,10 +134,15 @@ public class FeatureDetailElement extends DefinedTermDetailElement {
sectionStateVocabularies = formFactory.createStateVocabulariesSection(getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);
sectionStateVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
sectionStateVocabularies.setEntity(getEntity());
+
+ sectionStateModifiers = formFactory.createStateModifierCollectionSection(getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);
+ sectionStateModifiers.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+ sectionStateModifiers.setEntity(getEntity());
}
else{
if(sectionStateVocabularies!=null){
removeElementsAndControls(sectionStateVocabularies);
+ removeElementsAndControls(sectionStateModifiers);
}
}
}
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
index 000000000..c8ba3aa2d
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateModifierCollectionSection.java
@@ -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> {
+
+ 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> getEntityCollection(Feature entity) {
+ return entity.getRecommendedModifierEnumeration();
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection#createNewElement()
+ */
+ /** {@inheritDoc} */
+ @Override
+ public TermVocabulary 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 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 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";
+ }
+
+
+}
--
2.34.1