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