merge-update from trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / taxon / TaxonRelationshipDetailElement.java
1 // $Id$
2 /**
3 * Copyright (C) 2009 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
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.
9 */
10 package eu.etaxonomy.taxeditor.ui.section.taxon;
11
12 import org.eclipse.ui.IEditorInput;
13
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.element.CheckboxElement;
23 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
24 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
25
26 /**
27 * @author n.hoffmann
28 * @date Dec 1, 2011
29 *
30 */
31 public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<TaxonRelationship> {
32
33 private TermComboElement<TaxonRelationshipTypeInverseContainer> combo_taxonRelationshipType;
34
35 private EntitySelectionElement<Taxon> selection_relatedTaxon;
36
37 private CheckboxElement checkBoxDoubtful;
38
39 public TaxonRelationshipDetailElement(CdmFormFactory formFactory,
40 ICdmFormElement formElement) {
41 super(formFactory, formElement);
42 }
43
44 @Override
45 protected void createControls(ICdmFormElement formElement,
46 TaxonRelationship entity, int style) {
47 combo_taxonRelationshipType = formFactory.createTermComboElement(
48 TaxonRelationshipTypeInverseContainer.class,
49 formElement, "Relationship Type",
50 getTaxonRelationshipTypeInverseContainer(), style);
51 combo_taxonRelationshipType.setEnabled(false);
52 selection_relatedTaxon = formFactory.createSelectionElement(
53 Taxon.class, getConversationHolder(),
54 formElement, "Related Taxon", getRelatedTaxon(),
55 EntitySelectionElement.SELECTABLE, style);
56 checkBoxDoubtful = formFactory.createCheckbox(formElement, "Relation is doubtful", entity.isDoubtful(), style);
57 }
58
59 private Taxon getRelatedTaxon() {
60 return TaxonRelationshipTypeInverseContainer.RelatedTaxon(getSourceTaxon(), getEntity());
61 }
62
63 private TaxonRelationshipTypeInverseContainer getTaxonRelationshipTypeInverseContainer(){
64 return TaxonRelationshipTypeInverseContainer.CreateFromSource(getSourceTaxon(), getEntity());
65 }
66
67 private Taxon getSourceTaxon(){
68 IEditorInput editorInput = StoreUtil.getActiveEditorInput();
69 return (Taxon) editorInput.getAdapter(Taxon.class);
70 }
71
72 @Override
73 public void handleEvent(Object eventSource) {
74 if (eventSource == selection_relatedTaxon){
75 boolean inverse = getTaxonRelationshipTypeInverseContainer().isInverse();
76 Taxon relatedTaxon = selection_relatedTaxon.getEntity();
77 if(inverse){
78 getEntity().setFromTaxon(relatedTaxon);
79 }else{
80 getEntity().setToTaxon(relatedTaxon);
81 }
82 }
83 else if(eventSource==checkBoxDoubtful){
84 getEntity().setDoubtful(checkBoxDoubtful.getSelection());
85 }
86 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
87 }
88 }