Project

General

Profile

Download (6.62 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 NumberWithLabelElement textReadLength;
41
    private TextWithLabelElement textEditedSequence;
42
    private TextWithLabelElement textPrimerName;
43
    private TextWithLabelElement textPrimerSequence;
44
    private EntitySelectionElement<Reference> selectionReference;
45

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

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

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

    
77
        //TODO sequence can be null if DerivateView is opened again. Why?? When initially created it is not null
78
        SequenceString editedSequence = entity.getSequence();
79
        Integer readLength = 0;
80
        String editedSequenceString = "";
81
        if(editedSequence!=null){
82
            Integer length = editedSequence.getLength();
83
            if(length!=null){
84
                readLength = length;
85
            }
86
            editedSequenceString = editedSequence.getString();
87
        }
88
        textReadLength = formFactory.createNumberTextWithLabelElement(formElement, "Read Length", readLength, style);
89
        textEditedSequence = formFactory.createTextWithLabelElement(formElement, "Edited Sequence 5'->3'", editedSequenceString, style);
90

    
91
        Primer primer = entity.getPrimer();
92
        String primerLabel = "";
93
        String primerSequence = "";
94
        Reference primerReference = null;
95
        if(primer!=null){
96
           primerLabel = primer.getLabel();
97
           primerSequence = primer.getSequence()==null?"":primer.getSequence().getSequenceString();
98
           primerReference = primer.getPublishedIn();
99
        }
100
        textPrimerName = formFactory.createTextWithLabelElement(formElement, "Primer Name", primerLabel, style);
101
        textPrimerSequence = formFactory.createTextWithLabelElement(formElement, "Primer seq. 5'->3'", primerSequence, style);
102

    
103
        selectionReference = formFactory
104
                .createSelectionElement(Reference.class,
105
                        getConversationHolder(), formElement, "Reference",
106
                        primerReference,
107
                        EntitySelectionElement.ALL, style);
108
    }
109

    
110
    /*
111
     * (non-Javadoc)
112
     *
113
     * @see
114
     * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
115
     * .lang.Object)
116
     */
117
    @Override
118
    public void handleEvent(Object eventSource) {
119
        if(eventSource==dateElement){
120
            getEntity().setDateSequenced(dateElement.getTimePeriod());
121
        }
122
        else if(eventSource==selectionSequencingStaff){
123
            getEntity().setActor(selectionSequencingStaff.getSelection());
124
        }
125
        else if(eventSource==comboMaterialOrMethod){
126
            getEntity().getMaterialOrMethod().setDefinedMaterialOrMethod(comboMaterialOrMethod.getSelection());
127
        }
128
        else if(eventSource==textReadLength){
129
            getEditedSequence().setLength(textReadLength.getInteger());
130
        }
131
        else if(eventSource==textEditedSequence){
132
            getEditedSequence().setString(textEditedSequence.getText());
133
        }
134
        else if(eventSource==textPrimerName){
135
            getPrimer().setLabel(textPrimerName.getText());
136
        }
137
        else if(eventSource==textPrimerSequence){
138
            Sequence sequence = getPrimer().getSequence();
139
            if(sequence==null){
140
                sequence = Sequence.NewInstance("");
141
            }
142
            sequence.setSequenceString(textPrimerSequence.getText());
143
        }
144
        else if(eventSource==selectionReference){
145
            getPrimer().setPublishedIn(selectionReference.getSelection());
146
        }
147
    }
148

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

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

    
168
}
(16-16/20)