-// $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.
*/
-
package eu.etaxonomy.taxeditor.ui.section.description.detail;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.commons.lang3.StringUtils;
+
import eu.etaxonomy.cdm.model.description.Distribution;
-import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
import eu.etaxonomy.cdm.model.location.NamedArea;
-import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
+import eu.etaxonomy.cdm.model.metadata.CdmPreference;
+import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.taxeditor.editor.IDistributionEditorPart;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.preference.CdmPreferenceCache;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
/**
AbstractDetailedDescriptionDetailElement<Distribution> {
private EntitySelectionElement<NamedArea> selection_namedArea;
- private TermComboElement<PresenceAbsenceTermBase> combo_presenceAbsence;
-
+ private TermComboElement<DefinedTermBase> combo_presenceAbsence;
+ private boolean namedAreaEditable = true;
+
+ private TextWithLabelElement taxonOfDistribtion;
+
/**
* <p>Constructor for DistributionDetailElement.</p>
* @param style a int.
*/
public DistributionDetailElement(CdmFormFactory formFactory,
- ICdmFormElement formElement, Distribution entity, int style) {
+ ICdmFormElement formElement, Distribution entity, boolean enabled, int style) {
super(formFactory, formElement, entity, style);
+ setEnabled(enabled);
+
}
-
+
/** {@inheritDoc} */
@Override
protected void createControls(ICdmFormElement formElement,
Distribution entity, int style) {
- selection_namedArea = formFactory.createSelectionElement(NamedArea.class, getConversationHolder(),
- formElement, "Area",
- entity.getArea(), EntitySelectionElement.NOTHING, style);
- combo_presenceAbsence = formFactory.createTermComboElement(PresenceAbsenceTermBase.class, this, "Distribution Status", entity.getStatus(), style);
-
+
+ if (AbstractUtility.getActivePart() instanceof IDistributionEditorPart){
+ String nameCache = null;
+ nameCache = ((IDistributionEditorPart)AbstractUtility.getActivePart()).getEditor().getActualNameCache();
+ taxonOfDistribtion = formFactory.createTextWithLabelElement(formElement, "Taxon", nameCache, style);
+ taxonOfDistribtion.setEnabled(false);
+ }
+
+ if (PreferencesUtil.getBooleanValue(PreferencePredicate.NamedAreaWithIdInVoc.getKey())) {
+ selection_namedArea = formFactory.createSelectionElementWithIdInVocabulary(NamedArea.class,
+ formElement, "Area",
+ entity.getArea(), EntitySelectionElement.NOTHING, style);
+ }else{
+ selection_namedArea = formFactory.createSelectionElement(NamedArea.class,
+ formElement, "Area",
+ entity.getArea(), EntitySelectionElement.NOTHING, style);
+ }
+
+ ICdmFormElement parent = this.getParentElement();
+ NamedArea area = entity.getArea();
+ List<DefinedTermBase> inputList = getStatusListForArea(area);
+ combo_presenceAbsence = formFactory.createDefinedTermComboElement(inputList, this, "Distribution Status", entity.getStatus(), style);
+ createTimePeriod(formElement, entity, style);
+ if (entity.getFeature().getRecommendedModifierEnumeration() != null && !entity.getFeature().getRecommendedModifierEnumeration().isEmpty()){
+ createModifier(formElement, entity, style);
+ }else{
+ createFreetextModifier(formElement, entity, style);
+ }
}
+ public List<DefinedTermBase> getStatusListForArea(NamedArea area) {
+ PrefKey key;
+ if (area!= null){
+ key = CdmPreference.NewKey(PreferenceSubject.NewInstance(PreferenceSubject.ROOT+"NamedArea["+area.getUuid().toString() + "]"+PreferenceSubject.ROOT), PreferencePredicate.AvailableDistributionStatus);
+ }else{
+ key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AvailableDistributionStatus);
+ }
+ CdmPreference pref = CdmPreferenceCache.instance().get(key);
+ // if there is no preference for the area, look for the general
+ if (pref == null || pref.isAllowOverride()){
+ pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AvailableDistributionStatus, PreferencesUtil.getStringValue(PreferencePredicate.AvailableDistributionStatus.getKey()));
+ }
+
+ String [] statusArray = null;
+ List<UUID> uuidList = new ArrayList<>();
+ if (pref.getValue() != null){
+ statusArray = pref.getValue().split(";");
+ for (String status: statusArray){
+ if (StringUtils.isNotBlank(status)){
+ uuidList.add(UUID.fromString(status));
+ }
+ }
+ }
+
+
+
+ List<DefinedTermBase> inputList = CdmStore.getTermManager().getTerms(uuidList, PresenceAbsenceTerm.class);
+ return inputList;
+ }
+
/** {@inheritDoc} */
@Override
public void handleEvent(Object eventSource) {
- if(eventSource == selection_namedArea){
+ super.handleEvent(eventSource);
+ if(eventSource == selection_namedArea){
getEntity().setArea(selection_namedArea.getEntity());
+
+ if (selection_namedArea.getEntity()!= null){
+ List<DefinedTermBase> inputList = getStatusListForArea(selection_namedArea.getEntity());
+ DefinedTermBase selectedTerm = combo_presenceAbsence.getSelection();
+ if (!inputList.equals(combo_presenceAbsence.getTerms())){
+ combo_presenceAbsence.setTerms(inputList);
+ if (inputList.contains(selectedTerm)){
+ combo_presenceAbsence.setSelection(selectedTerm);
+ }
+ }
+ }
+
}else if(eventSource == combo_presenceAbsence){
- getEntity().setStatus(combo_presenceAbsence.getSelection());
+ getEntity().setStatus((PresenceAbsenceTerm)combo_presenceAbsence.getSelection());
}
}
-
+ public void setName(String nameCache){
+ taxonOfDistribtion.setText(nameCache);
+ }
+
}