first bits for #3097 (disable editors if a user has insufficient grants for a taxon...
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / name / TaxonNameEditor.java
index 951dbcae6df3b417bec14bf5ec71835cd20b3b9a..9700d00cee042f2312b099d4716f22563eac8765 100644 (file)
@@ -51,6 +51,7 @@ import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.editor.CdmDataTransfer;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
@@ -72,6 +73,9 @@ import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
 import eu.etaxonomy.taxeditor.model.TaxeditorPartService;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 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>
@@ -273,6 +277,13 @@ public class TaxonNameEditor extends EditorPart implements
                                        "There should always be a selected object.");
                }
                getSelectedContainer().setSelected();
+               
+               // check permissions
+               TaxonNode taxonNode = ((TaxonEditorInput)getEditorInput()).getTaxonNode();
+               boolean doEnable = CdmStore.currentAuthentiationHasPermission(taxonNode, RequiredPermissions.TAXONNODE_EDIT);
+               if(!doEnable){
+                       setDisabled();
+               }
        }
 
        /** {@inheritDoc} */
@@ -494,6 +505,7 @@ public class TaxonNameEditor extends EditorPart implements
                getSite().setSelectionProvider(simpleSelectionProvider);
        }
 
+
        /**
         * 
         */
@@ -592,7 +604,7 @@ public class TaxonNameEditor extends EditorPart implements
 
                allGroups.add(getAcceptedGroup());
 
-               List<HomotypicalSynonymGroup> grps = getHeterotypicSynonymGroups();
+//             List<HomotypicalSynonymGroup> grps = getHeterotypicSynonymGroups(); // UNUSED => remove
                
                heterotypicSynonymGroups = getHeterotypicSynonymGroups();
                
@@ -871,21 +883,33 @@ public class TaxonNameEditor extends EditorPart implements
                }
                return getAcceptedNameContainer();
        }
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.editor.IMultiPageTaxonEditorPage#setOnError()
+        */
+       public void setOnError() {
+               Color disabledColor =  StoreUtil.getColor(Resources.COLOR_EDITOR_ERROR);
+               setDisabled(disabledColor);
+       }
 
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.editor.IMultiPageTaxonEditorPage#setDisabled()
+        */
        @Override
        public void setDisabled(){
+               Color disabledColor =  StoreUtil.getColor(Resources.COLOR_TEXT_DISABLED_BACKGROUND);
+               setDisabled(disabledColor);
+       }
+       
+       protected void setDisabled(Color disabledColor) {
+       
                for(AbstractGroupedContainer groupedContainer : getGroupedContainers()){
                        groupedContainer.setDisabled(true);
                }
                
-               // send an empty selection to the current provider
+               // send an empty selection to the current provider - TODO only on error ???
                getManagedForm().setInput(null);
                
-               // coloring the widgets
-               
-               // TODO move this to resources and make configurable via Preferences
-               Color disabledColor = Display.getDefault().getSystemColor(SWT.COLOR_RED);
-               
                for(AbstractGroupedContainer groupedContainer : getGroupedContainers()){
                        groupedContainer.setBackground(disabledColor);
                }
@@ -894,6 +918,7 @@ public class TaxonNameEditor extends EditorPart implements
        
        @Override
        public void setEnabled(boolean enabled) {
+               //FIXME this method seems incomplete
                for(AbstractGroupedContainer groupedContainer : getGroupedContainers()){
                        groupedContainer.setEnabled(getManagedForm().setInput(selection));
                }