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
;
17 import org
.eclipse
.ui
.forms
.widgets
.ExpandableComposite
;
19 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
20 import eu
.etaxonomy
.cdm
.model
.taxon
.Synonym
;
21 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
22 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonBase
;
23 import eu
.etaxonomy
.cdm
.persistence
.hibernate
.permission
.Role
;
24 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
25 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
26 import eu
.etaxonomy
.taxeditor
.ui
.element
.CheckboxElement
;
27 import eu
.etaxonomy
.taxeditor
.ui
.element
.ICdmFormElement
;
28 import eu
.etaxonomy
.taxeditor
.ui
.element
.LayoutConstants
;
29 import eu
.etaxonomy
.taxeditor
.ui
.element
.TextWithLabelElement
;
30 import eu
.etaxonomy
.taxeditor
.ui
.section
.AbstractIdentifiableEntityDetailElement
;
31 import eu
.etaxonomy
.taxeditor
.ui
.section
.name
.SynonymRelationshipDetailSection
;
32 import eu
.etaxonomy
.taxeditor
.ui
.selection
.EntitySelectionElement
;
36 * TaxonBaseDetailElement class.
40 * @created Feb 26, 2010
43 public class TaxonBaseDetailElement
extends AbstractIdentifiableEntityDetailElement
<TaxonBase
> {
45 private CheckboxElement checkbox_doubtful
;
47 private CheckboxElement checkbox_useNameCache
;
49 private EntitySelectionElement
<Reference
> selection_secundum
;
51 private TextWithLabelElement text_appendedPhrase
;
53 private CheckboxElement checkbox_excluded
;
55 private CheckboxElement checkbox_unplaced
;
57 private CheckboxElement checkbox_published
;
59 private SynonymRelationshipDetailSection sectionSynonymRelationship
;
63 * Constructor for TaxonBaseDetailElement.
66 * @param cdmFormFactory
67 * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
69 * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
73 public TaxonBaseDetailElement(CdmFormFactory cdmFormFactory
,
74 ICdmFormElement formElement
, int style
) {
75 super(cdmFormFactory
, formElement
);
80 protected void createControls(ICdmFormElement formElement
,
81 TaxonBase entity
, int style
) {
82 toggleable_cache
= formFactory
.createToggleableTextField(formElement
,
83 "Title Cache", entity
.getTitleCache(),
84 entity
.isProtectedTitleCache(), style
);
86 selection_secundum
= formFactory
87 .createSelectionElement(Reference
.class,
88 getConversationHolder(), formElement
, "Secundum",
89 entity
.getSec(), EntitySelectionElement
.ALL
,
92 text_appendedPhrase
= formFactory
.createTextWithLabelElement(
93 formElement
, "Appended Phrase", entity
.getAppendedPhrase(),
95 checkbox_useNameCache
= formFactory
.createCheckbox(formElement
,
96 "Exclude Authorship", entity
.isUseNameCache(), style
);
98 if (entity
instanceof Taxon
) {
99 checkbox_excluded
= formFactory
.createCheckbox(formElement
,
100 "Taxon is excluded", ((Taxon
) entity
).isExcluded(), style
);
101 checkbox_unplaced
= formFactory
.createCheckbox(formElement
,
102 "Taxon is unplaced", ((Taxon
) entity
).isUnplaced(), style
);
105 checkbox_doubtful
= formFactory
.createCheckbox(formElement
,
106 entity
.getClass().getSimpleName() + " is doubtful", entity
.isDoubtful(), style
);
108 if (entity
instanceof Taxon
) {
109 checkbox_published
= formFactory
.createCheckbox(formElement
,
110 "Taxon is published", ((Taxon
) entity
).isPublish(), style
);
111 checkbox_published
.setEnabled(
112 CdmStore
.currentAuthentiationHasOneOfRoles(Role
.ROLE_PUBLISH
, Role
.ROLE_ADMIN
)
116 if(entity
instanceof Synonym
){
117 sectionSynonymRelationship
= formFactory
.createSynonymRelationshipDetailSection(getConversationHolder(), formElement
, ExpandableComposite
.TWISTIE
);
118 sectionSynonymRelationship
.setLayoutData(LayoutConstants
.FILL_HORIZONTALLY(2, 1));
119 sectionSynonymRelationship
.setEntity((Synonym
) entity
);
125 protected void updateContent() {
126 super.updateContent();
127 toggleable_cache
.setEnabled(getEntity().isProtectedTitleCache());
128 setIrrelevant(toggleable_cache
.getState(),
129 Arrays
.asList(new Object
[] { toggleable_cache
}));
133 protected void handleTitleCacheRelevantChange(PropertyChangeEvent event
) {
134 String title
= getEntity().generateTitle();
135 getEntity().setTitleCache(title
);
136 super.handleTitleCacheRelevantChange(event
);
141 public void handleEvent(Object eventSource
) {
142 if (eventSource
== toggleable_cache
) {
143 handleToggleableCacheField();
144 } else if (eventSource
== checkbox_doubtful
) {
145 getEntity().setDoubtful(checkbox_doubtful
.getSelection());
146 } else if (eventSource
== checkbox_useNameCache
) {
147 getEntity().setUseNameCache(checkbox_useNameCache
.getSelection());
148 } else if (eventSource
== selection_secundum
) {
149 getEntity().setSec(selection_secundum
.getSelection());
150 } else if (eventSource
== 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 } else if (eventSource
== checkbox_published
) {
157 ((Taxon
)getEntity()).setPublish(checkbox_published
.getSelection());