392e6dc673a8dc6a58e9c849c066bcee88cd0686
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / taxon / TaxonBaseDetailElement.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 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
11 package eu.etaxonomy.taxeditor.ui.section.taxon;
12
13 import java.util.Arrays;
14
15 import org.eclipse.jface.util.PropertyChangeEvent;
16 import org.eclipse.swt.SWT;
17
18 import eu.etaxonomy.cdm.model.taxon.Taxon;
19 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
20 import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory;
21 import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory.SelectionType;
22 import eu.etaxonomy.taxeditor.ui.forms.CdmPropertyChangeEvent;
23 import eu.etaxonomy.taxeditor.ui.forms.CheckboxElement;
24 import eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement;
25 import eu.etaxonomy.taxeditor.ui.forms.TextWithLabelElement;
26 import eu.etaxonomy.taxeditor.ui.forms.ToggleableTextElement;
27 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
28 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
29 import eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailElement;
30 import eu.etaxonomy.taxeditor.ui.selection.ReferenceSelectionElement;
31
32 /**
33 * <p>
34 * TaxonBaseDetailElement class.
35 * </p>
36 *
37 * @author n.hoffmann
38 * @created Feb 26, 2010
39 * @version 1.0
40 */
41 public class TaxonBaseDetailElement extends AbstractCdmDetailElement<TaxonBase> {
42
43 private CheckboxElement checkbox_doubtful;
44
45 private CheckboxElement checkbox_useNameCache;
46
47 private ReferenceSelectionElement selection_secundum;
48
49 private TextWithLabelElement text_appendedPhrase;
50
51 private ToggleableTextElement toggleable_cache;
52
53 private CheckboxElement checkbox_excluded;
54
55 private CheckboxElement checkbox_unplaced;
56
57 /**
58 * <p>
59 * Constructor for TaxonBaseDetailElement.
60 * </p>
61 *
62 * @param cdmFormFactory
63 * a {@link eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory}
64 * object.
65 * @param formElement
66 * a {@link eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement}
67 * object.
68 * @param style
69 * a int.
70 */
71 public TaxonBaseDetailElement(CdmFormFactory cdmFormFactory,
72 ICdmFormElement formElement, int style) {
73 super(cdmFormFactory, formElement);
74 }
75
76 /** {@inheritDoc} */
77 @Override
78 protected void createControls(ICdmFormElement formElement,
79 TaxonBase entity, int style) {
80 toggleable_cache = formFactory.createToggleableTextField(formElement,
81 "Title Cache", entity.getTitleCache(),
82 entity.isProtectedTitleCache(), style);
83
84 checkbox_doubtful = formFactory.createCheckbox(formElement,
85 "Is doubtful", entity.isDoubtful(), style);
86 checkbox_useNameCache = formFactory.createCheckbox(formElement,
87 "Exclude Authorship", entity.isUseNameCache(), style);
88 selection_secundum = (ReferenceSelectionElement) formFactory
89 .createSelectionElement(SelectionType.REFERENCE,
90 getConversationHolder(), formElement, "Secundum",
91 entity.getSec(), ReferenceSelectionElement.DEFAULT,
92 style);
93 text_appendedPhrase = formFactory.createTextWithLabelElement(
94 formElement, "Appended Phrase", entity.getAppendedPhrase(),
95 SWT.NULL);
96
97 if (entity instanceof Taxon) {
98 checkbox_excluded = formFactory.createCheckbox(formElement,
99 "Is excluded", ((Taxon) entity).isExcluded(), style);
100 checkbox_unplaced = formFactory.createCheckbox(formElement,
101 "Is unplaced", ((Taxon) entity).isUnplaced(), style);
102 }
103 }
104
105 /** {@inheritDoc} */
106 @Override
107 protected void updateContent() {
108 super.updateContent();
109 toggleable_cache.setEnabled(getEntity().isProtectedTitleCache());
110 setIrrelevant(toggleable_cache.getState(),
111 Arrays.asList(new Object[] { toggleable_cache }));
112 }
113
114 /** {@inheritDoc} */
115 @Override
116 public void propertyChange(PropertyChangeEvent event) {
117 Object eventSource = event.getSource();
118 if (eventSource instanceof ICdmFormElement) {
119 ICdmFormElement element = (ICdmFormElement) eventSource;
120 ICdmFormElement parentElement = element.getParentElement();
121 if (parentElement instanceof NonViralNameDetailElement) {
122 String title = getEntity().generateTitle();
123 getEntity().setTitleCache(title);
124 toggleable_cache.setText(title);
125 if (getParentElement() instanceof AbstractCdmDetailSection)
126 ((AbstractCdmDetailSection) getParentElement())
127 .updateTitle();
128 }
129 }
130
131 super.propertyChange(event);
132 }
133
134 /** {@inheritDoc} */
135 @Override
136 public void handleEvent(Object eventSource) {
137 if (eventSource.equals(toggleable_cache)) {
138 getEntity().setTitleCache(toggleable_cache.getText(),
139 toggleable_cache.getState());
140 // setEnabled(! toggleable_titleCache.getState(), Arrays.asList(new
141 // Object[]{toggleable_titleCache}));
142 setIrrelevant(toggleable_cache.getState(),
143 Arrays.asList(new Object[] { toggleable_cache }));
144 } else if (eventSource.equals(checkbox_doubtful)) {
145 getEntity().setDoubtful(checkbox_doubtful.getSelection());
146 } else if (eventSource.equals(checkbox_useNameCache)) {
147 getEntity().setUseNameCache(checkbox_useNameCache.getSelection());
148 } else if (eventSource.equals(selection_secundum)) {
149 getEntity().setSec(selection_secundum.getSelection());
150 } else if (eventSource.equals(text_appendedPhrase)) {
151 getEntity().setAppendedPhrase(text_appendedPhrase.getText());
152 } else if (eventSource == checkbox_excluded) {
153 ((Taxon) getEntity()).setExcluded(checkbox_excluded.getSelection());
154 } else if (eventSource == checkbox_unplaced) {
155 ((Taxon) getEntity()).setUnplaced(checkbox_unplaced.getSelection());
156 }
157
158 if (eventSource != toggleable_cache) {
159 toggleable_cache.setText(getEntity().getTitleCache());
160 }
161 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
162 }
163 }