first bits for #3097 (disable editors if a user has insufficient grants for a taxon...
[taxeditor.git] / eu.etaxonomy.taxeditor.navigation / src / main / java / eu / etaxonomy / taxeditor / navigation / navigator / TaxonNodeLabelProvider.java
index d0a823f4d0c5398b5958c2b0ee2704c04653b1ce..7774c2c1eebeff4086c797b983bc926214b95948 100644 (file)
@@ -15,15 +15,24 @@ import org.eclipse.jface.viewers.ColumnLabelProvider;
 import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.jface.viewers.StyledString;
 import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
+import org.eclipse.jface.viewers.StyledString.Styler;
+import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.TextStyle;
 import org.eclipse.ui.navigator.IDescriptionProvider;
 import org.hibernate.LazyInitializationException;
 
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.persistence.hibernate.permission.Operation;
 import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
+import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.security.RequiredPermissions;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
 
 /**
  * <p>TaxonNodeLabelProvider class.</p>
@@ -35,6 +44,9 @@ import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
 public class TaxonNodeLabelProvider extends ColumnLabelProvider 
                implements ILabelProvider, IDescriptionProvider, IStyledLabelProvider {
        
+
+       private Styler notGrantedStyler = null;
+       
        /** {@inheritDoc} */
        @Override
        public Image getImage(Object element) {
@@ -84,6 +96,28 @@ public class TaxonNodeLabelProvider extends ColumnLabelProvider
         */
        /** {@inheritDoc} */
        public StyledString getStyledText(Object element) {
-               return new StyledString(getText(element));
+               // determine style base on  user grants
+               Styler styler = null;
+               if(!CdmStore.currentAuthentiationHasPermission((CdmBase)element, RequiredPermissions.TAXONNODE_EDIT)){
+                       styler = getNotGrantedStyler();
+               }
+               return new StyledString(getText(element), styler);
+               
+       }
+       
+       /**
+        * @return
+        */
+       private Styler getNotGrantedStyler() {
+               if (notGrantedStyler  == null) {
+                       notGrantedStyler = new Styler() {
+                               @Override
+                               public void applyStyles(TextStyle textStyle) {
+                                       textStyle.underline = false;
+                                       textStyle.foreground = StoreUtil.getColor(Resources.COLOR_TEXT_DISABLED);
+                               }
+                       };
+               }
+               return notGrantedStyler;
        }
 }