4bab5d13e8d93ed841d0e3e5d452b11746971116
[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.api.facade.DerivedUnitFacade;
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<DerivedUnitFacade> {
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, DerivedUnitFacade facade, int style) {
56 Institution institution = null;
57 AgentBase<?> staff = null;
58 TimePeriod preparationDate = null;
59 DnaSample entity = (DnaSample)facade.innerDerivedUnit();
60 if(entity.getDerivedFrom()!=null){
61 institution = entity.getDerivedFrom().getInstitution();
62 staff = entity.getDerivedFrom().getActor();
63 preparationDate = entity.getDerivedFrom().getTimeperiod();
64 }
65
66 Double temperature = null;
67 String materialOrMethodText = null;
68 if(entity.getPreservation()!=null){
69 temperature = entity.getPreservation().getTemperature();
70 }
71 if(entity.getDerivedFrom()!=null){
72 materialOrMethodText = entity.getDerivedFrom().getDescription();
73 }
74 selectionInstitution = formFactory.createSelectionElement(Institution.class, //getConversationHolder(),
75 formElement, "Institution", institution, EntitySelectionElement.ALL, style);
76 selectionStaff = formFactory.createSelectionElement(AgentBase.class, //getConversationHolder(),
77 formElement, "Staff", staff, EntitySelectionElement.ALL, style);
78 datePreparationDate = formFactory.createTimePeriodElement(formElement, "Preparation date", preparationDate, style);
79 numberPreservationTemperature = formFactory.createFloatTextWithLabelElement(formElement, "Preservation Temp. [C°]", temperature, style);
80 txtMaterialOrMethods = formFactory.createTextWithLabelElement(formElement, "Materials && Methods", materialOrMethodText, style);
81
82 }
83
84 /*
85 * (non-Javadoc)
86 *
87 * @see
88 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
89 * .lang.Object)
90 */
91 @Override
92 public void handleEvent(Object eventSource) {
93 DnaSample entity = (DnaSample)getEntity().innerDerivedUnit();
94 if(eventSource==datePreparationDate){
95 if(entity.getDerivedFrom()!=null){
96 entity.getDerivedFrom().setTimeperiod(datePreparationDate.getTimePeriod());
97 }
98 }
99 else if(eventSource==selectionInstitution){
100 if(entity.getDerivedFrom()!=null){
101 entity.getDerivedFrom().setInstitution(selectionInstitution.getSelection());
102 }
103 }
104 else if(eventSource==selectionStaff){
105 if(entity.getDerivedFrom()!=null){
106 entity.getDerivedFrom().setActor(selectionStaff.getSelection());
107 }
108 }
109 else if(eventSource==numberPreservationTemperature && numberPreservationTemperature.getText()!=null){
110 addPreservationMethod().setTemperature(numberPreservationTemperature.getDouble());
111 }
112 else if(eventSource==txtMaterialOrMethods && entity.getDerivedFrom()!=null){
113 entity.getDerivedFrom().setDescription(txtMaterialOrMethods.getText());
114 }
115 }
116
117 private PreservationMethod addPreservationMethod(){
118 DnaSample entity = (DnaSample)getEntity().innerDerivedUnit();
119 PreservationMethod preservationMethod = entity.getPreservation();
120 if(preservationMethod==null){
121 preservationMethod = PreservationMethod.NewInstance();
122 entity.setPreservation(preservationMethod);
123 }
124 return preservationMethod;
125 }
126 }