merge
[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 * @author n.hoffmann
30 * @created May 17, 2010
31 * @version 1.0
32 */
33 public class SpecimenTypeDesignationElement extends
34 AbstractTypeDesignationElement<SpecimenTypeDesignation> {
35
36 private TermComboElement<SpecimenTypeDesignationStatus> combo_typeStatus;
37 private EntitySelectionElement<DerivedUnit> selection_typeSpecimen;
38 private TextWithLabelElement text_specimenTypeText;
39
40 public SpecimenTypeDesignationElement(CdmFormFactory formFactory,
41 AbstractFormSection section, SpecimenTypeDesignation entity,
42 SelectionListener removeListener, int style) {
43 super(formFactory, section, entity, removeListener, style);
44 }
45
46 /** {@inheritDoc} */
47 @Override
48 public void createControls(ICdmFormElement formElement, int style) {
49 selection_typeSpecimen = formFactory
50 .createSelectionElement(DerivedUnit.class,
51 getConversationHolder(), formElement, "Specimen", null,
52 EntitySelectionElement.ALL, style);
53 combo_typeStatus = formFactory.createDefinedTermComboElement(TermType.SpecimenTypeDesignationStatus,
54 formElement, "Designation Status", null, style);
55
56 super.createControls(formElement, style);
57 }
58
59 /** {@inheritDoc} */
60 @Override
61 public void setEntity(SpecimenTypeDesignation entity) {
62 super.setEntity(entity);
63 selection_typeSpecimen.setEntity(entity.getTypeSpecimen());
64
65 SpecimenTypeDesignationStatus typeStatus = (SpecimenTypeDesignationStatus) HibernateProxyHelper
66 .deproxy(entity.getTypeStatus());
67 combo_typeStatus.setSelection(typeStatus);
68 checkbox_notDesignated.setSelection(entity.isNotDesignated());
69 }
70
71 /** {@inheritDoc} */
72 @Override
73 public void handleEvent(Object eventSource) {
74 if (eventSource == combo_typeStatus) {
75 getEntity().setTypeStatus(combo_typeStatus.getSelection());
76 }
77 // TODO remove this once specimens are correctly implemented
78 else if (eventSource == text_specimenTypeText) {
79 // TODO this is a simple workaround to enter type specimen as text
80 // strings
81 if (getEntity().getTypeSpecimen() == null) {
82 DerivedUnit typeSpecimen = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
83 getEntity().setTypeSpecimen(typeSpecimen);
84 }
85 getEntity().getTypeSpecimen().setTitleCache(
86 text_specimenTypeText.getText());
87 } else if (eventSource == selection_typeSpecimen) {
88 getEntity().setTypeSpecimen(selection_typeSpecimen.getSelection());
89 } else if (eventSource == checkbox_notDesignated) {
90 getEntity().setNotDesignated(checkbox_notDesignated.getSelection());
91 } else if (eventSource == selection_reference) {
92 getEntity().setCitation(selection_reference.getSelection());
93 } else if (eventSource == text_referenceDetail) {
94 getEntity().setCitationMicroReference(
95 text_referenceDetail.getText());
96 }
97 }
98 }