From cab4c9253d378e18967ee949ae812edfdfc661e7 Mon Sep 17 00:00:00 2001
From: Patric Plitzner
Date: Tue, 28 Apr 2015 08:38:48 +0000
Subject: [PATCH] - added state vocabulary section to Feature DetailView
(#4448) - implemented measurement unit section
---
.gitattributes | 3 +
.../taxeditor/ui/element/CdmFormFactory.java | 11 +++
.../section/description/StateDataElement.java | 11 +++
.../vocabulary/FeatureDetailElement.java | 24 +++++
.../MeasurementUnitCollectionElement.java | 75 ++++++++++++++++
.../MeasurementUnitCollectionSection.java | 87 +++++++++++++++++++
.../StateVocabularyCollectionElement.java | 76 ++++++++++++++++
.../StateVocabularyCollectionSection.java | 3 +-
8 files changed, 289 insertions(+), 1 deletion(-)
create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/MeasurementUnitCollectionElement.java
create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/MeasurementUnitCollectionSection.java
create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateVocabularyCollectionElement.java
diff --git a/.gitattributes b/.gitattributes
index 707e0c1ea..31c2a8e4d 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1757,9 +1757,12 @@ 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/DefinedTermDetailElement.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/DefinedTermDetailSection.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/FeatureDetailElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/MeasurementUnitCollectionElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/MeasurementUnitCollectionSection.java -text
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/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/TermVocabularyDetailElement.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/TermVocabularyDetailSection.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 0ec1e7d2b..25c0777a6 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
@@ -75,6 +75,7 @@ import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
import eu.etaxonomy.cdm.model.description.KeyStatement;
import eu.etaxonomy.cdm.model.description.QuantitativeData;
+import eu.etaxonomy.cdm.model.description.State;
import eu.etaxonomy.cdm.model.description.StateData;
import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;
import eu.etaxonomy.cdm.model.description.TaxonInteraction;
@@ -307,6 +308,8 @@ import eu.etaxonomy.taxeditor.ui.section.vocabulary.DefinedTermDetailElement;
import eu.etaxonomy.taxeditor.ui.section.vocabulary.DefinedTermDetailSection;
import eu.etaxonomy.taxeditor.ui.section.vocabulary.FeatureDetailElement;
import eu.etaxonomy.taxeditor.ui.section.vocabulary.NamedAreaDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.vocabulary.StateVocabularyCollectionElement;
+import eu.etaxonomy.taxeditor.ui.section.vocabulary.StateVocabularyCollectionSection;
import eu.etaxonomy.taxeditor.ui.section.vocabulary.TermVocabularyDetailElement;
import eu.etaxonomy.taxeditor.ui.section.vocabulary.TermVocabularyDetailSection;
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
@@ -2302,6 +2305,12 @@ public class CdmFormFactory extends FormToolkit {
return section;
}
+ public StateVocabularyCollectionSection createSectionStateVocabularies(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ StateVocabularyCollectionSection section = new StateVocabularyCollectionSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
public CollectingAreasDetailSection createCollectingAreasDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
CollectingAreasDetailSection section = new CollectingAreasDetailSection(this, conversation, parentElement, style);
addAndAdaptSection(parentElement, section);
@@ -2533,6 +2542,8 @@ public class CdmFormFactory extends FormToolkit {
else{
element = new IdentifierDetailElement(this, parentElement, (Identifier) entity, removeListener, style);
}
+ } else if (entity instanceof TermVocabulary) {
+ element = new StateVocabularyCollectionElement(this, parentElement, (TermVocabulary) entity, removeListener, backgroundColor, style);
}
if (element == null) {
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataElement.java
index e40c90d52..3ee690b7e 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataElement.java
@@ -10,11 +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 org.eclipse.ui.forms.widgets.ExpandableComposite;
import eu.etaxonomy.cdm.model.common.LanguageString;
import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.common.TermVocabulary;
import eu.etaxonomy.cdm.model.description.State;
import eu.etaxonomy.cdm.model.description.StateData;
import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -58,6 +63,12 @@ public class StateDataElement extends AbstractEntityCollectionElement
@Override
public void setEntity(StateData entity) {
this.entity = entity;
+ List stateTerms = new ArrayList();
+ Set> stateVocabularies = getEntity().getCategoricalData().getFeature().getSupportedCategoricalEnumerations();
+ for (TermVocabulary termVocabulary : stateVocabularies) {
+ stateTerms.addAll(termVocabulary.getTerms());
+ }
+ combo_state.setTerms(stateTerms);
combo_state.setSelection(entity.getState());
section_modifiers.setEntity(entity);
if(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {
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 441cd85b2..7c79e1f3a 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
@@ -9,10 +9,13 @@
*/
package eu.etaxonomy.taxeditor.ui.section.vocabulary;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+
import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
/**
* @author l.morris
@@ -21,6 +24,8 @@ import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
*/
public class FeatureDetailElement extends DefinedTermDetailElement {
+ private ICdmFormElement parentFormElement;
+
private CheckboxElement supportsTextData;
private CheckboxElement supportsQuantitativeData;
@@ -35,6 +40,8 @@ public class FeatureDetailElement extends DefinedTermDetailElement {
private CheckboxElement supportsCommonTaxonName;
+ private StateVocabularyCollectionSection sectionStateVocabularies;
+
/**
* @param formFactory
* @param formElement
@@ -50,6 +57,7 @@ public class FeatureDetailElement extends DefinedTermDetailElement {
@Override
protected void createControls(ICdmFormElement formElement, Feature entity, int style) {
super.createControls(formElement, entity, style);
+ this.parentFormElement = formElement;
supportsTextData = formFactory.createCheckbox(formElement, "Supports Text Data", entity.isSupportsTextData(), style);
supportsQuantitativeData = formFactory.createCheckbox(formElement, "Supports Quantitive Data", entity.isSupportsQuantitativeData(), style);
supportsDistribution = formFactory.createCheckbox(formElement, "Supports Distribution", entity.isSupportsDistribution(), style);
@@ -57,6 +65,12 @@ public class FeatureDetailElement extends DefinedTermDetailElement {
supportsTaxonInteraction = formFactory.createCheckbox(formElement, "Supports Taxon Interaction", entity.isSupportsTaxonInteraction(), style);
supportsCategoricalData = formFactory.createCheckbox(formElement, "Supports Categorical Data", entity.isSupportsCategoricalData(), style);
supportsCommonTaxonName = formFactory.createCheckbox(formElement, "Supports Common Taxon Name", entity.isSupportsCommonTaxonName(), style);
+
+ if(supportsCategoricalData.getSelection()){
+ sectionStateVocabularies = formFactory.createSectionStateVocabularies(getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);
+ sectionStateVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+ sectionStateVocabularies.setEntity(getEntity());
+ }
}
/* (non-Javadoc)
@@ -82,6 +96,16 @@ public class FeatureDetailElement extends DefinedTermDetailElement {
}
else if(eventSource == supportsCategoricalData){
getEntity().setSupportsCategoricalData(supportsCategoricalData.getSelection());
+ if(supportsCategoricalData.getSelection()){
+ sectionStateVocabularies = formFactory.createSectionStateVocabularies(getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);
+ sectionStateVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+ sectionStateVocabularies.setEntity(getEntity());
+ }
+ else{
+ if(sectionStateVocabularies!=null){
+ removeElementsAndControls(sectionStateVocabularies);
+ }
+ }
}
else if(eventSource == supportsCommonTaxonName){
getEntity().setSupportsCommonTaxonName(supportsCommonTaxonName.getSelection());
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/MeasurementUnitCollectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/MeasurementUnitCollectionElement.java
new file mode 100644
index 000000000..9b62d34d2
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/MeasurementUnitCollectionElement.java
@@ -0,0 +1,75 @@
+// $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 org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+
+import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.description.MeasurementUnit;
+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;
+
+/**
+ * @author pplitzner
+ * @date Apr 27, 2015
+ *
+ */
+public class MeasurementUnitCollectionElement extends AbstractEntityCollectionElement {
+
+
+ private TermComboElement comboStateVocabulary;
+
+ /**
+ * @param formFactory
+ * @param section
+ * @param entity
+ * @param removeListener
+ * @param isChoosableEntity
+ * @param backgroundColor
+ * @param style
+ */
+ public MeasurementUnitCollectionElement(CdmFormFactory formFactory, AbstractFormSection section, MeasurementUnit 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.createDefinedTermComboElement(TermType.MeasurementUnit, element, "Measurement unit", null, style);
+ }
+
+ @Override
+ public void setEntity(MeasurementUnit 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 MeasurementUnitCollectionSection){
+ Feature feature = ((MeasurementUnitCollectionSection) getParentElement()).getEntity();
+ feature.removeRecommendedMeasurementUnit(entity);
+ MeasurementUnit measurementUnit = comboStateVocabulary.getSelection();
+ feature.addRecommendedMeasurementUnit(measurementUnit);
+ entity = measurementUnit;
+ }
+ }
+ }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/MeasurementUnitCollectionSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/MeasurementUnitCollectionSection.java
new file mode 100644
index 000000000..8ba031b2d
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/MeasurementUnitCollectionSection.java
@@ -0,0 +1,87 @@
+// $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.description.Feature;
+import eu.etaxonomy.cdm.model.description.MeasurementUnit;
+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 MeasurementUnitCollectionSection extends AbstractUnboundEntityCollectionSection {
+
+ public MeasurementUnitCollectionSection(CdmFormFactory formFactory,
+ ConversationHolder conversation, ICdmFormElement parentElement, int style) {
+ super(formFactory, conversation, parentElement, "Recommended measurement units", 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.getRecommendedMeasurementUnits();
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection#createNewElement()
+ */
+ /** {@inheritDoc} */
+ @Override
+ public MeasurementUnit createNewElement() {
+ return MeasurementUnit.NewInstance();
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#addElement(eu.etaxonomy.cdm.model.common.IVersionableEntity)
+ */
+ /** {@inheritDoc} */
+ @Override
+ public void addElement(MeasurementUnit element) {
+ //never gets called
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#removeElement(eu.etaxonomy.cdm.model.common.IVersionableEntity)
+ */
+ /** {@inheritDoc} */
+ @Override
+ public void removeElement(MeasurementUnit element) {
+ getEntity().removeRecommendedMeasurementUnit(element);
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#getEmptyString()
+ */
+ /** {@inheritDoc} */
+ @Override
+ public String getEmptyString() {
+ return "No recommended measurement units yet.";
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#getTooltipString()
+ */
+ /** {@inheritDoc} */
+ @Override
+ protected String getTooltipString() {
+ return "Add a measurement unit";
+ }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateVocabularyCollectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateVocabularyCollectionElement.java
new file mode 100644
index 000000000..a8094ed72
--- /dev/null
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateVocabularyCollectionElement.java
@@ -0,0 +1,76 @@
+// $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 org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+
+import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.description.State;
+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;
+
+/**
+ * @author pplitzner
+ * @date Apr 27, 2015
+ *
+ */
+public class StateVocabularyCollectionElement extends AbstractEntityCollectionElement> {
+
+
+ private VocabularyComboElement> comboStateVocabulary;
+
+ /**
+ * @param formFactory
+ * @param section
+ * @param entity
+ * @param removeListener
+ * @param isChoosableEntity
+ * @param backgroundColor
+ * @param style
+ */
+ public StateVocabularyCollectionElement(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.State, "State vocabularies", 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 StateVocabularyCollectionSection){
+ Feature feature = ((StateVocabularyCollectionSection) getParentElement()).getEntity();
+ feature.removeSupportedCategoricalEnumeration(entity);
+ TermVocabulary vocabulary = comboStateVocabulary.getSelection();
+ feature.addSupportedCategoricalEnumeration(vocabulary);
+ entity = vocabulary;
+ }
+ }
+ }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateVocabularyCollectionSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateVocabularyCollectionSection.java
index a7b4b6f35..f37d1569d 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateVocabularyCollectionSection.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateVocabularyCollectionSection.java
@@ -12,6 +12,7 @@ package eu.etaxonomy.taxeditor.ui.section.vocabulary;
import java.util.Collection;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.model.common.TermType;
import eu.etaxonomy.cdm.model.common.TermVocabulary;
import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.cdm.model.description.State;
@@ -46,7 +47,7 @@ public class StateVocabularyCollectionSection extends AbstractUnboundEntityColle
/** {@inheritDoc} */
@Override
public TermVocabulary createNewElement() {
- return null;
+ return TermVocabulary.NewInstance(TermType.State);
}
/* (non-Javadoc)
--
2.34.1