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 org
.eclipse
.jface
.util
.PropertyChangeEvent
;
12 import org
.eclipse
.swt
.SWT
;
14 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
15 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
16 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonRelationship
;
17 import eu
.etaxonomy
.taxeditor
.event
.EventUtility
;
18 import eu
.etaxonomy
.taxeditor
.event
.WorkbenchEventConstants
;
19 import eu
.etaxonomy
.taxeditor
.model
.TaxonRelationshipTypeInverseContainer
;
20 import eu
.etaxonomy
.taxeditor
.store
.StoreUtil
;
21 import eu
.etaxonomy
.taxeditor
.ui
.combo
.MisappliedRelationshipComboElement
;
22 import eu
.etaxonomy
.taxeditor
.ui
.combo
.term
.TermComboElement
;
23 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
24 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmPropertyChangeEvent
;
25 import eu
.etaxonomy
.taxeditor
.ui
.element
.CheckboxElement
;
26 import eu
.etaxonomy
.taxeditor
.ui
.element
.ICdmFormElement
;
27 import eu
.etaxonomy
.taxeditor
.ui
.element
.LayoutConstants
;
28 import eu
.etaxonomy
.taxeditor
.ui
.element
.SelectionArbitrator
;
29 import eu
.etaxonomy
.taxeditor
.ui
.element
.TextWithLabelElement
;
30 import eu
.etaxonomy
.taxeditor
.ui
.element
.ToggleableTextElement
;
31 import eu
.etaxonomy
.taxeditor
.ui
.section
.supplemental
.AbstractSingleSourceElement
;
32 import eu
.etaxonomy
.taxeditor
.ui
.selection
.EntitySelectionElement
;
39 public class TaxonRelationshipDetailElement
extends AbstractSingleSourceElement
<TaxonRelationship
> {//TODO: use AbstractSingleSourcedElement
41 private TermComboElement
<TaxonRelationshipTypeInverseContainer
> combo_taxonRelationshipType
;
42 private MisappliedRelationshipComboElement combo_misappliedRelationshipType
;
44 private EntitySelectionElement
<Taxon
> selection_relatedTaxon
;
45 private CheckboxElement checkBoxDoubtful
;
46 protected ToggleableTextElement toggleable_cache
;
47 // private EntitySelectionElement<Reference> secReference;
48 private EntitySelectionElement
<Reference
> sensuReference
;
49 private TextWithLabelElement text_sensu_microreference
;
52 // private TextWithLabelElement text_secundum_microreference;
54 private TextWithLabelElement text_appendedPhrase
;
56 private CheckboxElement checkbox_published
;
60 private TaxonDetailSection taxonElement
;
62 public TaxonDetailSection
getTaxonElement() {
66 public TaxonRelationshipDetailElement(CdmFormFactory formFactory
,
67 ICdmFormElement formElement
) {
69 super(formFactory
, formElement
);
73 public void createControls(ICdmFormElement formElement
,
74 TaxonRelationship entity
, int style
) {
75 if ((entity
.getType().isAnyMisappliedName()) ){
77 taxon
= entity
.getFromTaxon();
79 taxonElement
= formFactory
.createTaxonDetailSection(getConversationHolder(), formElement
, null, StoreUtil
.getSectionStyle(TaxonDetailSection
.class, Taxon
.class.getCanonicalName()));
80 taxonElement
.setLayoutData(LayoutConstants
.FILL_HORIZONTALLY(2, 1));
81 addControl(taxonElement
);
82 addElement(taxonElement
);
84 if (entity
.getType().isAnyMisappliedName()) {
89 text_appendedPhrase
= formFactory
.createTextWithLabelElement(
90 this, "Appended Phrase", taxon
.getAppendedPhrase(),
93 checkbox_published
= formFactory
.createCheckbox(this,
94 "Published", taxon
.isPublish(), style
);
95 sensuReference
= formFactory
.createSelectionElement(Reference
.class,//getConversationHolder(),
97 taxon
.getSec(), EntitySelectionElement
.ALL
,
100 text_sensu_microreference
= formFactory
.createTextWithLabelElement(
101 formElement
, "Detail",
102 taxon
.getSecMicroReference(),null,
105 if (entity
.getType().isAnyMisappliedName()) {
106 label
= "Misapplication Type";
108 label
= "Relationship Type";
110 combo_misappliedRelationshipType
= formFactory
.createMisappliedRelationshipComboElement(formElement
, label
,
111 entity
.getType(), style
);
113 combo_misappliedRelationshipType
.setEnabled(true);
116 if (entity
.getType().isAnyMisappliedName()) {
117 label
= "Misappl. Sec.";
122 /*TODO: use super.createControls(); to create single source element
123 secReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
125 entity.getCitation(), EntitySelectionElement.ALL,
128 text_secundum_microreference = formFactory.createTextWithLabelElement(
129 formElement, "Detail",
130 entity.getCitationMicroReference(),null,
133 super.createControls(formElement
, entity
, style
);
134 setSourceLabel(label
);
136 if (entity
.getType().isAnyMisappliedName()) {
137 label
= "Misapplication Doubtful";
139 label
= "Relationship Doubtful";
141 checkBoxDoubtful
= formFactory
.createCheckbox(formElement
, label
, entity
.isDoubtful(), style
);
142 }else if (entity
.getType().isAnySynonym() ){
143 taxon
= entity
.getFromTaxon();
145 taxonElement
= formFactory
.createTaxonDetailSection(getConversationHolder(), formElement
, null, StoreUtil
.getSectionStyle(TaxonDetailSection
.class, Taxon
.class.getCanonicalName()));
146 taxonElement
.setLayoutData(LayoutConstants
.FILL_HORIZONTALLY(2, 1));
147 addControl(taxonElement
);
148 addElement(taxonElement
);
151 text_appendedPhrase
= formFactory
.createTextWithLabelElement(
152 this, "Appended Phrase", taxon
.getAppendedPhrase(),
155 checkbox_published
= formFactory
.createCheckbox(this,
156 "Published", taxon
.isPublish(), style
);
158 * secReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
160 formElement, "Syn. Sec.",
161 entity.getCitation(), EntitySelectionElement.ALL,
164 text_secundum_microreference = formFactory.createTextWithLabelElement(
165 formElement, "Detail",
166 entity.getCitationMicroReference(),null,
170 super.createControls(formElement
, entity
, style
);
171 setSourceLabel("Syn. Sec.");
172 sensuReference
= formFactory
.createSelectionElement(Reference
.class,//getConversationHolder(),
174 taxon
.getSec(), EntitySelectionElement
.ALL
,
177 text_sensu_microreference
= formFactory
.createTextWithLabelElement(
178 formElement
, "Detail",
179 taxon
.getSecMicroReference(),null,
182 combo_misappliedRelationshipType
= formFactory
.createMisappliedRelationshipComboElement(formElement
, "Synonym Type",
183 entity
.getType(), style
);
185 combo_misappliedRelationshipType
.setEnabled(true);
186 checkBoxDoubtful
= formFactory
.createCheckbox(formElement
, "Syn. Doubtful", entity
.isDoubtful(), style
);
189 combo_taxonRelationshipType
= formFactory
.createTermComboElement(
190 TaxonRelationshipTypeInverseContainer
.class,
191 formElement
, "Relationship Type",
192 getTaxonRelationshipTypeInverseContainer(), style
);
194 combo_taxonRelationshipType
.setEnabled(false);
195 selection_relatedTaxon
= formFactory
.createSelectionElement(
196 Taxon
.class, //getConversationHolder(),
197 formElement
, "Related Taxon", getRelatedTaxon(),
198 EntitySelectionElement
.SELECTABLE
, style
);
199 checkBoxDoubtful
= formFactory
.createCheckbox(formElement
, "Relation Doubtful", entity
.isDoubtful(), style
);
206 private Taxon
getRelatedTaxon() {
207 return TaxonRelationshipTypeInverseContainer
.RelatedTaxon(getSourceTaxon(), getEntity());
210 private TaxonRelationshipTypeInverseContainer
getTaxonRelationshipTypeInverseContainer(){
211 return TaxonRelationshipTypeInverseContainer
.CreateFromSource(getSourceTaxon(), getEntity());
214 private Taxon
getSourceTaxon(){
215 return EventUtility
.getCurrentTaxon();
219 public void handleEvent(Object eventSource
) {
220 if (getEntity().getType().isAnyMisappliedName() || getEntity().getType().isAnySynonym()){
221 /* if (eventSource == secReference) {
222 getEntity().setCitation(secReference.getSelection());
223 } else if (eventSource == text_secundum_microreference) {
224 getEntity().setCitationMicroReference(text_secundum_microreference.getText());
227 if (eventSource
== text_sensu_microreference
) {
228 taxon
.setSecMicroReference(text_sensu_microreference
.getText());
229 } else if (eventSource
== sensuReference
) {
230 taxon
.setSec(sensuReference
.getSelection());
231 } else if (eventSource
== combo_taxonRelationshipType
) {
232 getEntity().setType(combo_taxonRelationshipType
.getSelection().getType());
233 } else if ( eventSource
== combo_misappliedRelationshipType
) {
234 getEntity().setType(combo_misappliedRelationshipType
.getSelection());
235 } else if (eventSource
== text_appendedPhrase
) {
236 taxon
.setAppendedPhrase(text_appendedPhrase
.getText());
237 } else if (eventSource
== checkbox_published
) {
238 taxon
.setPublish(checkbox_published
.getSelection());
241 if (eventSource
== selection_relatedTaxon
){
242 boolean inverse
= getTaxonRelationshipTypeInverseContainer().isInverse();
243 Taxon relatedTaxon
= selection_relatedTaxon
.getEntity();
245 getEntity().setFromTaxon(relatedTaxon
);
247 getEntity().setToTaxon(relatedTaxon
);
251 if(eventSource
==checkBoxDoubtful
){
252 getEntity().setDoubtful(checkBoxDoubtful
.getSelection());
254 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
255 EventUtility
.postEvent(WorkbenchEventConstants
.REFRESH_NAME_EDITOR
, getEntity().getToTaxon());
256 taxonElement
.updateTitle();
260 protected void updateControlStates() {
261 super.updateControlStates();
265 protected void handleTitleCacheRelevantChange(PropertyChangeEvent event
) {
266 if (getEntity().getType().isAnyMisappliedName() || getEntity().getType().isAnySynonym()){
267 String title
= taxon
.generateTitle();
268 taxon
.setTitleCache(title
);
269 super.handleTitleCacheRelevantChange(event
);
274 public void refresh(){
280 public void setEntity(TaxonRelationship entity
) {
281 super.setEntity(entity
);
282 if (taxonElement
!=null) {
283 taxonElement
.setEntity(entity
.getFromTaxon());
289 public SelectionArbitrator
getSelectionArbitrator() {
290 // TODO Auto-generated method stub