ref #6190 removing svn property place holder in first line of code - java files
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / taxon / TaxonRelationshipDetailElement.java
1 /**
2 * Copyright (C) 2009 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
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.
8 */
9 package eu.etaxonomy.taxeditor.ui.section.taxon;
10
11 import org.eclipse.ui.IEditorInput;
12
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;
24
25 /**
26 * @author n.hoffmann
27 * @date Dec 1, 2011
28 *
29 */
30 public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<TaxonRelationship> {
31
32 private TermComboElement<TaxonRelationshipTypeInverseContainer> combo_taxonRelationshipType;
33
34 private EntitySelectionElement<Taxon> selection_relatedTaxon;
35
36 private CheckboxElement checkBoxDoubtful;
37
38 public TaxonRelationshipDetailElement(CdmFormFactory formFactory,
39 ICdmFormElement formElement) {
40 super(formFactory, formElement);
41 }
42
43 @Override
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);
56 }
57
58 private Taxon getRelatedTaxon() {
59 return TaxonRelationshipTypeInverseContainer.RelatedTaxon(getSourceTaxon(), getEntity());
60 }
61
62 private TaxonRelationshipTypeInverseContainer getTaxonRelationshipTypeInverseContainer(){
63 return TaxonRelationshipTypeInverseContainer.CreateFromSource(getSourceTaxon(), getEntity());
64 }
65
66 private Taxon getSourceTaxon(){
67 IEditorInput editorInput = StoreUtil.getActiveEditorInput();
68 return (Taxon) editorInput.getAdapter(Taxon.class);
69 }
70
71 @Override
72 public void handleEvent(Object eventSource) {
73 if (eventSource == selection_relatedTaxon){
74 boolean inverse = getTaxonRelationshipTypeInverseContainer().isInverse();
75 Taxon relatedTaxon = selection_relatedTaxon.getEntity();
76 if(inverse){
77 getEntity().setFromTaxon(relatedTaxon);
78 }else{
79 getEntity().setToTaxon(relatedTaxon);
80 }
81 }
82 else if(eventSource==checkBoxDoubtful){
83 getEntity().setDoubtful(checkBoxDoubtful.getSelection());
84 }
85 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
86 }
87 }