Improving polytomous key handling
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / key / PolytomousKeyNodeDetailElement.java
1 /**
2 *
3 */
4 package eu.etaxonomy.taxeditor.ui.section.key;
5
6 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
7 import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory;
8 import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory.SelectionType;
9 import eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement;
10 import eu.etaxonomy.taxeditor.ui.forms.KeyStatementElement;
11 import eu.etaxonomy.taxeditor.ui.forms.NumberWithLabelElement;
12 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
13 import eu.etaxonomy.taxeditor.ui.selection.FeatureSelectionElement;
14 import eu.etaxonomy.taxeditor.ui.selection.PolytomousKeyNodeSelectionElement;
15 import eu.etaxonomy.taxeditor.ui.selection.PolytomousKeySelectionElement;
16 import eu.etaxonomy.taxeditor.ui.selection.TaxonSelectionElement;
17
18 /**
19 * @author n.hoffmann
20 *
21 */
22 public class PolytomousKeyNodeDetailElement extends
23 AbstractCdmDetailElement<PolytomousKeyNode> {
24
25 private KeyStatementElement element_statement;
26
27 private FeatureSelectionElement selection_feature;
28
29 private TaxonSelectionElement selection_taxon;
30
31 private PolytomousKeySelectionElement selection_subkey;
32
33 private PolytomousKeyNodeSelectionElement selection_otherNode;
34
35 private KeyStatementElement element_question;
36
37 public PolytomousKeyNodeDetailElement(CdmFormFactory formFactory,
38 ICdmFormElement formElement) {
39 super(formFactory, formElement);
40 }
41
42 @Override
43 protected void createControls(ICdmFormElement formElement,
44 PolytomousKeyNode entity, int style) {
45 if (!entity.isLeaf()) {
46 NumberWithLabelElement number_nodeNumber = formFactory
47 .createIntegerTextWithLabelElement(formElement,
48 "Node Number", entity.getNodeNumber(), style);
49 number_nodeNumber.setEnabled(false);
50 }
51
52 element_question = formFactory.createKeyStatementElement(formElement,
53 "Question", entity.getQuestion(), 50, style);
54
55 selection_feature = (FeatureSelectionElement) formFactory
56 .createSelectionElement(SelectionType.FEATURE,
57 getConversationHolder(), formElement, "Feature",
58 entity.getFeature(), FeatureSelectionElement.DEFAULT,
59 style);
60
61 if (entity.isLeaf()) {
62 selection_taxon = (TaxonSelectionElement) formFactory
63 .createSelectionElement(SelectionType.TAXON,
64 getConversationHolder(), formElement, "Taxon",
65 entity.getTaxon(), TaxonSelectionElement.DELETABLE,
66 style);
67 }
68
69 selection_subkey = (PolytomousKeySelectionElement) formFactory
70 .createSelectionElement(SelectionType.POLYTOMOUS_KEY,
71 getConversationHolder(), formElement, "Subkey",
72 entity.getSubkey(),
73 PolytomousKeySelectionElement.DEFAULT, style);
74
75 selection_otherNode = (PolytomousKeyNodeSelectionElement) formFactory
76 .createSelectionElement(SelectionType.POLYTOMOUS_KEY_NODE,
77 getConversationHolder(), formElement, "Other Node",
78 entity.getOtherNode(),
79 PolytomousKeyNodeSelectionElement.DEFAULT, style);
80
81 formFactory.createMultiLanguageTextElement(formElement,
82 "Modifying Text", entity.getModifyingText(), 50, style);
83
84 element_statement = formFactory.createKeyStatementElement(formElement,
85 "Statement", entity.getStatement(), 50, style);
86 }
87
88 /*
89 * (non-Javadoc)
90 *
91 * @see
92 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
93 * .lang.Object)
94 */
95 @Override
96 public void handleEvent(Object eventSource) {
97 if (eventSource == element_question) {
98 getEntity().setQuestion(element_question.getKeyStatement());
99 } else if (eventSource == element_statement) {
100 getEntity().setStatement(element_statement.getKeyStatement());
101 } else if (eventSource == selection_feature) {
102 getEntity().setFeature(selection_feature.getEntity());
103 } else if (eventSource == selection_taxon) {
104 getEntity().setTaxon(selection_taxon.getEntity());
105 } else if (eventSource == selection_subkey) {
106 getEntity().setSubkey(selection_subkey.getEntity());
107 } else if (eventSource == selection_otherNode) {
108 getEntity().setOtherNode(selection_otherNode.getEntity());
109 }
110 }
111 }