3 * Copyright (C) 2017 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.taxeditor
.util
;
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
;
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
.cdm
.persistence
.dto
.TaxonNodeDto
;
26 import eu
.etaxonomy
.taxeditor
.model
.MessagingUtils
;
27 import eu
.etaxonomy
.taxeditor
.preference
.Resources
;
28 import eu
.etaxonomy
.taxeditor
.security
.RequiredPermissions
;
29 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
30 import eu
.etaxonomy
.taxeditor
.store
.StoreUtil
;
37 public class TaxonTreeNodeLabelProvider
extends ColumnLabelProvider
38 implements IStyledLabelProvider
{
40 protected Styler notGrantedStyler
= null;
46 public String
getText(Object element
) {
48 if(element
instanceof Classification
){
49 String text
= ((Classification
) element
).getName().getText();
50 return text
!= null ? text
: "Unnamed Taxonomic Tree";
53 else if (element
instanceof TaxonNode
){
54 TaxonNode taxonNode
= (TaxonNode
) HibernateProxyHelper
.deproxy(element
);
56 Taxon taxon
= HibernateProxyHelper
.deproxy(taxonNode
.getTaxon());
58 String text
= taxonNode
.getClassification().getName() == null ?
null : taxonNode
.getClassification().getName().getText();
60 text
= taxonNode
.getClassification().getTitleCache();
66 if (taxonNode
.isUnplaced()){
67 text
+= Character
.toString((char)63) + " ";
69 if (taxonNode
.isExcluded()){
70 text
+=Character
.toString((char)248) + " ";
72 text
+= taxon
.getName() != null ?
((IIdentifiableEntity
) HibernateProxyHelper
.deproxy(taxon
.getName())).getTitleCache() : new String();
75 MessagingUtils
.error(getClass(), e
);
78 }catch (LazyInitializationException e
){
79 MessagingUtils
.error(getClass(), e
);
82 else if (element
instanceof TaxonNodeDto
){
83 TaxonNodeDto taxonNode
= (TaxonNodeDto
) element
;
85 if (taxonNode
.isUnplaced()){
86 text
+= Character
.toString((char)63) + " ";
88 if (taxonNode
.isExcluded()) {
89 text
+=Character
.toString((char)248) + " ";
91 text
+= taxonNode
.getTitleCache();
101 public StyledString
getStyledText(Object element
) {
103 if(element
instanceof Classification
){
104 return new StyledString(getText(element
), StyledString
.DECORATIONS_STYLER
);
107 else if(element
instanceof TaxonNode
){
108 // determine style base on user grants
109 Styler styler
= null;
110 if(!CdmStore
.currentAuthentiationHasPermission((CdmBase
) element
, RequiredPermissions
.TAXONNODE_EDIT
)){
111 styler
= getNotGrantedStyler();
113 return new StyledString(getText(element
), styler
);
115 return new StyledString(getText(element
));
118 private Styler
getNotGrantedStyler() {
119 if (notGrantedStyler
== null) {
120 notGrantedStyler
= new Styler() {
122 public void applyStyles(TextStyle textStyle
) {
123 textStyle
.underline
= false;
124 textStyle
.foreground
= StoreUtil
.getColor(Resources
.COLOR_TEXT_DISABLED
);
128 return notGrantedStyler
;