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
.model
.TaxonRelationshipTypeInverseContainer
;
20 import eu
.etaxonomy
.taxeditor
.ui
.combo
.MisappliedRelationshipComboElement
;
21 import eu
.etaxonomy
.taxeditor
.ui
.combo
.TermComboElement
;
22 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
23 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmPropertyChangeEvent
;
24 import eu
.etaxonomy
.taxeditor
.ui
.element
.CheckboxElement
;
25 import eu
.etaxonomy
.taxeditor
.ui
.element
.ICdmFormElement
;
26 import eu
.etaxonomy
.taxeditor
.ui
.element
.LayoutConstants
;
27 import eu
.etaxonomy
.taxeditor
.ui
.element
.TextWithLabelElement
;
28 import eu
.etaxonomy
.taxeditor
.ui
.element
.ToggleableTextElement
;
29 import eu
.etaxonomy
.taxeditor
.ui
.section
.AbstractCdmDetailElement
;
30 import eu
.etaxonomy
.taxeditor
.ui
.selection
.EntitySelectionElement
;
37 public class TaxonRelationshipDetailElement
extends AbstractCdmDetailElement
<TaxonRelationship
> {
39 private TermComboElement
<TaxonRelationshipTypeInverseContainer
> combo_taxonRelationshipType
;
40 private MisappliedRelationshipComboElement combo_misappliedRelationshipType
;
42 private EntitySelectionElement
<Taxon
> selection_relatedTaxon
;
43 private CheckboxElement checkBoxDoubtful
;
44 protected ToggleableTextElement toggleable_cache
;
45 private EntitySelectionElement
<Reference
> secReference
;
46 private EntitySelectionElement
<Reference
> sensuReference
;
47 private TextWithLabelElement text_sensu_microreference
;
50 private TextWithLabelElement text_secundum_microreference
;
52 private TextWithLabelElement text_appendedPhrase
;
56 private TaxonDetailSection taxonElement
;
58 public TaxonDetailSection
getTaxonElement() {
62 public TaxonRelationshipDetailElement(CdmFormFactory formFactory
,
63 ICdmFormElement formElement
) {
64 super(formFactory
, formElement
);
68 protected void createControls(ICdmFormElement formElement
,
69 TaxonRelationship entity
, int style
) {
70 if (!(entity
.getType().equals(TaxonRelationshipType
.MISAPPLIED_NAME_FOR()) || entity
.getType().equals(TaxonRelationshipType
.PRO_PARTE_MISAPPLIED_NAME_FOR())) ){
71 combo_taxonRelationshipType
= formFactory
.createTermComboElement(
72 TaxonRelationshipTypeInverseContainer
.class,
73 formElement
, "Relationship Type",
74 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 checkBoxDoubtful
= formFactory
.createCheckbox(formElement
, "Relation is doubtful", entity
.isDoubtful(), style
);
83 taxon
= entity
.getFromTaxon();
85 taxonElement
= formFactory
.createTaxonDetailSection(getConversationHolder(), formElement
, null, style
);
86 taxonElement
.setLayoutData(LayoutConstants
.FILL_HORIZONTALLY(2, 1));
87 addControl(taxonElement
);
88 addElement(taxonElement
);
89 combo_misappliedRelationshipType
= formFactory
.createMisappliedRelationshipComboElement(formElement
, "Relationship Type",
90 entity
.getType(), style
);
92 combo_misappliedRelationshipType
.setEnabled(true);
94 sensuReference
= formFactory
.createSelectionElement(Reference
.class,//getConversationHolder(),
96 taxon
.getSec(), EntitySelectionElement
.ALL
,
99 text_sensu_microreference
= formFactory
.createTextWithLabelElement(
100 formElement
, "Detail",
101 taxon
.getSecMicroReference(),null,
104 secReference
= formFactory
.createSelectionElement(Reference
.class,//getConversationHolder(),
105 formElement
, "Misappl. Sec.",
106 entity
.getCitation(), EntitySelectionElement
.ALL
,
109 text_secundum_microreference
= formFactory
.createTextWithLabelElement(
110 formElement
, "Detail",
111 entity
.getCitationMicroReference(),null,
116 private Taxon
getRelatedTaxon() {
117 return TaxonRelationshipTypeInverseContainer
.RelatedTaxon(getSourceTaxon(), getEntity());
120 private TaxonRelationshipTypeInverseContainer
getTaxonRelationshipTypeInverseContainer(){
121 return TaxonRelationshipTypeInverseContainer
.CreateFromSource(getSourceTaxon(), getEntity());
124 private Taxon
getSourceTaxon(){
125 return EventUtility
.getCurrentTaxon();
129 public void handleEvent(Object eventSource
) {
130 if (getEntity().getType().isAnyMisappliedName()){
131 if (eventSource
== secReference
) {
132 getEntity().setCitation(secReference
.getSelection());
133 } else if (eventSource
== text_secundum_microreference
) {
134 getEntity().setCitationMicroReference(text_secundum_microreference
.getText());
135 } else if (eventSource
== text_sensu_microreference
) {
136 taxon
.setSecMicroReference(text_sensu_microreference
.getText());
137 } else if (eventSource
== sensuReference
) {
138 taxon
.setSec(sensuReference
.getSelection());
139 } else if (eventSource
== combo_taxonRelationshipType
) {
140 getEntity().setType(combo_taxonRelationshipType
.getSelection().getType());
141 } else if ( eventSource
== combo_misappliedRelationshipType
) {
142 getEntity().setType(combo_misappliedRelationshipType
.getSelection());
145 if (eventSource
== selection_relatedTaxon
){
146 boolean inverse
= getTaxonRelationshipTypeInverseContainer().isInverse();
147 Taxon relatedTaxon
= selection_relatedTaxon
.getEntity();
149 getEntity().setFromTaxon(relatedTaxon
);
151 getEntity().setToTaxon(relatedTaxon
);
153 }else if(eventSource
==checkBoxDoubtful
){
154 getEntity().setDoubtful(checkBoxDoubtful
.getSelection());
157 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
161 protected void updateControlStates() {
162 super.updateControlStates();
166 protected void handleTitleCacheRelevantChange(PropertyChangeEvent event
) {
167 if (getEntity().getType().equals(TaxonRelationshipType
.MISAPPLIED_NAME_FOR())){
168 String title
= taxon
.generateTitle();
169 taxon
.setTitleCache(title
);
170 super.handleTitleCacheRelevantChange(event
);
175 public void refresh(){
181 public void setEntity(TaxonRelationship entity
) {
182 super.setEntity(entity
);
183 if (taxonElement
!=null) {
184 taxonElement
.setEntity(entity
.getFromTaxon());