Project

General

Profile

Download (4.74 KB) Statistics
| Branch: | Tag: | Revision:
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.apache.commons.lang3.StringUtils;
12
import org.eclipse.jface.action.Action;
13
import org.eclipse.jface.action.IAction;
14
import org.eclipse.jface.action.ToolBarManager;
15
import org.eclipse.jface.viewers.ISelectionProvider;
16
import org.eclipse.swt.SWT;
17
import org.eclipse.swt.widgets.Control;
18

    
19
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
20
import eu.etaxonomy.cdm.model.name.TaxonName;
21
import eu.etaxonomy.cdm.model.taxon.Taxon;
22
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
23
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
24
import eu.etaxonomy.taxeditor.event.EventUtility;
25
import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
26
import eu.etaxonomy.taxeditor.model.ImageResources;
27
import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonBaseSelectionDialog;
28
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
29
import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
30
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
31
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
32
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
33
import eu.etaxonomy.taxeditor.ui.section.ITaxonBaseDetailSection;
34

    
35
/**
36
 * @author n.hoffmann
37
 * @date Dec 1, 2011
38
 *
39
 */
40
public class TaxonRelationshipDetailSection extends AbstractCdmDetailSection<TaxonRelationship> implements ITaxonBaseDetailSection {
41

    
42
    private Taxon taxon;
43
	private TaxonName name;
44
	private boolean taxonChoosable = false;
45

    
46
	public TaxonRelationshipDetailSection(CdmFormFactory formFactory,
47
			ICdmFormElement parentElement,
48
			ISelectionProvider selectionProvider, int style, boolean taxonChoosable) {
49
		super(formFactory, parentElement,  selectionProvider, style);
50
		this.taxonChoosable = taxonChoosable;
51
	}
52

    
53
	@Override
54
	public String getHeading() {
55

    
56
		return getEntity() != null ? StringUtils.replace( getEntity().getType().getLabel(), "for", ""): "Taxon Relation";
57
	}
58

    
59
	/* (non-Javadoc)
60
	 * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#createCdmDetailElement(eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection, int)
61
	 */
62
	@Override
63
	protected AbstractCdmDetailElement<TaxonRelationship> createCdmDetailElement(AbstractCdmDetailSection<TaxonRelationship> parentElement, int style) {
64
	    return formFactory.createTaxonRelationshipDetailElement(parentElement);
65
	}
66

    
67
	@Override
68
    public void setTaxonBase(TaxonBase taxon) {
69
		this.taxon = (Taxon)taxon;
70
		TaxonName name = HibernateProxyHelper.deproxy(taxon.getName());
71
		setName(name);
72
	}
73

    
74
	@Override
75
	public TaxonBase getTaxonBase() {
76
		return taxon;
77
	}
78

    
79
	private void setName(TaxonName name){
80
		this.name = name;
81
	}
82

    
83
	@Override
84
	protected Control createToolbar() {
85
	        ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
86

    
87
	        if(taxonChoosable){
88
	            //choose name
89
	            Action chooseTaxonAction = new Action("Choose Taxon", IAction.AS_PUSH_BUTTON){
90
	                @Override
91
	                public void run() {
92
	                    Taxon taxon = TaxonBaseSelectionDialog.selectTaxon(getShell(),
93
	                            getEntity().getFromTaxon());
94
	                    if(taxon!=null){
95
                            taxon = HibernateProxyHelper.deproxy(taxon);
96
                            name = taxon.getName();
97
                            TaxonRelationship rel = getEntity();
98
                            rel.setFromTaxon(taxon);
99
                            taxon.addTaxonRelation(rel);
100
                            setEntity(rel);
101
                            setTaxonBase(taxon);
102
//                            firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
103
                            detailElement.firePropertyChangeEvent(new CdmPropertyChangeEvent(detailElement, null));
104
                            EventUtility.postEvent(WorkbenchEventConstants.REFRESH_DETAILS, true);
105
                            EventUtility.postEvent(WorkbenchEventConstants.REFRESH_SUPPLEMENTAL, true);
106
                            EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, rel.getToTaxon());
107
                            ((TaxonRelationshipDetailElement)detailElement).getTaxonElement().setSelected(true);;
108

    
109

    
110
	                    }
111
	                }
112
	            };
113
	            chooseTaxonAction.setToolTipText("Choose taxon for this Relationship");
114
	            chooseTaxonAction.setImageDescriptor(ImageResources.getImageDescriptor(ImageResources.BROWSE_ICON));
115

    
116
	            toolBarManager.add(chooseTaxonAction);
117
	    }
118
	        return toolBarManager.createControl(this);
119
	}
120

    
121

    
122

    
123
}
(9-9/10)