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
.navigation
.navigator
.e4
;
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
.eclipse
.ui
.navigator
.IDescriptionProvider
;
18 import org
.hibernate
.LazyInitializationException
;
20 import eu
.etaxonomy
.cdm
.hibernate
.HibernateProxyHelper
;
21 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
22 import eu
.etaxonomy
.cdm
.model
.common
.IIdentifiableEntity
;
23 import eu
.etaxonomy
.cdm
.model
.taxon
.Classification
;
24 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
25 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
26 import eu
.etaxonomy
.taxeditor
.model
.MessagingUtils
;
27 import eu
.etaxonomy
.taxeditor
.navigation
.l10n
.Messages
;
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
;
38 public class TaxonNavigatorLabelProviderE4
extends ColumnLabelProvider
39 implements IDescriptionProvider
, IStyledLabelProvider
{
41 private Styler notGrantedStyler
= null;
47 public String
getText(Object element
) {
49 if(element
instanceof Classification
){
50 String text
= ((Classification
) element
).getName().getText();
51 return text
!= null ? text
: Messages
.ClassificationLabelProvider_UNNAMED_TREE
;
53 //FIXME E4 show synonym in navigator?
55 // else if (element instanceof Synonym && ((Synonym) element).getName()!=null) {
56 // return "= " + ((Synonym) element).getName().getTitleCache(); //$NON-NLS-1$
59 else if (element
instanceof TaxonNode
){
60 TaxonNode taxonNode
= (TaxonNode
) HibernateProxyHelper
.deproxy(element
);
63 Taxon taxon
= HibernateProxyHelper
.deproxy(taxonNode
.getTaxon());
65 String text
= taxonNode
.getClassification().getName().getText();
67 text
= taxonNode
.getClassification().getTitleCache();
72 return taxon
.getName() != null ?
((IIdentifiableEntity
) HibernateProxyHelper
.deproxy(taxon
.getName())).getTitleCache() : new String();
74 MessagingUtils
.error(getClass(), e
);
77 }catch (LazyInitializationException e
){
78 MessagingUtils
.error(getClass(), e
);
88 public String
getDescription(Object anElement
) {
90 if (anElement
instanceof Classification
) {
91 return "Taxonomic Tree: " + ((Classification
) anElement
).getTitleCache(); //$NON-NLS-1$
93 //FIXME E4 show synonym in navigator?
95 // else if (anElement instanceof Synonym) {
96 // Synonym data = (Synonym) anElement;
97 // return "Synonym: " + data.getTitleCache(); //$NON-NLS-1$
100 else if (anElement
instanceof TaxonNode
) {
101 Taxon data
= ((TaxonNode
) anElement
).getTaxon();
102 String text
= (data
!= null ? Messages
.TaxonNodeLabelProvider_TAXON
+ data
.getTitleCache() : Messages
.TaxonNodeLabelProvider_CLASSIFICATION
+ ((TaxonNode
)anElement
).getClassification().getTitleCache());
112 public StyledString
getStyledText(Object element
) {
114 if(element
instanceof Classification
){
115 return new StyledString(getText(element
), StyledString
.DECORATIONS_STYLER
);
117 //FIXME E4 show synonym in navigator?
119 // else if(element instanceof Synonym){
120 // return new StyledString(getText(element), StyledString.QUALIFIER_STYLER);
123 else if(element
instanceof TaxonNode
){
124 // determine style base on user grants
125 Styler styler
= null;
126 if(!CdmStore
.currentAuthentiationHasPermission((CdmBase
) element
, RequiredPermissions
.TAXONNODE_EDIT
)){
127 styler
= getNotGrantedStyler();
129 return new StyledString(getText(element
), styler
);
131 return new StyledString(getText(element
));
134 private Styler
getNotGrantedStyler() {
135 if (notGrantedStyler
== null) {
136 notGrantedStyler
= new Styler() {
138 public void applyStyles(TextStyle textStyle
) {
139 textStyle
.underline
= false;
140 textStyle
.foreground
= StoreUtil
.getColor(Resources
.COLOR_TEXT_DISABLED
);
144 return notGrantedStyler
;