Merge branch 'develop' into wset
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / util / TaxonTreeNodeLabelProvider.java
1 // $Id$
2 /**
3 * Copyright (C) 2017 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.util;
11
12 import org.eclipse.jface.viewers.ColumnLabelProvider;
13 import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
14 import org.eclipse.jface.viewers.StyledString;
15 import org.eclipse.jface.viewers.StyledString.Styler;
16 import org.eclipse.swt.graphics.TextStyle;
17 import org.hibernate.LazyInitializationException;
18
19 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
20 import eu.etaxonomy.cdm.model.common.CdmBase;
21 import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
22 import eu.etaxonomy.cdm.model.taxon.Classification;
23 import eu.etaxonomy.cdm.model.taxon.Taxon;
24 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
25 import eu.etaxonomy.taxeditor.model.MessagingUtils;
26 import eu.etaxonomy.taxeditor.preference.Resources;
27 import eu.etaxonomy.taxeditor.security.RequiredPermissions;
28 import eu.etaxonomy.taxeditor.store.CdmStore;
29 import eu.etaxonomy.taxeditor.store.StoreUtil;
30
31 /**
32 * @author pplitzner
33 * @date 05.09.2017
34 *
35 */
36 public class TaxonTreeNodeLabelProvider extends ColumnLabelProvider
37 implements IStyledLabelProvider {
38
39 private Styler notGrantedStyler = null;
40
41 /**
42 * {@inheritDoc}
43 */
44 @Override
45 public String getText(Object element) {
46 //classification
47 if(element instanceof Classification){
48 String text = ((Classification) element).getName().getText();
49 return text != null ? text : "Unnamed Taxonomic Tree";
50 }
51 //taxon node
52 else if (element instanceof TaxonNode){
53 TaxonNode taxonNode = (TaxonNode) HibernateProxyHelper.deproxy(element);
54
55 try{
56 Taxon taxon = HibernateProxyHelper.deproxy(taxonNode.getTaxon());
57 if(taxon == null){
58 String text = taxonNode.getClassification().getName() == null ? null : taxonNode.getClassification().getName().getText();
59 if(text==null){
60 text = taxonNode.getClassification().getTitleCache();
61 }
62 return text;
63 }else{
64 try{
65 return taxon.getName() != null ? ((IIdentifiableEntity) HibernateProxyHelper.deproxy(taxon.getName())).getTitleCache() : new String();
66 }catch(Exception e){
67 MessagingUtils.error(getClass(), e);
68 }
69 }
70 }catch (LazyInitializationException e){
71 MessagingUtils.error(getClass(), e);
72 }
73 }
74 return new String();
75 }
76
77 /**
78 * {@inheritDoc}
79 */
80 @Override
81 public StyledString getStyledText(Object element) {
82 //classification
83 if(element instanceof Classification){
84 return new StyledString(getText(element), StyledString.DECORATIONS_STYLER);
85 }
86 //taxon node
87 else if(element instanceof TaxonNode){
88 // determine style base on user grants
89 Styler styler = null;
90 if(!CdmStore.currentAuthentiationHasPermission((CdmBase) element, RequiredPermissions.TAXONNODE_EDIT)){
91 styler = getNotGrantedStyler();
92 }
93 return new StyledString(getText(element), styler);
94 }
95 return new StyledString(getText(element));
96 }
97
98 private Styler getNotGrantedStyler() {
99 if (notGrantedStyler == null) {
100 notGrantedStyler = new Styler() {
101 @Override
102 public void applyStyles(TextStyle textStyle) {
103 textStyle.underline = false;
104 textStyle.foreground = StoreUtil.getColor(Resources.COLOR_TEXT_DISABLED);
105 }
106 };
107 }
108 return notGrantedStyler;
109 }
110 }