3ec0627e43e062282c7d4089ee45a31441690c44
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / occurrence / dna / PrimerGeneralDetailElement.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.molecular.Primer;
13 import eu.etaxonomy.cdm.model.molecular.SequenceString;
14 import eu.etaxonomy.cdm.model.reference.Reference;
15 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
16 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
17 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
18 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
19 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
20
21 /**
22 * @author pplitzner
23 * @date 06.01.2014
24 *
25 */
26 public class PrimerGeneralDetailElement extends AbstractCdmDetailElement<Primer> {
27
28
29 private TextWithLabelElement textPrimerName;
30 //TODO we are using a basic text field which is backed up by a Sequence object modelwise.
31 // This is a bit of a overhead as we may just need the sequence string. This may change in future in both directions:
32 // either extending this view to support the remaining fields of Sequence or by switching to the more basic SequenceString model element
33 private TextWithLabelElement textPrimerSequence;
34 private EntitySelectionElement<Reference> selectionReference;
35
36 /**
37 * @param formFactory
38 * @param formElement
39 */
40 public PrimerGeneralDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
41 super(formFactory, formElement);
42 }
43
44 /*
45 * (non-Javadoc)
46 *
47 * @see
48 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls
49 * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int)
50 */
51 @Override
52 protected void createControls(ICdmFormElement formElement, Primer entity, int style) {
53 textPrimerName = formFactory.createTextWithLabelElement(formElement, "Primer Name", entity.getLabel(), style);
54 String sequenceString = "";
55 if(entity.getSequence()!=null){
56 sequenceString = entity.getSequence().getString();
57 }
58 textPrimerSequence = formFactory.createTextWithLabelElement(formElement, "Primer seq. 5'->3'", sequenceString, style);
59
60 selectionReference = formFactory
61 .createSelectionElement(Reference.class,
62 getConversationHolder(), formElement, "Reference",
63 entity.getPublishedIn(),
64 EntitySelectionElement.ALL, style);
65 }
66
67 /*
68 * (non-Javadoc)
69 *
70 * @see
71 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
72 * .lang.Object)
73 */
74 @Override
75 public void handleEvent(Object eventSource) {
76 if(eventSource==textPrimerName){
77 getEntity().setLabel(textPrimerName.getText());
78 }
79 else if(eventSource==textPrimerSequence){
80 SequenceString sequenceString = getEntity().getSequence();
81 if(sequenceString==null){
82 sequenceString = SequenceString.NewInstance("");
83 getEntity().setSequence(sequenceString);
84 }
85 sequenceString.setString(textPrimerSequence.getText());
86 }
87 else if(eventSource==selectionReference){
88 getEntity().setPublishedIn(selectionReference.getSelection());
89 }
90 }
91 }