8a6a13fdc7915f430784fa0157957e2e92781b54
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / name / SpecimenTypeDesignationElement.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.taxeditor.ui.section.name;
12
13 import org.eclipse.swt.events.SelectionListener;
14
15 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
16 import eu.etaxonomy.cdm.model.common.TermType;
17 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
18 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
19 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
20 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
21 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
22 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
23 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
24 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
25 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
26 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
27
28 /**
29 * <p>
30 * SpecimenTypeDesignationElement class.
31 * </p>
32 *
33 * @author n.hoffmann
34 * @created May 17, 2010
35 * @version 1.0
36 */
37 public class SpecimenTypeDesignationElement extends
38 AbstractTypeDesignationElement<SpecimenTypeDesignation> {
39
40 private TermComboElement<SpecimenTypeDesignationStatus> combo_typeStatus;
41 private EntitySelectionElement<DerivedUnit> selection_typeSpecimen;
42 private TextWithLabelElement text_specimenTypeText;
43
44 /**
45 * <p>
46 * Constructor for SpecimenTypeDesignationElement.
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.name.SpecimenTypeDesignation}
57 * object.
58 * @param removeListener
59 * a {@link org.eclipse.swt.events.SelectionListener} object.
60 * @param style
61 * a int.
62 */
63 public SpecimenTypeDesignationElement(CdmFormFactory formFactory,
64 AbstractFormSection section, SpecimenTypeDesignation entity,
65 SelectionListener removeListener, int style) {
66 super(formFactory, section, entity, removeListener, style);
67 }
68
69 /** {@inheritDoc} */
70 @Override
71 public void createControls(ICdmFormElement formElement, int style) {
72 selection_typeSpecimen = formFactory
73 .createSelectionElement(DerivedUnit.class,
74 getConversationHolder(), formElement, "Specimen", null,
75 EntitySelectionElement.ALL, style);
76 combo_typeStatus = formFactory.createDefinedTermComboElement(TermType.SpecimenTypeDesignationStatus,
77 formElement, "Designation Status", null, style);
78
79 super.createControls(formElement, style);
80 }
81
82 /** {@inheritDoc} */
83 @Override
84 public void setEntity(SpecimenTypeDesignation entity) {
85 super.setEntity(entity);
86 selection_typeSpecimen.setEntity(entity.getTypeSpecimen());
87
88 SpecimenTypeDesignationStatus typeStatus = (SpecimenTypeDesignationStatus) HibernateProxyHelper
89 .deproxy(entity.getTypeStatus());
90 combo_typeStatus.setSelection(typeStatus);
91 checkbox_notDesignated.setSelection(entity.isNotDesignated());
92 }
93
94 /** {@inheritDoc} */
95 @Override
96 public void handleEvent(Object eventSource) {
97 if (eventSource == combo_typeStatus) {
98 getEntity().setTypeStatus(combo_typeStatus.getSelection());
99 }
100 // TODO remove this once specimens are correctly implemented
101 else if (eventSource == text_specimenTypeText) {
102 // TODO this is a simple workaround to enter type specimen as text
103 // strings
104 if (getEntity().getTypeSpecimen() == null) {
105 DerivedUnit typeSpecimen = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
106 getEntity().setTypeSpecimen(typeSpecimen);
107 }
108 getEntity().getTypeSpecimen().setTitleCache(
109 text_specimenTypeText.getText());
110 } else if (eventSource == selection_typeSpecimen) {
111 getEntity().setTypeSpecimen(selection_typeSpecimen.getSelection());
112 } else if (eventSource == checkbox_notDesignated) {
113 getEntity().setNotDesignated(checkbox_notDesignated.getSelection());
114 } else if (eventSource == selection_reference) {
115 getEntity().setCitation(selection_reference.getSelection());
116 } else if (eventSource == text_referenceDetail) {
117 getEntity().setCitationMicroReference(
118 text_referenceDetail.getText());
119 } else if (eventSource == text_originaleNameString) {
120 getEntity().setOriginalNameString(
121 text_originaleNameString.getText());
122 }
123 }
124 }