204ab88223a42ca31badc9343260a37f51b49b70
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / occurrence / DerivedUnitBaseDetailElement.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.occurrence;
12
13 import org.eclipse.ui.forms.widgets.ExpandableComposite;
14
15 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
16 import eu.etaxonomy.cdm.api.facade.MethodNotSupportedByDerivedUnitTypeException;
17 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
18 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
19 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
20 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
21 import eu.etaxonomy.taxeditor.model.AbstractUtility;
22 import eu.etaxonomy.taxeditor.store.CdmStore;
23 import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
24 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
25 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
26 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
27 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
28 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
29 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
30 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
31
32 /**
33 * <p>
34 * DerivedUnitBaseDetailElement class.
35 * </p>
36 *
37 * @author n.hoffmann
38 * @created Jun 24, 2010
39 * @version 1.0
40 */
41 public class DerivedUnitBaseDetailElement extends
42 AbstractCdmDetailElement<DerivedUnitFacade> {
43
44 private TextWithLabelElement text_derivedUnitDefinitions;
45
46 private TextWithLabelElement text_barcode;
47
48 private TextWithLabelElement text_catalogNumber;
49
50 private EntitySelectionElement<TaxonNameBase> selection_storedUnder;
51
52 private TextWithLabelElement text_exsicatum;
53
54
55 private TermComboElement<PreservationMethod> combo_preservationMethod;
56
57 private SpecimenCollectionDetailSection section_duplicates;
58
59 private SourceCollectionDetailSection section_source;
60
61 /**
62 * <p>
63 * Constructor for DerivedUnitBaseDetailElement.
64 * </p>
65 *
66 * @param formFactory
67 * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
68 * object.
69 * @param formElement
70 * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
71 * object.
72 */
73 public DerivedUnitBaseDetailElement(CdmFormFactory formFactory,
74 ICdmFormElement formElement) {
75 super(formFactory, formElement);
76 }
77
78 /** {@inheritDoc} */
79 @Override
80 protected void createControls(ICdmFormElement formElement, DerivedUnitFacade entity, int style) {
81 // Disable for now
82 // text_derivedUnitDefinitions =
83 // formFactory.createTextWithLabelElement(formElement,
84 // "Specimen Definition",
85 // facade.getDerivedUnitDefinition(CdmStore.getDefaultLanguage()),
86 // style);
87 text_barcode = formFactory.createTextWithLabelElement(formElement, "Barcode", entity.getBarcode(), style);
88 text_catalogNumber = formFactory.createTextWithLabelElement(formElement, "Catalog Number", entity.getCatalogNumber(), style);
89
90
91 try {
92 combo_preservationMethod = formFactory.createTermComboElement(PreservationMethod.class, formElement, "Preservation Method", entity.getPreservationMethod(), style);
93 } catch (MethodNotSupportedByDerivedUnitTypeException e) {
94 // we ignore this
95 AbstractUtility.info(e.getMessage());
96 }
97 selection_storedUnder = formFactory.createSelectionElement(TaxonNameBase.class, getConversationHolder(), formElement, "Stored Under", entity.getStoredUnder(), EntitySelectionElement.ALL, style);
98
99 try {
100 text_exsicatum = formFactory.createTextWithLabelElement(formElement, "Exsiccatum", entity.getExsiccatum(), style);
101 } catch (MethodNotSupportedByDerivedUnitTypeException e) {
102 // we ignore this
103 AbstractUtility.info(e.getMessage());
104 }
105
106 // section_duplicates = (SpecimenCollectionDetailSection) formFactory
107 // .createEntityDetailSection(
108 // EntityDetailType.SPECIMEN_COLLECTION,
109 // getConversationHolder(), formElement, Section.TWISTIE);
110 // section_duplicates
111 // .setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
112 // section_duplicates.setEntity(entity);
113
114 section_source = formFactory.createSourceCollectionDetailSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE);
115 section_source.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
116 section_source.setEntity(entity);
117 }
118
119 /** {@inheritDoc} */
120 @Override
121 public void handleEvent(Object eventSource) {
122 if (eventSource == text_derivedUnitDefinitions) {
123 getEntity().addDerivedUnitDefinition(
124 text_derivedUnitDefinitions.getText(),
125 CdmStore.getDefaultLanguage());
126 } else if (eventSource == text_barcode) {
127 getEntity().setBarcode(text_barcode.getText());
128 } else if (eventSource == text_catalogNumber) {
129 getEntity().setCatalogNumber(text_catalogNumber.getText());
130 } else if (eventSource == combo_preservationMethod) {
131 try {
132 getEntity().setPreservationMethod(
133 combo_preservationMethod.getSelection());
134 } catch (MethodNotSupportedByDerivedUnitTypeException e) {
135 AbstractUtility
136 .errorDialog(
137 "MethodNotSupportedByDerivedUnitTypeException",
138 this,
139 "MethodNotSupportedByDerivedUnitTypeException when trying to set preservation method for derive unit",
140 e);
141 }
142 } else if (eventSource == selection_storedUnder) {
143 getEntity().setStoredUnder(selection_storedUnder.getEntity());
144 } else if (eventSource == text_exsicatum) {
145 try {
146 getEntity().setExsiccatum(text_exsicatum.getText());
147 } catch (Exception e) {
148 AbstractUtility.error(this.getClass(), e);
149 }
150 }
151 }
152 }