- adpated DNA DetailsViews according to current development
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / occurrence / dna / SingleReadGeneralDetailElement.java
1 // $Id$
2 /**
3 * Copyright (C) 2014 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.molecular.Primer;
15 import eu.etaxonomy.cdm.model.molecular.Sequence;
16 import eu.etaxonomy.cdm.model.molecular.SequenceString;
17 import eu.etaxonomy.cdm.model.molecular.SingleRead;
18 import eu.etaxonomy.cdm.model.reference.Reference;
19 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
20 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
21 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
22 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
23 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
24 import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
25 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
26 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
27
28 /**
29 * @author pplitzner
30 * @date 06.01.2014
31 *
32 */
33 public class SingleReadGeneralDetailElement extends AbstractCdmDetailElement<SingleRead> {
34
35
36 private TimePeriodElement dateElement;
37 private EntitySelectionElement<AgentBase> selectionSequencingStaff;
38 private TermComboElement<DefinedTerm> comboMaterialOrMethod;
39 private NumberWithLabelElement numberReadLength;
40 private TextWithLabelElement textEditedSequence;
41 private TextWithLabelElement textPrimerName;
42 private TextWithLabelElement textPrimerSequence;
43 private EntitySelectionElement<Reference> selectionReference;
44
45 /**
46 * @param formFactory
47 * @param formElement
48 */
49 public SingleReadGeneralDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
50 super(formFactory, formElement);
51 }
52
53 /*
54 * (non-Javadoc)
55 *
56 * @see
57 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls
58 * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int)
59 */
60 @Override
61 protected void createControls(ICdmFormElement formElement, SingleRead entity, int style) {
62
63 // dateElement = formFactory.createTimePeriodElement(formElement, "Sequencing Date", entity.getDateSequenced(), style);
64 // selectionSequencingStaff = formFactory
65 // .createSelectionElement(AgentBase.class,
66 // getConversationHolder(), formElement, "Sequencing Staff",
67 // null,
68 // EntitySelectionElement.ALL, style);
69 // MaterialOrMethodEvent materialOrMethod = entity.getMaterialOrMethod();
70 // DefinedTerm definedMaterialOrMethod = null;
71 // if(materialOrMethod!=null){
72 // definedMaterialOrMethod = materialOrMethod.getDefinedMaterialOrMethod();
73 // }
74 // comboMaterialOrMethod = formFactory.createTermComboElement(DefinedTerm.class, formElement, "Mat. & Meth.", definedMaterialOrMethod, style);
75 //
76 // //TODO sequence can be null if DerivateView is opened again. Why?? When initially created it is not null
77 // SequenceString editedSequence = entity.getSequence();
78 // Integer readLength = 0;
79 // String editedSequenceString = "";
80 // if(editedSequence!=null){
81 // Integer length = editedSequence.getLength();
82 // if(length!=null){
83 // readLength = length;
84 // }
85 // editedSequenceString = editedSequence.getString();
86 // }
87 // textReadLength = formFactory.createNumberTextWithLabelElement(formElement, "Read Length", readLength, style);
88 // textEditedSequence = formFactory.createTextWithLabelElement(formElement, "Edited Sequence 5'->3'", editedSequenceString, style);
89
90 Primer primer = entity.getPrimer();
91 String primerLabel = "";
92 String primerSequence = "";
93 Reference primerReference = null;
94 if(primer!=null){
95 primerLabel = primer.getLabel();
96 primerSequence = primer.getSequence()==null?"":primer.getSequence().getSequenceString();
97 primerReference = primer.getPublishedIn();
98 }
99 textPrimerName = formFactory.createTextWithLabelElement(formElement, "Primer Name", primerLabel, style);
100 textPrimerSequence = formFactory.createTextWithLabelElement(formElement, "Primer seq. 5'->3'", primerSequence, style);
101
102 selectionReference = formFactory
103 .createSelectionElement(Reference.class,
104 getConversationHolder(), formElement, "Reference",
105 primerReference,
106 EntitySelectionElement.ALL, style);
107 }
108
109 /*
110 * (non-Javadoc)
111 *
112 * @see
113 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
114 * .lang.Object)
115 */
116 @Override
117 public void handleEvent(Object eventSource) {
118 if(eventSource==dateElement){
119 getEntity().setDateSequenced(dateElement.getTimePeriod());
120 }
121 else if(eventSource==selectionSequencingStaff){
122 getEntity().setActor(selectionSequencingStaff.getSelection());
123 }
124 else if(eventSource==comboMaterialOrMethod){
125 getEntity().getMaterialOrMethod().setDefinedMaterialOrMethod(comboMaterialOrMethod.getSelection());
126 }
127 else if(eventSource==numberReadLength){
128 getEditedSequence().setLength(numberReadLength.getInteger());
129 }
130 else if(eventSource==textEditedSequence){
131 getEditedSequence().setString(textEditedSequence.getText());
132 }
133 else if(eventSource==textPrimerName){
134 getPrimer().setLabel(textPrimerName.getText());
135 }
136 else if(eventSource==textPrimerSequence){
137 Sequence sequence = getPrimer().getSequence();
138 if(sequence==null){
139 sequence = Sequence.NewInstance("");
140 }
141 sequence.setSequenceString(textPrimerSequence.getText());
142 }
143 else if(eventSource==selectionReference){
144 getPrimer().setPublishedIn(selectionReference.getSelection());
145 }
146 }
147
148 /**
149 * @return
150 */
151 private SequenceString getEditedSequence() {
152 SequenceString sequence = getEntity().getSequence();
153 if(sequence==null){
154 sequence = SequenceString.NewInstance();
155 }
156 return sequence;
157 }
158
159 private Primer getPrimer(){
160 Primer primer = getEntity().getPrimer();
161 if(primer==null){
162 primer = Primer.NewInstance("");
163 }
164 return primer;
165 }
166
167 }