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