Project

General

Profile

Download (3.89 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2007 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

    
11
package eu.etaxonomy.taxeditor.navigation.navigator;
12

    
13
import org.apache.log4j.Logger;
14
import org.eclipse.jface.viewers.ColumnLabelProvider;
15
import org.eclipse.jface.viewers.ILabelProvider;
16
import org.eclipse.jface.viewers.StyledString;
17
import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
18
import org.eclipse.jface.viewers.StyledString.Styler;
19
import org.eclipse.swt.SWT;
20
import org.eclipse.swt.graphics.Image;
21
import org.eclipse.swt.graphics.TextStyle;
22
import org.eclipse.ui.navigator.IDescriptionProvider;
23
import org.hibernate.LazyInitializationException;
24

    
25
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
26
import eu.etaxonomy.cdm.model.common.CdmBase;
27
import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
28
import eu.etaxonomy.cdm.model.taxon.Taxon;
29
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
30
import eu.etaxonomy.cdm.persistence.hibernate.permission.Operation;
31
import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
32
import eu.etaxonomy.taxeditor.preference.Resources;
33
import eu.etaxonomy.taxeditor.security.RequiredPermissions;
34
import eu.etaxonomy.taxeditor.store.CdmStore;
35
import eu.etaxonomy.taxeditor.store.StoreUtil;
36

    
37
/**
38
 * <p>TaxonNodeLabelProvider class.</p>
39
 *
40
 * @author p.ciardelli
41
 * @created 04.06.2009
42
 * @version 1.0
43
 */
44
public class TaxonNodeLabelProvider extends ColumnLabelProvider 
45
		implements ILabelProvider, IDescriptionProvider, IStyledLabelProvider {
46
	
47

    
48
	private Styler notGrantedStyler = null;
49
	
50
	/** {@inheritDoc} */
51
	@Override
52
	public Image getImage(Object element) {
53
		return null;
54
	}
55

    
56
	/** {@inheritDoc} */
57
	@Override
58
	public String getText(Object element) {
59
		if (element instanceof TaxonNode){
60
			TaxonNode taxonNode = (TaxonNode) HibernateProxyHelper.deproxy(element);
61
			
62
			try{
63
				Taxon taxon = (Taxon) HibernateProxyHelper.deproxy(taxonNode.getTaxon());
64
				if(taxon == null){
65
					NavigationUtil.error(getClass(), "The taxon node does not have a taxon attached to it. Please check your import. TaxonNode: " + element, null);
66
//					throw new RuntimeException("The data your are trying to view is corrupt. Please check your import.");
67
				}else{
68
					try{					
69
						return taxon.getName() != null ? ((IIdentifiableEntity) HibernateProxyHelper.deproxy(taxon.getName())).getTitleCache() : new String();
70
					}catch(Exception e){
71
						NavigationUtil.error(getClass(), e);
72
					}
73
				}
74
			}catch (LazyInitializationException e){
75
				NavigationUtil.error(getClass(), e);
76
			}
77
			
78
		}
79
		return new String();
80
	}
81
	
82
	/* (non-Javadoc)
83
	 * @see org.eclipse.ui.navigator.IDescriptionProvider#getDescription(java.lang.Object)
84
	 */
85
	/** {@inheritDoc} */
86
	public String getDescription(Object anElement) {
87
		if (anElement instanceof TaxonNode) {
88
			Taxon data = ((TaxonNode) anElement).getTaxon();
89
			return "Taxon: " + data.getTitleCache(); //$NON-NLS-1$
90
		}
91
		return null;
92
	}
93

    
94
	/* (non-Javadoc)
95
	 * @see org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider#getStyledText(java.lang.Object)
96
	 */
97
	/** {@inheritDoc} */
98
	public StyledString getStyledText(Object element) {
99
		// determine style base on  user grants
100
		Styler styler = null;
101
		if(!CdmStore.currentAuthentiationHasPermission((CdmBase)element, RequiredPermissions.TAXONNODE_EDIT)){
102
			styler = getNotGrantedStyler();
103
		} 
104
		return new StyledString(getText(element), styler);
105
		
106
	}
107
	
108
	/**
109
	 * @return
110
	 */
111
	private Styler getNotGrantedStyler() {
112
		if (notGrantedStyler  == null) {
113
			notGrantedStyler = new Styler() {
114
				@Override
115
				public void applyStyles(TextStyle textStyle) {
116
					textStyle.underline = false;
117
					textStyle.foreground = StoreUtil.getColor(Resources.COLOR_TEXT_DISABLED);
118
				}
119
			};
120
		}
121
		return notGrantedStyler;
122
	}
123
}
(12-12/14)