From: Patric Plitzner Date: Wed, 29 Apr 2015 14:35:40 +0000 (+0000) Subject: - implemented and added recommended modifier section to Feature DetailView (#4448) X-Git-Tag: 3.6.0~74 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/faa30aca82ac9cea3a40357f08476bb69fc87501 - implemented and added recommended modifier section to Feature DetailView (#4448) --- 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"; + } + + +}