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
.cdm
.model
.taxon
.TaxonRelationshipType
;
18 import eu
.etaxonomy
.taxeditor
.event
.EventUtility
;
19 import eu
.etaxonomy
.taxeditor
.event
.WorkbenchEventConstants
;
20 import eu
.etaxonomy
.taxeditor
.model
.TaxonRelationshipTypeInverseContainer
;
21 import eu
.etaxonomy
.taxeditor
.ui
.combo
.MisappliedRelationshipComboElement
;
22 import eu
.etaxonomy
.taxeditor
.ui
.combo
.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
.TextWithLabelElement
;
29 import eu
.etaxonomy
.taxeditor
.ui
.element
.ToggleableTextElement
;
30 import eu
.etaxonomy
.taxeditor
.ui
.section
.AbstractCdmDetailElement
;
31 import eu
.etaxonomy
.taxeditor
.ui
.selection
.EntitySelectionElement
;
38 public class TaxonRelationshipDetailElement
extends AbstractCdmDetailElement
<TaxonRelationship
> {
40 private TermComboElement
<TaxonRelationshipTypeInverseContainer
> combo_taxonRelationshipType
;
41 private MisappliedRelationshipComboElement combo_misappliedRelationshipType
;
43 private EntitySelectionElement
<Taxon
> selection_relatedTaxon
;
44 private CheckboxElement checkBoxDoubtful
;
45 protected ToggleableTextElement toggleable_cache
;
46 private EntitySelectionElement
<Reference
> secReference
;
47 private EntitySelectionElement
<Reference
> sensuReference
;
48 private TextWithLabelElement text_sensu_microreference
;
51 private TextWithLabelElement text_secundum_microreference
;
53 private TextWithLabelElement text_appendedPhrase
;
57 private TaxonDetailSection taxonElement
;
59 public TaxonDetailSection
getTaxonElement() {
63 public TaxonRelationshipDetailElement(CdmFormFactory formFactory
,
64 ICdmFormElement formElement
) {
65 super(formFactory
, formElement
);
69 protected void createControls(ICdmFormElement formElement
,
70 TaxonRelationship entity
, int style
) {
71 if (!(entity
.getType().equals(TaxonRelationshipType
.MISAPPLIED_NAME_FOR()) || entity
.getType().equals(TaxonRelationshipType
.PRO_PARTE_MISAPPLIED_NAME_FOR())) ){
72 combo_taxonRelationshipType
= formFactory
.createTermComboElement(
73 TaxonRelationshipTypeInverseContainer
.class,
74 formElement
, "Relationship Type",
75 getTaxonRelationshipTypeInverseContainer(), style
);
77 combo_taxonRelationshipType
.setEnabled(false);
78 selection_relatedTaxon
= formFactory
.createSelectionElement(
79 Taxon
.class, //getConversationHolder(),
80 formElement
, "Related Taxon", getRelatedTaxon(),
81 EntitySelectionElement
.SELECTABLE
, style
);
82 checkBoxDoubtful
= formFactory
.createCheckbox(formElement
, "Relation is doubtful", entity
.isDoubtful(), style
);
84 taxon
= entity
.getFromTaxon();
86 taxonElement
= formFactory
.createTaxonDetailSection(getConversationHolder(), formElement
, null, style
);
87 taxonElement
.setLayoutData(LayoutConstants
.FILL_HORIZONTALLY(2, 1));
88 addControl(taxonElement
);
89 addElement(taxonElement
);
90 combo_misappliedRelationshipType
= formFactory
.createMisappliedRelationshipComboElement(formElement
, "Relationship Type",
91 entity
.getType(), style
);
93 combo_misappliedRelationshipType
.setEnabled(true);
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 secReference
= formFactory
.createSelectionElement(Reference
.class,//getConversationHolder(),
106 formElement
, "Misappl. Sec.",
107 entity
.getCitation(), EntitySelectionElement
.ALL
,
110 text_secundum_microreference
= formFactory
.createTextWithLabelElement(
111 formElement
, "Detail",
112 entity
.getCitationMicroReference(),null,
117 private Taxon
getRelatedTaxon() {
118 return TaxonRelationshipTypeInverseContainer
.RelatedTaxon(getSourceTaxon(), getEntity());
121 private TaxonRelationshipTypeInverseContainer
getTaxonRelationshipTypeInverseContainer(){
122 return TaxonRelationshipTypeInverseContainer
.CreateFromSource(getSourceTaxon(), getEntity());
125 private Taxon
getSourceTaxon(){
126 return EventUtility
.getCurrentTaxon();
130 public void handleEvent(Object eventSource
) {
131 if (getEntity().getType().isAnyMisappliedName()){
132 if (eventSource
== secReference
) {
133 getEntity().setCitation(secReference
.getSelection());
134 } else if (eventSource
== text_secundum_microreference
) {
135 getEntity().setCitationMicroReference(text_secundum_microreference
.getText());
136 } else if (eventSource
== text_sensu_microreference
) {
137 taxon
.setSecMicroReference(text_sensu_microreference
.getText());
138 } else if (eventSource
== sensuReference
) {
139 taxon
.setSec(sensuReference
.getSelection());
140 } else if (eventSource
== combo_taxonRelationshipType
) {
141 getEntity().setType(combo_taxonRelationshipType
.getSelection().getType());
142 } else if ( eventSource
== combo_misappliedRelationshipType
) {
143 getEntity().setType(combo_misappliedRelationshipType
.getSelection());
146 if (eventSource
== selection_relatedTaxon
){
147 boolean inverse
= getTaxonRelationshipTypeInverseContainer().isInverse();
148 Taxon relatedTaxon
= selection_relatedTaxon
.getEntity();
150 getEntity().setFromTaxon(relatedTaxon
);
152 getEntity().setToTaxon(relatedTaxon
);
154 }else if(eventSource
==checkBoxDoubtful
){
155 getEntity().setDoubtful(checkBoxDoubtful
.getSelection());
158 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
159 EventUtility
.postEvent(WorkbenchEventConstants
.REFRESH_NAME_EDITOR
, getEntity().getToTaxon());
163 protected void updateControlStates() {
164 super.updateControlStates();
168 protected void handleTitleCacheRelevantChange(PropertyChangeEvent event
) {
169 if (getEntity().getType().equals(TaxonRelationshipType
.MISAPPLIED_NAME_FOR())){
170 String title
= taxon
.generateTitle();
171 taxon
.setTitleCache(title
);
172 super.handleTitleCacheRelevantChange(event
);
177 public void refresh(){
183 public void setEntity(TaxonRelationship entity
) {
184 super.setEntity(entity
);
185 if (taxonElement
!=null) {
186 taxonElement
.setEntity(entity
.getFromTaxon());