Merge branch 'develop' into wset
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / occurrence / DeterminationEventDetailElement.java
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.occurrence;
11
12 import org.eclipse.swt.events.SelectionListener;
13
14 import eu.etaxonomy.cdm.model.common.DefinedTerm;
15 import eu.etaxonomy.cdm.model.common.TermType;
16 import eu.etaxonomy.cdm.model.name.TaxonName;
17 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
18 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
19 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
20 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
21 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
22 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
23 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
24 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
25
26 /**
27 * <p>
28 * DeterminationEventDetailElement class.
29 * </p>
30 *
31 * @author n.hoffmann
32 * @created Oct 13, 2010
33 */
34 public class DeterminationEventDetailElement extends
35 AbstractEventDetailElement<DeterminationEvent> {
36
37 private TermComboElement<DefinedTerm> combo_determinationModifier;
38 private CheckboxElement checkbox_preferredFlag;
39 private EntitySelectionElement<TaxonBase> selection_taxonBase;
40 private EntitySelectionElement<TaxonName> selectionTaxonNameBase;
41
42 // private TODO a set of references
43
44 /**
45 * <p>
46 * Constructor for DeterminationEventDetailElement.
47 * </p>
48 *
49 * @param formFactory
50 * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
51 * object.
52 * @param section
53 * a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection}
54 * object.
55 * @param entity
56 * a {@link eu.etaxonomy.cdm.model.occurrence.DeterminationEvent}
57 * object.
58 * @param removeListener
59 * a {@link org.eclipse.swt.events.SelectionListener} object.
60 * @param style
61 * a int.
62 */
63 public DeterminationEventDetailElement(CdmFormFactory formFactory,
64 AbstractFormSection<?> section, DeterminationEvent entity,
65 SelectionListener removeListener, int style) {
66 super(formFactory, section, entity, removeListener, style);
67 }
68
69 /** {@inheritDoc} */
70 @Override
71 public void setEntity(DeterminationEvent entity) {
72 this.entity = entity;
73 combo_determinationModifier.setSelection(entity.getModifier());
74 selection_taxonBase.setEntity(entity.getTaxon());
75 selectionTaxonNameBase.setEntity(entity.getTaxonName());
76 super.setEntity(entity);
77 }
78
79 /** {@inheritDoc} */
80 @Override
81 public void createControls(ICdmFormElement element, int style) {
82 selectionTaxonNameBase = formFactory
83 .createSelectionElement(TaxonName.class,//getConversationHolder(),
84 element, "Taxon Name", null,
85 EntitySelectionElement.NOTHING, style);
86 selection_taxonBase = formFactory
87 .createSelectionElement(TaxonBase.class,//getConversationHolder(),
88 element, "Taxon", null,
89 EntitySelectionElement.NOTHING, style);
90
91
92 // TODO set of references
93
94 super.createControls(element, style);
95
96 element_timePeriod.setLabel("Determined When");
97 selection_agent.setLabel("Determined by");
98
99
100 combo_determinationModifier = formFactory.createDefinedTermComboElement(TermType.DeterminationModifier,
101 element, "Modifier", null, style);
102 }
103
104 /** {@inheritDoc} */
105 @Override
106 public void handleEvent(Object eventSource) {
107 if (eventSource == combo_determinationModifier) {
108 getEntity().setModifier(combo_determinationModifier.getSelection());
109 } else if (eventSource == checkbox_preferredFlag) {
110 getEntity().setPreferredFlag(checkbox_preferredFlag.getSelection());
111 } else if (eventSource == selectionTaxonNameBase) {
112 getEntity().setTaxonName(selectionTaxonNameBase.getSelection());
113 //empty taxon field if name does not belong the taxon
114 TaxonBase taxonBase = selection_taxonBase.getEntity();
115 if(taxonBase!=null && taxonBase.getName()!=null
116 && !taxonBase.getName().equals(selectionTaxonNameBase.getSelection())){
117 selection_taxonBase.setEntity(null);
118 }
119 } else if (eventSource == selection_taxonBase) {
120 TaxonBase taxon = selection_taxonBase.getSelection();
121 getEntity().setTaxon(taxon);
122 getEntity().setTaxonName(taxon.getName());
123 selectionTaxonNameBase.setEntity(taxon.getName());
124 }
125 // else if(eventSource == TODO set of references){
126 //
127 // }
128 else if (eventSource == selection_agent) {
129 getEntity().setDeterminer(selection_agent.getSelection());
130 } else if (eventSource == text_description) {
131 getEntity().setDescription(text_description.getText());
132 } else if (eventSource == element_timePeriod) {
133 getEntity().setTimeperiod(element_timePeriod.getTimePeriod());
134 }
135 }
136
137 }