Project

General

Profile

Download (3.14 KB) Statistics
| Branch: | Tag: | Revision:
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.forms.CdmFormFactory;
19
import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory.SelectionType;
20
import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory.TermComboType;
21
import eu.etaxonomy.taxeditor.ui.forms.CdmPropertyChangeEvent;
22
import eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement;
23
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
24
import eu.etaxonomy.taxeditor.ui.selection.TaxonSelectionElement;
25
import eu.etaxonomy.taxeditor.ui.term.TaxonRelationshipTypeComboElement;
26

    
27
/**
28
 * @author n.hoffmann
29
 * @date Dec 1, 2011
30
 *
31
 */
32
public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<TaxonRelationship> {
33

    
34
	private TaxonRelationshipTypeComboElement combo_taxonRelationshipType;
35
	
36
	private TaxonSelectionElement selection_relatedTaxon;
37

    
38
	private TaxonRelationshipTypeInverseContainer container;
39
	
40
	public TaxonRelationshipDetailElement(CdmFormFactory formFactory,
41
			ICdmFormElement formElement) {
42
		super(formFactory, formElement);
43
	}
44

    
45
	@Override
46
	protected void createControls(ICdmFormElement formElement,
47
			TaxonRelationship entity, int style) {
48
		combo_taxonRelationshipType = (TaxonRelationshipTypeComboElement) formFactory.createTermComboElement(
49
				TermComboType.TAXON_RELATIONSHIP_TYPE_INVERSE_CONTAINER, 
50
				formElement, "Relationship Type", 
51
				getTaxonRelationshipTypeInverseContainer(), style);
52
		combo_taxonRelationshipType.setEnabled(false);
53
		selection_relatedTaxon = (TaxonSelectionElement) formFactory.createSelectionElement(
54
				SelectionType.TAXON, getConversationHolder(), 
55
				formElement, "Related Taxon", getRelatedTaxon(), 
56
				TaxonSelectionElement.SELECTABLE, style);
57
	}
58
	
59
	private Taxon getRelatedTaxon() {
60
		return TaxonRelationshipTypeInverseContainer.RelatedTaxon(getSourceTaxon(), getEntity());
61
	}
62

    
63
	private TaxonRelationshipTypeInverseContainer getTaxonRelationshipTypeInverseContainer(){
64
		if (container == null){
65
			container = TaxonRelationshipTypeInverseContainer.CreateFromSource(getSourceTaxon(), getEntity());
66
		}
67
		return container;
68
	}
69
	
70
	private Taxon getSourceTaxon(){
71
		IEditorInput editorInput = StoreUtil.getActiveEditorInput();
72
		return (Taxon) editorInput.getAdapter(Taxon.class);
73
	}
74

    
75
	@Override
76
	public void handleEvent(Object eventSource) {
77
		if (eventSource == selection_relatedTaxon){
78
			boolean inverse = getTaxonRelationshipTypeInverseContainer().isInverse();
79
			Taxon relatedTaxon = selection_relatedTaxon.getEntity();
80
			if(inverse){
81
				getEntity().setFromTaxon(relatedTaxon);
82
			}else{
83
				getEntity().setToTaxon(relatedTaxon);
84
			}
85
			
86
		}
87
		firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
88
	}
89
}
(6-6/7)