2 * Copyright (C) 2009 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
9 package eu
.etaxonomy
.taxeditor
.ui
.section
.taxon
;
11 import java
.util
.Arrays
;
13 import org
.eclipse
.jface
.util
.PropertyChangeEvent
;
14 import org
.eclipse
.swt
.SWT
;
15 import org
.eclipse
.ui
.IEditorInput
;
17 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
18 import eu
.etaxonomy
.cdm
.model
.taxon
.Synonym
;
19 import eu
.etaxonomy
.cdm
.model
.taxon
.SynonymType
;
20 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
21 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonRelationship
;
22 import eu
.etaxonomy
.taxeditor
.model
.TaxonRelationshipTypeInverseContainer
;
23 import eu
.etaxonomy
.taxeditor
.store
.StoreUtil
;
24 import eu
.etaxonomy
.taxeditor
.ui
.combo
.TermComboElement
;
25 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
26 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmPropertyChangeEvent
;
27 import eu
.etaxonomy
.taxeditor
.ui
.element
.CheckboxElement
;
28 import eu
.etaxonomy
.taxeditor
.ui
.element
.ICdmFormElement
;
29 import eu
.etaxonomy
.taxeditor
.ui
.element
.ISelectableElement
;
30 import eu
.etaxonomy
.taxeditor
.ui
.element
.SelectionArbitrator
;
31 import eu
.etaxonomy
.taxeditor
.ui
.element
.TextWithLabelElement
;
32 import eu
.etaxonomy
.taxeditor
.ui
.element
.ToggleableTextElement
;
33 import eu
.etaxonomy
.taxeditor
.ui
.section
.AbstractCdmDetailElement
;
34 import eu
.etaxonomy
.taxeditor
.ui
.selection
.EntitySelectionElement
;
41 public class TaxonRelationshipDetailElement
extends AbstractCdmDetailElement
<TaxonRelationship
> {
43 // private TermComboElement<TaxonRelationshipTypeInverseContainer> combo_taxonRelationshipType;
45 // private EntitySelectionElement<Taxon> selection_relatedTaxon;
46 protected ToggleableTextElement toggleable_cache
;
47 private EntitySelectionElement
<Reference
> secReference
;
48 private EntitySelectionElement
<Reference
> sensuReference
;
49 private TextWithLabelElement text_sensu_microreference
;
50 private CheckboxElement checkbox_doubtful
;
52 private TextWithLabelElement text_secundum_microreference
;
54 private TextWithLabelElement text_appendedPhrase
;
56 private CheckboxElement checkbox_published
;
58 private SelectionArbitrator selectionArbitrator
;
63 public TaxonRelationshipDetailElement(CdmFormFactory formFactory
,
64 ICdmFormElement formElement
) {
65 super(formFactory
, formElement
);
70 protected void createControls(ICdmFormElement formElement
,
71 TaxonRelationship entity
, int style
) {
72 // combo_taxonRelationshipType = formFactory.createTermComboElement(
73 // TaxonRelationshipTypeInverseContainer.class,
74 // formElement, "Relationship Type",
75 // getTaxonRelationshipTypeInverseContainer(), style);
76 // combo_taxonRelationshipType.setEnabled(false);
77 // selection_relatedTaxon = formFactory.createSelectionElement(
78 // Taxon.class, getConversationHolder(),
79 // formElement, "Related Taxon", getRelatedTaxon(),
80 // EntitySelectionElement.SELECTABLE, style);
81 taxon
= entity
.getFromTaxon();
82 toggleable_cache
= formFactory
.createToggleableTextField(formElement
,
83 "Title Cache", taxon
.getTitleCache(),
84 taxon
.isProtectedTitleCache(), style
);
86 text_appendedPhrase
= formFactory
.createTextWithLabelElement(
87 formElement
, "Appended Phrase", taxon
.getAppendedPhrase(),
91 sensuReference
= formFactory
.createSelectionElement(Reference
.class,
92 getConversationHolder(), formElement
, "Sensu",
93 getEntity().getCitation(), EntitySelectionElement
.ALL
,
96 text_sensu_microreference
= formFactory
.createTextWithLabelElement(
97 formElement
, "Detail",
98 getEntity().getCitationMicroReference(),null,
104 checkbox_published
= formFactory
.createCheckbox(formElement
,
105 "Published", taxon
.isPublish(), style
);
108 secReference
= formFactory
.createSelectionElement(Reference
.class,
109 getConversationHolder(), formElement
, "Err. Secundum",
110 taxon
.getSec(), EntitySelectionElement
.ALL
,
113 text_secundum_microreference
= formFactory
.createTextWithLabelElement(
114 formElement
, "Detail",
115 taxon
.getSecMicroReference(),null,
117 checkbox_doubtful
= formFactory
.createCheckbox(formElement
,
118 "Misappl. doubtful", entity
.isDoubtful(), style
);
123 private Taxon
getRelatedTaxon() {
124 return TaxonRelationshipTypeInverseContainer
.RelatedTaxon(getSourceTaxon(), getEntity());
127 private TaxonRelationshipTypeInverseContainer
getTaxonRelationshipTypeInverseContainer(){
128 return TaxonRelationshipTypeInverseContainer
.CreateFromSource(getSourceTaxon(), getEntity());
131 private Taxon
getSourceTaxon(){
132 IEditorInput editorInput
= StoreUtil
.getActiveEditorInput();
133 return (Taxon
) editorInput
.getAdapter(Taxon
.class);
137 public void handleEvent(Object eventSource
) {
138 if (eventSource
== toggleable_cache
) {
139 handleToggleableCacheField();
140 } else if (eventSource
== checkbox_doubtful
) {
141 taxon
.setDoubtful(checkbox_doubtful
.getSelection());
142 } else if (eventSource
== secReference
) {
143 taxon
.setSec(secReference
.getSelection());
144 } else if (eventSource
== text_appendedPhrase
) {
145 taxon
.setAppendedPhrase(text_appendedPhrase
.getText());
146 } else if (eventSource
== text_secundum_microreference
) {
147 taxon
.setSecMicroReference(text_secundum_microreference
.getText());
148 } else if (eventSource
== checkbox_published
) {
149 taxon
.setPublish(checkbox_published
.getSelection());
150 } else if (eventSource
== text_sensu_microreference
) {
151 getEntity().setCitationMicroReference(text_sensu_microreference
.getText());
152 }else if (eventSource
== sensuReference
) {
153 getEntity().setCitation(sensuReference
.getSelection());
157 protected void handleToggleableCacheField() {
158 boolean pushedState
= toggleable_cache
.getState();
160 taxon
.setTitleCache(toggleable_cache
.getText(), pushedState
);
161 setIrrelevant(pushedState
, Arrays
.asList(new Object
[] { toggleable_cache
, checkbox_published
}));
162 updateToggleableCacheField();
165 public void updateToggleableCacheField() {
166 if (toggleable_cache
!= null){
167 if (!taxon
.isProtectedTitleCache()) {
168 toggleable_cache
.setText(taxon
.generateTitle());
174 protected void updateContent() {
175 super.updateContent();
176 toggleable_cache
.setEnabled(taxon
.isProtectedTitleCache());
177 setIrrelevant(toggleable_cache
.getState(),
178 Arrays
.asList(new Object
[] { toggleable_cache
, checkbox_published
}));
181 protected void updateControlStates() {
182 super.updateControlStates();
186 protected void handleTitleCacheRelevantChange(PropertyChangeEvent event
) {
187 String title
= taxon
.generateTitle();
188 taxon
.setTitleCache(title
);
189 super.handleTitleCacheRelevantChange(event
);
193 public void refresh(){
195 updateToggleableCacheField();