Project

General

Profile

Download (5.17 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.taxeditor.ui.section.description.detail;
11

    
12
import java.util.ArrayList;
13
import java.util.List;
14
import java.util.UUID;
15

    
16
import eu.etaxonomy.cdm.model.description.Distribution;
17
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
18
import eu.etaxonomy.cdm.model.location.NamedArea;
19
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
20
import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
21
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
22
import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
23
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
24
import eu.etaxonomy.taxeditor.preference.CdmPreferenceCache;
25
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
26
import eu.etaxonomy.taxeditor.store.CdmStore;
27
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
28
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
29
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
30
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
31

    
32
/**
33
 * <p>DistributionDetailElement class.</p>
34
 *
35
 * @author n.hoffmann
36
 * @created Jun 10, 2010
37
 * @version 1.0
38
 */
39
public class DistributionDetailElement extends
40
		AbstractDetailedDescriptionDetailElement<Distribution> {
41

    
42
	private EntitySelectionElement<NamedArea> selection_namedArea;
43
	private TermComboElement<DefinedTermBase> combo_presenceAbsence;
44
	private boolean namedAreaEditable = true;
45

    
46

    
47
	/**
48
	 * <p>Constructor for DistributionDetailElement.</p>
49
	 *
50
	 * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
51
	 * @param formElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
52
	 * @param entity a {@link eu.etaxonomy.cdm.model.description.Distribution} object.
53
	 * @param style a int.
54
	 */
55
	public DistributionDetailElement(CdmFormFactory formFactory,
56
			ICdmFormElement formElement, Distribution entity, boolean enabled, int style) {
57
		super(formFactory, formElement, entity, style);
58
		setEnabled(enabled);
59

    
60
	}
61

    
62
	/** {@inheritDoc} */
63
	@Override
64
	protected void createControls(ICdmFormElement formElement,
65
			Distribution entity, int style) {
66
		selection_namedArea = formFactory.createSelectionElement(NamedArea.class, //getConversationHolder(),
67
				formElement, "Area",
68
				entity.getArea(), EntitySelectionElement.NOTHING, style);
69

    
70
		ICdmFormElement parent = this.getParentElement();
71
		NamedArea area = entity.getArea();
72
		List<DefinedTermBase> inputList = getStatusListForArea(area);
73
        combo_presenceAbsence = formFactory.createDefinedTermComboElement(inputList, this, "Distribution Status", entity.getStatus(), style);
74

    
75
        //combo_presenceAbsence = formFactory.createTermComboElement(PresenceAbsenceTerm.class, this, "Distribution Status", entity.getStatus(), style);
76
        createTimePeriod(formElement, entity, style);
77
        if (entity.getFeature().getRecommendedModifierEnumeration() != null && !entity.getFeature().getRecommendedModifierEnumeration().isEmpty()){
78
            createModifier(formElement, entity, style);
79
        }else{
80
            createFreetextModifier(formElement, entity, style);
81
        }
82
	}
83

    
84
    public List<DefinedTermBase> getStatusListForArea(NamedArea area) {
85
        PrefKey key;
86
		if (area!= null){
87
		    key = CdmPreference.NewKey(PreferenceSubject.NewInstance(PreferenceSubject.ROOT+"NamedArea["+area.getUuid().toString() + "]"+PreferenceSubject.ROOT), PreferencePredicate.AvailableDistributionStatus);
88
		}else{
89
		    key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AvailableDistributionStatus);
90
		}
91
        CdmPreference pref = CdmPreferenceCache.instance().get(key);
92
        // if there is no preference for the area, look for the general
93
        if (pref == null){
94
            pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AvailableDistributionStatus, PreferencesUtil.getStringValue(PreferencePredicate.AvailableDistributionStatus.getKey()));
95
        }
96

    
97
        String [] statusArray = null;
98
        List<UUID> uuidList = new ArrayList();
99
        if (pref.getValue() != null){
100
            statusArray = pref.getValue().split(";");
101
            for (String status: statusArray){
102
                uuidList.add(UUID.fromString(status));
103
            }
104
        }
105

    
106

    
107

    
108
        List<DefinedTermBase> inputList = CdmStore.getTermManager().getTerms(uuidList, PresenceAbsenceTerm.class);
109
        return inputList;
110
    }
111

    
112
	/** {@inheritDoc} */
113
	@Override
114
	public void handleEvent(Object eventSource) {
115
	    super.handleEvent(eventSource);
116
	    if(eventSource == selection_namedArea){
117
			getEntity().setArea(selection_namedArea.getEntity());
118

    
119
	        if (selection_namedArea.getEntity()!= null){
120
	            List<DefinedTermBase> inputList = getStatusListForArea(selection_namedArea.getEntity());
121
	            //combo_presenceAbsence.removeElements();
122
	            combo_presenceAbsence.setTerms(inputList);
123
	        }
124

    
125
		}else if(eventSource == combo_presenceAbsence){
126
			getEntity().setStatus((PresenceAbsenceTerm)combo_presenceAbsence.getSelection());
127
		}
128
	}
129

    
130

    
131
}
(4-4/8)