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
.ui
.IEditorInput
;
13 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
14 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonRelationship
;
15 import eu
.etaxonomy
.taxeditor
.model
.TaxonRelationshipTypeInverseContainer
;
16 import eu
.etaxonomy
.taxeditor
.store
.StoreUtil
;
17 import eu
.etaxonomy
.taxeditor
.ui
.combo
.TermComboElement
;
18 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
19 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmPropertyChangeEvent
;
20 import eu
.etaxonomy
.taxeditor
.ui
.element
.CheckboxElement
;
21 import eu
.etaxonomy
.taxeditor
.ui
.element
.ICdmFormElement
;
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 private CheckboxElement checkBoxDoubtful
;
38 public TaxonRelationshipDetailElement(CdmFormFactory formFactory
,
39 ICdmFormElement formElement
) {
40 super(formFactory
, formElement
);
44 protected void createControls(ICdmFormElement formElement
,
45 TaxonRelationship entity
, int style
) {
46 combo_taxonRelationshipType
= formFactory
.createTermComboElement(
47 TaxonRelationshipTypeInverseContainer
.class,
48 formElement
, "Relationship Type",
49 getTaxonRelationshipTypeInverseContainer(), style
);
50 combo_taxonRelationshipType
.setEnabled(false);
51 selection_relatedTaxon
= formFactory
.createSelectionElement(
52 Taxon
.class, getConversationHolder(),
53 formElement
, "Related Taxon", getRelatedTaxon(),
54 EntitySelectionElement
.SELECTABLE
, style
);
55 checkBoxDoubtful
= formFactory
.createCheckbox(formElement
, "Relation is doubtful", entity
.isDoubtful(), style
);
58 private Taxon
getRelatedTaxon() {
59 return TaxonRelationshipTypeInverseContainer
.RelatedTaxon(getSourceTaxon(), getEntity());
62 private TaxonRelationshipTypeInverseContainer
getTaxonRelationshipTypeInverseContainer(){
63 return TaxonRelationshipTypeInverseContainer
.CreateFromSource(getSourceTaxon(), getEntity());
66 private Taxon
getSourceTaxon(){
67 IEditorInput editorInput
= StoreUtil
.getActiveEditorInput();
68 return (Taxon
) editorInput
.getAdapter(Taxon
.class);
72 public void handleEvent(Object eventSource
) {
73 if (eventSource
== selection_relatedTaxon
){
74 boolean inverse
= getTaxonRelationshipTypeInverseContainer().isInverse();
75 Taxon relatedTaxon
= selection_relatedTaxon
.getEntity();
77 getEntity().setFromTaxon(relatedTaxon
);
79 getEntity().setToTaxon(relatedTaxon
);
82 else if(eventSource
==checkBoxDoubtful
){
83 getEntity().setDoubtful(checkBoxDoubtful
.getSelection());
85 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));