Project

General

Profile

Download (2.92 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.combo.TermComboElement;
19
import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory;
20
import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory.SelectionType;
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

    
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 TaxonSelectionElement selection_relatedTaxon;
36
	
37
	public TaxonRelationshipDetailElement(CdmFormFactory formFactory,
38
			ICdmFormElement formElement) {
39
		super(formFactory, formElement);
40
	}
41

    
42
	@Override
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);
54
	}
55
	
56
	private Taxon getRelatedTaxon() {
57
		return TaxonRelationshipTypeInverseContainer.RelatedTaxon(getSourceTaxon(), getEntity());
58
	}
59

    
60
	private TaxonRelationshipTypeInverseContainer getTaxonRelationshipTypeInverseContainer(){
61
		return TaxonRelationshipTypeInverseContainer.CreateFromSource(getSourceTaxon(), getEntity());
62
	}
63
	
64
	private Taxon getSourceTaxon(){
65
		IEditorInput editorInput = StoreUtil.getActiveEditorInput();
66
		return (Taxon) editorInput.getAdapter(Taxon.class);
67
	}
68

    
69
	@Override
70
	public void handleEvent(Object eventSource) {
71
		if (eventSource == selection_relatedTaxon){
72
			boolean inverse = getTaxonRelationshipTypeInverseContainer().isInverse();
73
			Taxon relatedTaxon = selection_relatedTaxon.getEntity();
74
			if(inverse){
75
				getEntity().setFromTaxon(relatedTaxon);
76
			}else{
77
				getEntity().setToTaxon(relatedTaxon);
78
			}
79
		}
80
		firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
81
	}
82
}
(6-6/7)