3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
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.
11 package eu
.etaxonomy
.taxeditor
.ui
.section
.taxon
;
13 import java
.util
.Arrays
;
15 import org
.eclipse
.jface
.util
.PropertyChangeEvent
;
16 import org
.eclipse
.swt
.SWT
;
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
;
34 * TaxonBaseDetailElement class.
38 * @created Feb 26, 2010
41 public class TaxonBaseDetailElement
extends AbstractCdmDetailElement
<TaxonBase
> {
43 private CheckboxElement checkbox_doubtful
;
45 private CheckboxElement checkbox_useNameCache
;
47 private ReferenceSelectionElement selection_secundum
;
49 private TextWithLabelElement text_appendedPhrase
;
51 private ToggleableTextElement toggleable_cache
;
53 private CheckboxElement checkbox_excluded
;
55 private CheckboxElement checkbox_unplaced
;
59 * Constructor for TaxonBaseDetailElement.
62 * @param cdmFormFactory
63 * a {@link eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory}
66 * a {@link eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement}
71 public TaxonBaseDetailElement(CdmFormFactory cdmFormFactory
,
72 ICdmFormElement formElement
, int style
) {
73 super(cdmFormFactory
, formElement
);
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
);
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
,
93 text_appendedPhrase
= formFactory
.createTextWithLabelElement(
94 formElement
, "Appended Phrase", entity
.getAppendedPhrase(),
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
);
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
}));
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())
131 super.propertyChange(event
);
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());
158 if (eventSource
!= toggleable_cache
) {
159 toggleable_cache
.setText(getEntity().getTitleCache());
161 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));