ref #6190 removing svn property place holder in first line of code - java files
[taxeditor.git] / eu.etaxonomy.taxeditor.navigation / src / main / java / eu / etaxonomy / taxeditor / navigation / navigator / TaxonNodeLabelProvider.java
1 /**
2 * Copyright (C) 2007 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
10 package eu.etaxonomy.taxeditor.navigation.navigator;
11
12 import org.eclipse.jface.viewers.ColumnLabelProvider;
13 import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
14 import org.eclipse.jface.viewers.ILabelProvider;
15 import org.eclipse.jface.viewers.StyledString;
16 import org.eclipse.jface.viewers.StyledString.Styler;
17 import org.eclipse.swt.graphics.Image;
18 import org.eclipse.swt.graphics.TextStyle;
19 import org.eclipse.ui.navigator.IDescriptionProvider;
20 import org.hibernate.LazyInitializationException;
21
22 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
23 import eu.etaxonomy.cdm.model.common.CdmBase;
24 import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
25 import eu.etaxonomy.cdm.model.taxon.Taxon;
26 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
27 import eu.etaxonomy.taxeditor.model.MessagingUtils;
28 import eu.etaxonomy.taxeditor.preference.Resources;
29 import eu.etaxonomy.taxeditor.security.RequiredPermissions;
30 import eu.etaxonomy.taxeditor.store.CdmStore;
31 import eu.etaxonomy.taxeditor.store.StoreUtil;
32
33 /**
34 * <p>TaxonNodeLabelProvider class.</p>
35 *
36 * @author p.ciardelli
37 * @created 04.06.2009
38 */
39 public class TaxonNodeLabelProvider extends ColumnLabelProvider
40 implements ILabelProvider, IDescriptionProvider, IStyledLabelProvider {
41
42
43 private Styler notGrantedStyler = null;
44
45 /** {@inheritDoc} */
46 @Override
47 public Image getImage(Object element) {
48 return null;
49 }
50
51 /** {@inheritDoc} */
52 @Override
53 public String getText(Object element) {
54 if (element instanceof TaxonNode){
55 TaxonNode taxonNode = (TaxonNode) HibernateProxyHelper.deproxy(element);
56
57 try{
58 Taxon taxon = (Taxon) HibernateProxyHelper.deproxy(taxonNode.getTaxon());
59 if(taxon == null){
60 MessagingUtils.error(getClass(), "The taxon node does not have a taxon attached to it. Please check your import. TaxonNode: " + element, null);
61 // throw new RuntimeException("The data your are trying to view is corrupt. Please check your import.");
62 }else{
63 try{
64 return taxon.getName() != null ? ((IIdentifiableEntity) HibernateProxyHelper.deproxy(taxon.getName())).getTitleCache() : new String();
65 }catch(Exception e){
66 MessagingUtils.error(getClass(), e);
67 }
68 }
69 }catch (LazyInitializationException e){
70 MessagingUtils.error(getClass(), e);
71 }
72
73 }
74 return new String();
75 }
76
77 /** {@inheritDoc} */
78 @Override
79 public String getDescription(Object anElement) {
80 if (anElement instanceof TaxonNode) {
81 Taxon data = ((TaxonNode) anElement).getTaxon();
82 return "Taxon: " + (data != null ? data.getTitleCache() : ">NO TAXON<");
83 }
84 return null;
85 }
86
87 /** {@inheritDoc} */
88 @Override
89 public StyledString getStyledText(Object element) {
90 // determine style base on user grants
91 Styler styler = null;
92 if(!CdmStore.currentAuthentiationHasPermission((CdmBase) element, RequiredPermissions.TAXONNODE_EDIT)){
93 styler = getNotGrantedStyler();
94 }
95 return new StyledString(getText(element), styler);
96
97 }
98
99 /**
100 * @return
101 */
102 private Styler getNotGrantedStyler() {
103 if (notGrantedStyler == null) {
104 notGrantedStyler = new Styler() {
105 @Override
106 public void applyStyles(TextStyle textStyle) {
107 textStyle.underline = false;
108 textStyle.foreground = StoreUtil.getColor(Resources.COLOR_TEXT_DISABLED);
109 }
110 };
111 }
112 return notGrantedStyler;
113 }
114 }