Project

General

Profile

Download (5.43 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;
11

    
12
import java.util.ArrayList;
13
import java.util.HashSet;
14
import java.util.List;
15
import java.util.Set;
16

    
17
import org.eclipse.swt.events.SelectionListener;
18

    
19
import eu.etaxonomy.cdm.api.service.IVocabularyService;
20
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
21
import eu.etaxonomy.cdm.model.description.StateData;
22
import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;
23
import eu.etaxonomy.cdm.model.term.DefinedTerm;
24
import eu.etaxonomy.cdm.model.term.TermType;
25
import eu.etaxonomy.cdm.model.term.TermVocabulary;
26
import eu.etaxonomy.cdm.model.term.VocabularyEnum;
27
import eu.etaxonomy.taxeditor.store.CdmStore;
28
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
29
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
30
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
31
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
32
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
33

    
34
/**
35
 * <p>ModifierElement class.</p>
36
 *
37
 * @author n.hoffmann
38
 * @created Sep 15, 2010
39
 * @version 1.0
40
 */
41
public class ModifierElement extends AbstractEntityCollectionElement<DefinedTerm> {
42

    
43
	private TermComboElement<DefinedTerm> combo_modifier;
44

    
45
	/**
46
	 * <p>Constructor for ModifierElement.</p>
47
	 *
48
	 * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
49
	 * @param section a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection} object.
50
	 * @param entity a {@link eu.etaxonomy.cdm.model.description.Modifier} object.
51
	 * @param removeListener a {@link org.eclipse.swt.events.SelectionListener} object.
52
	 * @param style a int.
53
	 */
54
	public ModifierElement(CdmFormFactory formFactory,
55
			AbstractFormSection<?> section, DefinedTerm entity,
56
			SelectionListener removeListener, int style) {
57
		super(formFactory, section, entity, removeListener, null, style);
58
	}
59

    
60
	/** {@inheritDoc} */
61
	@Override
62
	public void setEntity(DefinedTerm entity) {
63
		this.entity = entity;
64
		if(getParentElement() instanceof ModifierSection){
65
		    ModifierSection parentSection = (ModifierSection) getParentElement();
66
		    List<DefinedTerm> modifierTerms = new ArrayList<DefinedTerm>();
67
            Set<TermVocabulary<DefinedTerm>> recommendedModifierEnumeration = new HashSet<TermVocabulary<DefinedTerm>>();
68
		    if(parentSection.getEntity() instanceof StateData){
69
		        StateData stateData = (StateData) parentSection.getEntity();
70
		        recommendedModifierEnumeration = stateData.getCategoricalData().getFeature().getRecommendedModifierEnumeration();
71
		    }
72
		    if(parentSection.getEntity() instanceof StatisticalMeasurementValue){
73
		        StatisticalMeasurementValue statisticalMeasurementValue = (StatisticalMeasurementValue)parentSection.getEntity();
74
		        recommendedModifierEnumeration = statisticalMeasurementValue.getQuantitativeData().getFeature().getRecommendedModifierEnumeration();
75
		    }
76
		    if (!(parentSection.getParentElement() instanceof StateDataElement || parentSection.getParentElement() instanceof StatisticalMeasurementValueElement)){
77
		        recommendedModifierEnumeration.add(CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.Modifier.getUuid()));
78
		    }
79
		    for (TermVocabulary<DefinedTerm> termVocabulary : recommendedModifierEnumeration) {
80
		        modifierTerms.addAll(termVocabulary.getTerms());
81
		    }
82
		    combo_modifier.setTerms(modifierTerms);
83
		}
84
        if(entity!=null && entity.getId()>0){
85
            combo_modifier.setSelection(entity);
86
            combo_modifier.removeEmptyElement();
87
        }
88
	}
89

    
90
	/** {@inheritDoc} */
91
	@Override
92
	public void createControls(ICdmFormElement element, int style) {
93
		combo_modifier = formFactory.createDefinedTermComboElement(TermType.Modifier, element, "Modifier", getEntity(), style);
94
	}
95

    
96
	/** {@inheritDoc} */
97
	@Override
98
	public void handleEvent(Object eventSource) {
99
	    if(eventSource==combo_modifier && combo_modifier.getSelection()!=null){
100
	        combo_modifier.removeEmptyElement();
101
	        if(getParentElement() instanceof AbstractFormSection){
102
	            AbstractFormSection<?> parentSection = (AbstractFormSection<?>) getParentElement();
103
	            if(parentSection.getEntity() instanceof StateData){
104
	                StateData stateData = (StateData) parentSection.getEntity();
105
	                stateData.removeModifier(entity);
106
	                DefinedTerm term = combo_modifier.getSelection();
107
	                stateData.addModifier(term);
108
	                entity = term;
109
	            }
110
	            else if(parentSection.getEntity() instanceof StatisticalMeasurementValue){
111
	                StatisticalMeasurementValue parentEntity = (StatisticalMeasurementValue) parentSection.getEntity();
112
	                parentEntity.removeModifier(entity);
113
	                DefinedTerm term = combo_modifier.getSelection();
114
	                parentEntity.addModifier(term);
115
	                entity = term;
116
	            }else {
117
	                ((DescriptionElementBase)parentSection.getEntity()).removeModifier(entity);
118
	                DefinedTerm term = combo_modifier.getSelection();
119
	                ((DescriptionElementBase)parentSection.getEntity()).addModifier(term);
120
                    entity = term;
121
	            }
122
	        }
123
	    }
124
	}
125
}
(16-16/26)