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