3 * Copyright (C) 2009 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.
10 package eu
.etaxonomy
.taxeditor
.ui
.section
.taxon
;
12 import org
.eclipse
.ui
.IEditorInput
;
14 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
15 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonRelationship
;
16 import eu
.etaxonomy
.taxeditor
.model
.TaxonRelationshipTypeInverseContainer
;
17 import eu
.etaxonomy
.taxeditor
.store
.StoreUtil
;
18 import eu
.etaxonomy
.taxeditor
.ui
.campanula
.compatibility
.ICdmFormElement
;
19 import eu
.etaxonomy
.taxeditor
.ui
.combo
.TermComboElement
;
20 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
21 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmPropertyChangeEvent
;
22 import eu
.etaxonomy
.taxeditor
.ui
.section
.AbstractCdmDetailElement
;
23 import eu
.etaxonomy
.taxeditor
.ui
.selection
.EntitySelectionElement
;
30 public class TaxonRelationshipDetailElement
extends AbstractCdmDetailElement
<TaxonRelationship
> {
32 private TermComboElement
<TaxonRelationshipTypeInverseContainer
> combo_taxonRelationshipType
;
34 private EntitySelectionElement
<Taxon
> selection_relatedTaxon
;
36 public TaxonRelationshipDetailElement(CdmFormFactory formFactory
,
37 ICdmFormElement formElement
) {
38 super(formFactory
, formElement
);
42 protected void createControls(ICdmFormElement formElement
,
43 TaxonRelationship entity
, int style
) {
44 combo_taxonRelationshipType
= formFactory
.createTermComboElement(
45 TaxonRelationshipTypeInverseContainer
.class,
46 formElement
, "Relationship Type",
47 getTaxonRelationshipTypeInverseContainer(), style
);
48 combo_taxonRelationshipType
.setEnabled(false);
49 selection_relatedTaxon
= formFactory
.createSelectionElement(
50 Taxon
.class, getConversationHolder(),
51 formElement
, "Related Taxon", getRelatedTaxon(),
52 EntitySelectionElement
.SELECTABLE
, style
);
55 private Taxon
getRelatedTaxon() {
56 return TaxonRelationshipTypeInverseContainer
.RelatedTaxon(getSourceTaxon(), getEntity());
59 private TaxonRelationshipTypeInverseContainer
getTaxonRelationshipTypeInverseContainer(){
60 return TaxonRelationshipTypeInverseContainer
.CreateFromSource(getSourceTaxon(), getEntity());
63 private Taxon
getSourceTaxon(){
64 IEditorInput editorInput
= StoreUtil
.getActiveEditorInput();
65 return (Taxon
) editorInput
.getAdapter(Taxon
.class);
69 public void handleEvent(Object eventSource
) {
70 if (eventSource
== selection_relatedTaxon
){
71 boolean inverse
= getTaxonRelationshipTypeInverseContainer().isInverse();
72 Taxon relatedTaxon
= selection_relatedTaxon
.getEntity();
74 getEntity().setFromTaxon(relatedTaxon
);
76 getEntity().setToTaxon(relatedTaxon
);
79 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));