merge-update from trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / occurrence / dna / DnaSampleGeneralDetailElement.java
1 // $Id$
2 /**
3 * Copyright (C) 2013 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 package eu.etaxonomy.taxeditor.ui.section.occurrence.dna;
11
12 import eu.etaxonomy.cdm.model.agent.AgentBase;
13 import eu.etaxonomy.cdm.model.common.DefinedTerm;
14 import eu.etaxonomy.cdm.model.common.TermType;
15 import eu.etaxonomy.cdm.model.common.TimePeriod;
16 import eu.etaxonomy.cdm.model.molecular.DnaSample;
17 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
18 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
19 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
20 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
21 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
22 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
23 import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
24 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
25 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
26
27 /**
28 * @author pplitzner
29 * @date 16.12.2013
30 *
31 */
32 public class DnaSampleGeneralDetailElement extends AbstractCdmDetailElement<DnaSample> {
33
34 private TimePeriodElement datePreservationDate;
35 private EntitySelectionElement<AgentBase> selectionPreparedBy;
36 private NumberWithLabelElement numberPreservationTemperature;
37 private TermComboElement<DefinedTerm> comboMaterialOrMethods;
38 private TextWithLabelElement textBarcode;
39
40 /**
41 * @param formFactory
42 * @param formElement
43 */
44 public DnaSampleGeneralDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
45 super(formFactory, formElement);
46 }
47
48 /*
49 * (non-Javadoc)
50 *
51 * @see
52 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls
53 * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int)
54 */
55 @Override
56 protected void createControls(ICdmFormElement formElement, DnaSample entity, int style) {
57 TimePeriod timePeriod = null;
58 AgentBase<?> actor = null;
59 Double temperature = null;
60 DefinedTerm definedMaterialOrMethod = null;
61 if(entity.getPreservation()!=null){
62 timePeriod= entity.getPreservation().getTimeperiod();
63 actor = entity.getPreservation().getActor();
64 temperature = entity.getPreservation().getTemperature();
65 definedMaterialOrMethod = entity.getPreservation().getDefinedMaterialOrMethod();
66 }
67 datePreservationDate = formFactory.createTimePeriodElement(formElement, "Preservation date", timePeriod, style);
68 selectionPreparedBy = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Prepared by", actor, EntitySelectionElement.ALL, style);
69 numberPreservationTemperature = formFactory.createNumberTextWithLabelElement(formElement, "Preservation Temp. [C°]", temperature, style);
70 comboMaterialOrMethods = formFactory.createDefinedTermComboElement(TermType.MaterialOrMethod, formElement, "Materials & Methods", definedMaterialOrMethod, style);
71 //TODO preparation date
72 //TODO sample type
73 textBarcode = formFactory.createTextWithLabelElement(formElement, "Barcode", entity.getBarcode(), style);
74
75 }
76
77 /*
78 * (non-Javadoc)
79 *
80 * @see
81 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
82 * .lang.Object)
83 */
84 @Override
85 public void handleEvent(Object eventSource) {
86 if(eventSource==datePreservationDate){
87 addPreservationMethod().setTimeperiod(datePreservationDate.getTimePeriod());
88 }
89 else if(eventSource==selectionPreparedBy){
90 addPreservationMethod().setActor(selectionPreparedBy.getSelection());
91 }
92 else if(eventSource==numberPreservationTemperature){
93 addPreservationMethod().setTemperature(numberPreservationTemperature.getDouble());
94 }
95 else if(eventSource==comboMaterialOrMethods){
96 addPreservationMethod().setDefinedMaterialOrMethod(comboMaterialOrMethods.getSelection());
97 }
98 else if(eventSource==textBarcode){
99 getEntity().setBarcode(textBarcode.getText());
100 }
101 }
102
103 private PreservationMethod addPreservationMethod(){
104 PreservationMethod preservationMethod = getEntity().getPreservation();
105 if(preservationMethod==null){
106 preservationMethod = PreservationMethod.NewInstance();
107 getEntity().setPreservation(preservationMethod);
108 }
109 return preservationMethod;
110 }
111 }