merge-update from trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / occurrence / dna / SequenceGeneralDetailElement.java
1 // $Id$
2 /**
3 * Copyright (C) 2013 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 java.net.URI;
13 import java.net.URISyntaxException;
14
15 import org.eclipse.swt.widgets.Text;
16
17 import eu.etaxonomy.cdm.model.common.DefinedTerm;
18 import eu.etaxonomy.cdm.model.common.TermType;
19 import eu.etaxonomy.cdm.model.molecular.Sequence;
20 import eu.etaxonomy.cdm.model.molecular.SequenceString;
21 import eu.etaxonomy.taxeditor.preference.Resources;
22 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
23 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
24 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
25 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
26 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
27 import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;
28 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
29
30 /**
31 * @author pplitzner
32 * @date 19.12.2013
33 *
34 */
35 public class SequenceGeneralDetailElement extends AbstractCdmDetailElement<Sequence> {
36
37 private TermComboElement<DefinedTerm> comboMarker;
38 private TextWithLabelElement textConsensusSequence;
39 private NumberWithLabelElement textConsensusSequenceLength;
40 private TextWithLabelElement textBarcodeSequence;
41 private TextWithLabelElement textGeneticAccessNo;
42 private UriWithLabelElement textNCBIUri;
43 private UriWithLabelElement textENAUri;
44 private UriWithLabelElement textDDBJUri;
45 private TextWithLabelElement textBoldProcessID;
46 private UriWithLabelElement textBoldUri;
47
48 /**
49 * @param formFactory
50 * @param formElement
51 */
52 public SequenceGeneralDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
53 super(formFactory, formElement);
54 }
55
56 /*
57 * (non-Javadoc)
58 *
59 * @see
60 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls
61 * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int)
62 */
63 @Override
64 protected void createControls(ICdmFormElement formElement, Sequence entity, int style) {
65 comboMarker = formFactory.createDefinedTermComboElement(TermType.DnaMarker, formElement, "DNA Marker", entity.getDnaMarker(), style);
66 // textConsensusSequence = formFactory.createTextWithLabelElement(formElement, "Consensus Sequence 5'->3'", entity.getConsensusSequence().getString(), style);
67 // textConsensusSequenceLength = formFactory.createNumberTextWithLabelElement(formElement, "Consensus Seq. Length", entity.getConsensusSequence().getLength(), style);
68 // ((Text) textConsensusSequenceLength.getMainControl()).setEditable(false);
69 textBarcodeSequence = formFactory.createTextWithLabelElement(formElement, "Barcode Sequence 5'->3'", entity.getBarcodeSequencePart()==null?"":entity.getBarcodeSequencePart().getString(), style);
70
71 URI genBankUri = null;
72 URI emblUri = null;
73 URI ddbjUri = null;
74 URI boldUri = null;
75 try{
76 genBankUri = entity.getGenBankUri();
77 emblUri = entity.getEmblUri();
78 ddbjUri = entity.getDdbjUri();
79 boldUri = entity.getBoldUri();
80 }
81 catch(URISyntaxException e){
82
83 }
84 textGeneticAccessNo = formFactory.createTextWithLabelElement(formElement, "Genetic Acc. No.", entity.getGeneticAccessionNumber(), style);
85 textNCBIUri = formFactory.createUriWithLabelElement(formElement, "NCBI URI", genBankUri, style);
86 ((Text) textNCBIUri.getMainControl()).setEditable(false);
87 textENAUri = formFactory.createUriWithLabelElement(formElement, "ENA URI", emblUri, style);
88 ((Text) textENAUri.getMainControl()).setEditable(false);
89 textDDBJUri = formFactory.createUriWithLabelElement(formElement, "DDBJ URI", ddbjUri, style);
90 ((Text) textDDBJUri.getMainControl()).setEditable(false);
91 textBoldProcessID = formFactory.createTextWithLabelElement(formElement, "BOLD Process ID", entity.getBoldProcessId(), style);
92 textBoldUri = formFactory.createUriWithLabelElement(formElement, "BOLD URI", boldUri, style);
93 ((Text) textBoldUri.getMainControl()).setEditable(false);
94 ((Text) textBoldUri.getMainControl()).setToolTipText("Query BOLD");
95 }
96
97 /*
98 * (non-Javadoc)
99 *
100 * @see
101 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
102 * .lang.Object)
103 */
104 @Override
105 public void handleEvent(Object eventSource) {
106 if(eventSource==comboMarker){
107 getEntity().setDnaMarker(comboMarker.getSelection());
108 }
109 else if(eventSource==textConsensusSequence){
110 SequenceString consensusSequence = getEntity().getConsensusSequence();
111 if(consensusSequence==null){
112 consensusSequence = SequenceString.NewInstance();
113 }
114 consensusSequence.setString(textConsensusSequence.getText());
115 getEntity().setConsensusSequence(consensusSequence);
116 textConsensusSequenceLength.setNumber(consensusSequence.getLength());
117 }
118 else if(eventSource==textBarcodeSequence){
119 SequenceString barcodeSequencePart = getEntity().getBarcodeSequencePart();
120 if(barcodeSequencePart==null){
121 barcodeSequencePart = SequenceString.NewInstance();
122 }
123 barcodeSequencePart.setString(textBarcodeSequence.getText());
124 getEntity().setBarcodeSequencePart(barcodeSequencePart);
125 }
126 else if(eventSource==textGeneticAccessNo){
127 textGeneticAccessNo.setBackground(getPersistentBackground());
128 getEntity().setGeneticAccessionNumber(textGeneticAccessNo.getText());
129 if(textGeneticAccessNo.getText()!=null && !textGeneticAccessNo.getText().isEmpty()){
130 try {
131 textNCBIUri.setUri(getEntity().getGenBankUri());
132 textENAUri.setUri(getEntity().getEmblUri());
133 textDDBJUri.setUri(getEntity().getDdbjUri());
134 } catch (URISyntaxException e) {
135 textGeneticAccessNo.setBackground(getColor(Resources.COLOR_PARSE_ERROR));
136 }
137 }
138 else{
139 textNCBIUri.setText("");
140 textENAUri.setText("");
141 textDDBJUri.setText("");
142 }
143 }
144 else if(eventSource==textBoldProcessID){
145 textBoldProcessID.setBackground(getPersistentBackground());
146 getEntity().setBoldProcessId(textBoldProcessID.getText());
147 if(textBoldProcessID.getText()!=null && !textBoldProcessID.getText().isEmpty()){
148 try {
149 textBoldUri.setUri(getEntity().getBoldUri());
150 } catch (URISyntaxException e) {
151 textBoldProcessID.setBackground(getColor(Resources.COLOR_PARSE_ERROR));
152 }
153 }
154 else{
155 textBoldUri.setText("");
156 }
157 }
158 }
159
160 }