done: #3097 (disable editors if a user has insufficient grants for a taxon or taxon...
authorAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Wed, 12 Sep 2012 13:18:19 +0000 (13:18 +0000)
committerAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Wed, 12 Sep 2012 13:18:19 +0000 (13:18 +0000)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractCdmEditorViewPart.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/AbstractCdmViewPart.java

index 405820023da87c67cf9e94d527fd22f7ff862df6..669c354dc6d268f6a44b04402f8d47f805c64af5 100644 (file)
@@ -50,7 +50,7 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  */
 public class MultiPageTaxonEditor extends FormEditor implements
                IConversationEnabled, IPostOperationEnabled,
-               IDirtyMarkableSelectionProvider, IPartContentHasDetails {
+               IDirtyMarkableSelectionProvider, IPartContentHasDetails, ISecuredEditor {
 
        /** Constant <code>ID="eu.etaxonomy.taxeditor.editor.taxon"{trunked}</code> */
        public static final String ID = "eu.etaxonomy.taxeditor.editor.taxon";
@@ -535,4 +535,13 @@ public class MultiPageTaxonEditor extends FormEditor implements
        public String toString() {
                return String.format("%s[%s]", this.getClass().getSimpleName(), getEditorInput());
        }
+
+       @Override
+       public boolean permissionsSatisfied() {
+               IEditorPart activeEditor = getActiveEditor();
+               if(activeEditor != null && ISecuredEditor.class.isAssignableFrom(activeEditor.getClass())){
+                       return ((ISecuredEditor)activeEditor).permissionsSatisfied();
+               }
+               return true;
+       }
 }
index 9700d00cee042f2312b099d4716f22563eac8765..02d88917d398171990f385e90d263c8e697cca9f 100644 (file)
@@ -57,6 +57,7 @@ import eu.etaxonomy.taxeditor.editor.CdmDataTransfer;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.IDropTargetable;
 import eu.etaxonomy.taxeditor.editor.IMultiPageTaxonEditorPage;
+import eu.etaxonomy.taxeditor.editor.ISecuredEditor;
 import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
 import eu.etaxonomy.taxeditor.editor.SimpleSelectionProvider;
 import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
@@ -90,7 +91,7 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
 public class TaxonNameEditor extends EditorPart implements
                IMultiPageTaxonEditorPage, IAdaptable, IConversationEnabled,
                IPostOperationEnabled, IPartContentHasDetails, IPartChangeListener,
-               ISelectionListener, IDropTargetable {
+               ISelectionListener, IDropTargetable, ISecuredEditor {
 
        /** Constant <code>ID="eu.etaxonomy.taxeditor.editor.taxon.name"</code> */
        public static final String ID = "eu.etaxonomy.taxeditor.editor.taxon.name";
@@ -279,11 +280,18 @@ public class TaxonNameEditor extends EditorPart implements
                getSelectedContainer().setSelected();
                
                // check permissions
+               boolean doEnable = permissionsSatisfied();
+               setEnabled(doEnable);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.editor.name.ISecuredEditorPart#permissionsSatisfied()
+        */
+       @Override
+       public boolean permissionsSatisfied() {
                TaxonNode taxonNode = ((TaxonEditorInput)getEditorInput()).getTaxonNode();
                boolean doEnable = CdmStore.currentAuthentiationHasPermission(taxonNode, RequiredPermissions.TAXONNODE_EDIT);
-               if(!doEnable){
-                       setDisabled();
-               }
+               return doEnable;
        }
 
        /** {@inheritDoc} */
@@ -889,7 +897,7 @@ public class TaxonNameEditor extends EditorPart implements
         */
        public void setOnError() {
                Color disabledColor =  StoreUtil.getColor(Resources.COLOR_EDITOR_ERROR);
-               setDisabled(disabledColor);
+               setEnabled(false, disabledColor);
        }
 
        /* (non-Javadoc)
@@ -898,32 +906,27 @@ public class TaxonNameEditor extends EditorPart implements
        @Override
        public void setDisabled(){
                Color disabledColor =  StoreUtil.getColor(Resources.COLOR_TEXT_DISABLED_BACKGROUND);
-               setDisabled(disabledColor);
+               setEnabled(false);
        }
        
-       protected void setDisabled(Color disabledColor) {
+       protected void setEnabled(boolean enabled, Color background) {
        
                for(AbstractGroupedContainer groupedContainer : getGroupedContainers()){
-                       groupedContainer.setDisabled(true);
+                       groupedContainer.setEnabled(enabled);
                }
                
                // send an empty selection to the current provider - TODO only on error ???
                getManagedForm().setInput(null);
                
                for(AbstractGroupedContainer groupedContainer : getGroupedContainers()){
-                       groupedContainer.setBackground(disabledColor);
+                       groupedContainer.setBackground(background);
                }
-               getControl().setBackground(disabledColor);
+               getControl().setBackground(background);
        }
        
        @Override
        public void setEnabled(boolean enabled) {
-               //FIXME this method seems incomplete
-               for(AbstractGroupedContainer groupedContainer : getGroupedContainers()){
-                       groupedContainer.setEnabled(getManagedForm().setInput(selection));
-               }
-               
-               // send an empty selection to the current provider
-               getManagedForm().setInput(null);
+               Color background =  StoreUtil.getColor(enabled ? Resources.COLOR_COMPOSITE_BACKGROUND : Resources.COLOR_TEXT_DISABLED_BACKGROUND);
+               setEnabled(enabled, background);
        }
 }
index afa592fa171aa06f0426f840532ede686655fd36..1c4c3e82d5ee8a3ff17fac5811f5d7f846a89421 100644 (file)
@@ -6,6 +6,7 @@ package eu.etaxonomy.taxeditor.view;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IEditorPart;
 
+import eu.etaxonomy.taxeditor.editor.ISecuredEditor;
 import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 
@@ -45,6 +46,17 @@ public abstract class AbstractCdmEditorViewPart extends AbstractCdmViewPart {
        public IEditorPart getEditor() {
                return StoreUtil.getActiveEditor();
        }
+       
+       /** {@inheritDoc} */
+       @Override
+       public void setFocus() {
+               super.setFocus();
+               
+               if(getEditor() != null && ISecuredEditor.class.isAssignableFrom(getEditor().getClass())){       
+                       boolean doEnable = ((ISecuredEditor)getEditor()).permissionsSatisfied();
+                       setEnabled(doEnable);
+               }
+       }
 
        /** {@inheritDoc} */
        @Override
index 5a48d1831a3802a1037a7c9bb4b34e1a5727c224..5535d297e4a6254c624852faf101d1d0d63e0b54 100644 (file)
@@ -126,6 +126,9 @@ public abstract class AbstractCdmViewPart extends ViewPart implements ISelection
                pageBook.showPage(viewerComposite);
     }
   
+       public void setEnabled(boolean enabled){
+               pageBook.setEnabled(enabled);
+       }
        
        /** {@inheritDoc} */
        @Override