Project

General

Profile

Download (6.78 KB) Statistics
| Branch: | Tag: | Revision:
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.occurrence.MaterialOrMethodEvent;
19
import eu.etaxonomy.cdm.model.reference.Reference;
20
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
21
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
22
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
23
import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
24
import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
25
import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
26
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
27
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
28

    
29
/**
30
 * @author pplitzner
31
 * @date 06.01.2014
32
 *
33
 */
34
public class SingleReadGeneralDetailElement extends AbstractCdmDetailElement<SingleRead> {
35

    
36

    
37
    private TimePeriodElement dateElement;
38
    private EntitySelectionElement<AgentBase> selectionSequencingStaff;
39
    private TermComboElement<DefinedTerm> comboMaterialOrMethod;
40
    private TextWithLabelElement textChromatogram;
41
    private NumberWithLabelElement textReadLength;
42
    private TextWithLabelElement textEditedSequence;
43
    private TextWithLabelElement textPrimerName;
44
    private TextWithLabelElement textPrimerSequence;
45
    private EntitySelectionElement<Reference> selectionReference;
46

    
47
    /**
48
     * @param formFactory
49
     * @param formElement
50
     */
51
    public SingleReadGeneralDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
52
        super(formFactory, formElement);
53
    }
54

    
55
    /*
56
     * (non-Javadoc)
57
     *
58
     * @see
59
     * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls
60
     * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int)
61
     */
62
    @Override
63
    protected void createControls(ICdmFormElement formElement, SingleRead entity, int style) {
64

    
65
        dateElement = formFactory.createTimePeriodElement(formElement, "Sequencing Date", entity.getDateSequenced(), style);
66
        selectionSequencingStaff = formFactory
67
                .createSelectionElement(AgentBase.class,
68
                        getConversationHolder(), formElement, "Sequencing Staff",
69
                        null,
70
                        EntitySelectionElement.ALL, style);
71
        MaterialOrMethodEvent materialOrMethod = entity.getMaterialOrMethod();
72
        DefinedTerm definedMaterialOrMethod = null;
73
        if(materialOrMethod!=null){
74
            definedMaterialOrMethod = materialOrMethod.getDefinedMaterialOrMethod();
75
        }
76
        comboMaterialOrMethod = formFactory.createTermComboElement(DefinedTerm.class, formElement, "Mat. & Meth.", definedMaterialOrMethod, style);
77
        textChromatogram = formFactory.createTextWithLabelElement(formElement, "Read Chromatogram", "XXX", style);
78

    
79
        //TODO sequence can be null if DerivateView is opened again. Why?? When initially created it is not null
80
        SequenceString editedSequence = entity.getSequence();
81
        int readLength = 0;
82
        String editedSequenceString = "";
83
        if(editedSequence!=null){
84
            readLength = editedSequence.getLength();
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==textChromatogram){
128
            //TODO implement
129
        }
130
        else if(eventSource==textReadLength){
131
            getEditedSequence().setLength(textReadLength.getInteger());
132
        }
133
        else if(eventSource==textEditedSequence){
134
            getEditedSequence().setString(textEditedSequence.getText());
135
        }
136
        else if(eventSource==textPrimerName){
137
            getPrimer().setLabel(textPrimerName.getText());
138
        }
139
        else if(eventSource==textPrimerSequence){
140
            Sequence sequence = getPrimer().getSequence();
141
            if(sequence==null){
142
                sequence = Sequence.NewInstance("");
143
            }
144
            sequence.setSequenceString(textPrimerSequence.getText());
145
        }
146
        else if(eventSource==selectionReference){
147
            getPrimer().setPublishedIn(selectionReference.getSelection());
148
        }
149
    }
150

    
151
    /**
152
     * @return
153
     */
154
    private SequenceString getEditedSequence() {
155
        SequenceString sequence = getEntity().getSequence();
156
        if(sequence==null){
157
            sequence = SequenceString.NewInstance();
158
        }
159
        return sequence;
160
    }
161

    
162
    private Primer getPrimer(){
163
        Primer primer = getEntity().getPrimer();
164
        if(primer==null){
165
            primer = Primer.NewInstance("");
166
        }
167
        return primer;
168
    }
169

    
170
}
(14-14/17)