Merge branch 'release/3.7.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / occurrence / dna / DnaSamplePreparationPreservationDetailElement.java
1
2 // $Id$
3 /**
4 * Copyright (C) 2013 EDIT
5 * European Distributed Institute of Taxonomy
6 * http://www.e-taxonomy.eu
7 *
8 * The contents of this file are subject to the Mozilla Public License Version 1.1
9 * See LICENSE.TXT at the top of this package for the full license terms.
10 */
11 package eu.etaxonomy.taxeditor.ui.section.occurrence.dna;
12
13 import eu.etaxonomy.cdm.model.agent.AgentBase;
14 import eu.etaxonomy.cdm.model.agent.Institution;
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.element.CdmFormFactory;
19 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
20 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
21 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
22 import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
23 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
24 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
25
26 /**
27 * @author pplitzner
28 * @date 16.12.2013
29 *
30 */
31 public class DnaSamplePreparationPreservationDetailElement extends AbstractCdmDetailElement<DnaSample> {
32
33 private EntitySelectionElement<Institution> selectionInstitution;
34 private EntitySelectionElement<AgentBase> selectionStaff;
35 private TimePeriodElement datePreparationDate;
36 private NumberWithLabelElement numberPreservationTemperature;
37 private TextWithLabelElement txtMaterialOrMethods;
38
39 /**
40 * @param formFactory
41 * @param formElement
42 */
43 public DnaSamplePreparationPreservationDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
44 super(formFactory, formElement);
45 }
46
47 /*
48 * (non-Javadoc)
49 *
50 * @see
51 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls
52 * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int)
53 */
54 @Override
55 protected void createControls(ICdmFormElement formElement, DnaSample entity, int style) {
56 Institution institution = null;
57 AgentBase<?> staff = null;
58 TimePeriod preparationDate = null;
59 if(entity.getDerivedFrom()!=null){
60 institution = entity.getDerivedFrom().getInstitution();
61 staff = entity.getDerivedFrom().getActor();
62 preparationDate = entity.getDerivedFrom().getTimeperiod();
63 }
64
65 Double temperature = null;
66 String materialOrMethodText = null;
67 if(entity.getPreservation()!=null){
68 temperature = entity.getPreservation().getTemperature();
69 }
70 if(entity.getDerivedFrom()!=null){
71 materialOrMethodText = entity.getDerivedFrom().getDescription();
72 }
73 selectionInstitution = formFactory.createSelectionElement(Institution.class, getConversationHolder(), formElement, "Institution", institution, EntitySelectionElement.ALL, style);
74 selectionStaff = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Staff", staff, EntitySelectionElement.ALL, style);
75 datePreparationDate = formFactory.createTimePeriodElement(formElement, "Preparation date", preparationDate, style);
76 numberPreservationTemperature = formFactory.createNumberTextWithLabelElement(formElement, "Preservation Temp. [C°]", temperature, style);
77 txtMaterialOrMethods = formFactory.createTextWithLabelElement(formElement, "Materials && Methods", materialOrMethodText, style);
78
79 }
80
81 /*
82 * (non-Javadoc)
83 *
84 * @see
85 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
86 * .lang.Object)
87 */
88 @Override
89 public void handleEvent(Object eventSource) {
90 if(eventSource==datePreparationDate){
91 if(getEntity().getDerivedFrom()!=null){
92 getEntity().getDerivedFrom().setTimeperiod(datePreparationDate.getTimePeriod());
93 }
94 }
95 else if(eventSource==selectionInstitution){
96 if(getEntity().getDerivedFrom()!=null){
97 getEntity().getDerivedFrom().setInstitution(selectionInstitution.getSelection());
98 }
99 }
100 else if(eventSource==selectionStaff){
101 if(getEntity().getDerivedFrom()!=null){
102 getEntity().getDerivedFrom().setActor(selectionStaff.getSelection());
103 }
104 }
105 else if(eventSource==numberPreservationTemperature && numberPreservationTemperature.getText()!=null){
106 addPreservationMethod().setTemperature(numberPreservationTemperature.getDouble());
107 }
108 else if(eventSource==txtMaterialOrMethods && getEntity().getDerivedFrom()!=null){
109 getEntity().getDerivedFrom().setDescription(txtMaterialOrMethods.getText());
110 }
111 }
112
113 private PreservationMethod addPreservationMethod(){
114 PreservationMethod preservationMethod = getEntity().getPreservation();
115 if(preservationMethod==null){
116 preservationMethod = PreservationMethod.NewInstance();
117 getEntity().setPreservation(preservationMethod);
118 }
119 return preservationMethod;
120 }
121 }