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
.combo
.TermComboElement
;
19 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
20 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmPropertyChangeEvent
;
21 import eu
.etaxonomy
.taxeditor
.ui
.element
.ICdmFormElement
;
22 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
.SelectionType
;
23 import eu
.etaxonomy
.taxeditor
.ui
.section
.AbstractCdmDetailElement
;
24 import eu
.etaxonomy
.taxeditor
.ui
.selection
.TaxonSelectionElement
;
31 public class TaxonRelationshipDetailElement
extends AbstractCdmDetailElement
<TaxonRelationship
> {
33 private TermComboElement
<TaxonRelationshipTypeInverseContainer
> combo_taxonRelationshipType
;
35 private TaxonSelectionElement selection_relatedTaxon
;
37 public TaxonRelationshipDetailElement(CdmFormFactory formFactory
,
38 ICdmFormElement formElement
) {
39 super(formFactory
, formElement
);
43 protected void createControls(ICdmFormElement formElement
,
44 TaxonRelationship entity
, int style
) {
45 combo_taxonRelationshipType
= formFactory
.createTermComboElement(
46 TaxonRelationshipTypeInverseContainer
.class,
47 formElement
, "Relationship Type",
48 getTaxonRelationshipTypeInverseContainer(), style
);
49 combo_taxonRelationshipType
.setEnabled(false);
50 selection_relatedTaxon
= (TaxonSelectionElement
) formFactory
.createSelectionElement(
51 SelectionType
.TAXON
, getConversationHolder(),
52 formElement
, "Related Taxon", getRelatedTaxon(),
53 TaxonSelectionElement
.SELECTABLE
, style
);
56 private Taxon
getRelatedTaxon() {
57 return TaxonRelationshipTypeInverseContainer
.RelatedTaxon(getSourceTaxon(), getEntity());
60 private TaxonRelationshipTypeInverseContainer
getTaxonRelationshipTypeInverseContainer(){
61 return TaxonRelationshipTypeInverseContainer
.CreateFromSource(getSourceTaxon(), getEntity());
64 private Taxon
getSourceTaxon(){
65 IEditorInput editorInput
= StoreUtil
.getActiveEditorInput();
66 return (Taxon
) editorInput
.getAdapter(Taxon
.class);
70 public void handleEvent(Object eventSource
) {
71 if (eventSource
== selection_relatedTaxon
){
72 boolean inverse
= getTaxonRelationshipTypeInverseContainer().isInverse();
73 Taxon relatedTaxon
= selection_relatedTaxon
.getEntity();
75 getEntity().setFromTaxon(relatedTaxon
);
77 getEntity().setToTaxon(relatedTaxon
);
80 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));