Merge branch 'release/4.9.0'
[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.navigation.l10n.Messages;
29 import eu.etaxonomy.taxeditor.preference.Resources;
30 import eu.etaxonomy.taxeditor.security.RequiredPermissions;
31 import eu.etaxonomy.taxeditor.store.CdmStore;
32 import eu.etaxonomy.taxeditor.store.StoreUtil;
33
34 /**
35 * <p>TaxonNodeLabelProvider class.</p>
36 *
37 * @author p.ciardelli
38 * @created 04.06.2009
39 */
40 public class TaxonNodeLabelProvider extends ColumnLabelProvider
41 implements ILabelProvider, IDescriptionProvider, IStyledLabelProvider {
42
43
44 private Styler notGrantedStyler = null;
45
46 /** {@inheritDoc} */
47 @Override
48 public Image getImage(Object element) {
49 return null;
50 }
51
52 /** {@inheritDoc} */
53 @Override
54 public String getText(Object element) {
55 if (element instanceof TaxonNode){
56 TaxonNode taxonNode = (TaxonNode) HibernateProxyHelper.deproxy(element);
57
58 try{
59 Taxon taxon = HibernateProxyHelper.deproxy(taxonNode.getTaxon());
60 if(taxon == null){
61 String text = taxonNode.getClassification().getName().getText();
62 if(text==null){
63 text = taxonNode.getClassification().getTitleCache();
64 }
65 return text;
66 //MessagingUtils.error(getClass(), String.format(Messages.TaxonNodeLabelProvider_NODE_WITH_NO_TAXON, element), null);
67 // throw new RuntimeException("The data your are trying to view is corrupt. Please check your import.");
68 }else{
69 try{
70 return taxon.getName() != null ? ((IIdentifiableEntity) HibernateProxyHelper.deproxy(taxon.getName())).getTitleCache() : new String();
71 }catch(Exception e){
72 MessagingUtils.error(getClass(), e);
73 }
74 }
75 }catch (LazyInitializationException e){
76 MessagingUtils.error(getClass(), e);
77 }
78
79 }
80 return new String();
81 }
82
83 /** {@inheritDoc} */
84 @Override
85 public String getDescription(Object anElement) {
86 if (anElement instanceof TaxonNode) {
87 Taxon data = ((TaxonNode) anElement).getTaxon();
88 String text = (data != null ? Messages.TaxonNodeLabelProvider_TAXON + data.getTitleCache() : Messages.TaxonNodeLabelProvider_CLASSIFICATION + ((TaxonNode)anElement).getClassification().getTitleCache());
89
90 return text;
91 }
92 return null;
93 }
94
95 /** {@inheritDoc} */
96 @Override
97 public StyledString getStyledText(Object element) {
98 // determine style base on user grants
99 Styler styler = null;
100 if(!CdmStore.currentAuthentiationHasPermission((CdmBase) element, RequiredPermissions.TAXONNODE_EDIT)){
101 styler = getNotGrantedStyler();
102 }
103 return new StyledString(getText(element), styler);
104 }
105
106 /**
107 * @return
108 */
109 private Styler getNotGrantedStyler() {
110 if (notGrantedStyler == null) {
111 notGrantedStyler = new Styler() {
112 @Override
113 public void applyStyles(TextStyle textStyle) {
114 textStyle.underline = false;
115 textStyle.foreground = StoreUtil.getColor(Resources.COLOR_TEXT_DISABLED);
116 }
117 };
118 }
119 return notGrantedStyler;
120 }
121 }