diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java
index 32dcb78da4c19a460678a9b3bd48e762f3f4ca50..db657dfa08237b4054b88c45d964843a9191ed11 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java
@@ -103,18 +103,21 @@ public abstract class AbstractExternalDataGrid
         addButton(createSelectedItemButton(viewContext.getMessage(Dict.BUTTON_EDIT),
                 asShowEntityInvoker(true)));
 
-        addButton(new Button(viewContext.getMessage(Dict.BUTTON_DELETE),
-                new AbstractCreateDialogListener()
-                    {
-                        @Override
-                        protected Dialog createDialog(List<ExternalData> dataSets,
-                                IBrowserGridActionInvoker invoker)
-                        {
-                            return new DataSetListDeletionConfirmationDialog(viewContext,
-                                    createDeletionCallback(invoker),
-                                    getSelectedAndDisplayedItemsAction().execute());
-                        }
-                    }));
+        final String deleteTitle = viewContext.getMessage(Dict.BUTTON_DELETE);
+        final String deleteAllTitle = deleteTitle + " All";
+        final Button deleteButton = new Button(deleteAllTitle, new AbstractCreateDialogListener()
+            {
+
+                @Override
+                protected Dialog createDialog(List<ExternalData> dataSets,
+                        IBrowserGridActionInvoker invoker)
+                {
+                    return new DataSetListDeletionConfirmationDialog(viewContext,
+                            createDeletionCallback(invoker), getSelectedAndDisplayedItemsAction()
+                                    .execute());
+                }
+            });
+        addButton(deleteButton);
         Button uploadButton =
                 new Button(viewContext.getMessage(Dict.BUTTON_UPLOAD_DATASETS),
                         new AbstractCreateDialogListener()
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java
index 1539a67476080965076b733c0e95cb9f4bc60d4b..2a53c23d9140b37d5a862992412ca9857f3660f6 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserGrid.java
@@ -159,18 +159,20 @@ public class ExperimentBrowserGrid extends
         editButton.setId(EDIT_BUTTON_ID);
         addButton(editButton);
 
-        addButton(new Button(viewContext.getMessage(Dict.BUTTON_DELETE),
-                new AbstractCreateDialogListener()
-                    {
-                        @Override
-                        protected Dialog createDialog(List<Experiment> experiments,
-                                IBrowserGridActionInvoker invoker)
-                        {
-                            return new ExperimentListDeletionConfirmationDialog(viewContext,
-                                    createDeletionCallback(invoker),
-                                    getDisplayedAndSelectedItemsAction().execute());
-                        }
-                    }));
+        final String deleteTitle = viewContext.getMessage(Dict.BUTTON_DELETE);
+        final String deleteAllTitle = deleteTitle + " All";
+        final Button deleteButton = new Button(deleteAllTitle, new AbstractCreateDialogListener()
+            {
+                @Override
+                protected Dialog createDialog(List<Experiment> experiments,
+                        IBrowserGridActionInvoker invoker)
+                {
+                    return new ExperimentListDeletionConfirmationDialog(viewContext,
+                            createDeletionCallback(invoker), getDisplayedAndSelectedItemsAction()
+                                    .execute());
+                }
+            });
+        addButton(deleteButton);
         allowMultipleSelection(); // we allow deletion of multiple samples
 
         addEntityOperationsSeparator();
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
index 7f974eb0418a6a6f3834fc6b72f691dd712fd80a..2ed8a820ffea1ca4862b56b3846065c26db4b6f5 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
@@ -823,6 +823,24 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod
             });
     }
 
+    /**
+     * Given <var>button</var> will have title changed depending on number of items selected in the
+     * grid.
+     */
+    protected final void changeButtonTitleOnSelectedItems(final Button button,
+            final String noSelectedItemsTitle, final String selectedItemsTitle)
+    {
+        addGridSelectionChangeListener(new Listener<SelectionEvent<ModelData>>()
+            {
+                public void handleEvent(SelectionEvent<ModelData> se)
+                {
+                    boolean noSelected = se.selection.size() == 0;
+                    button.setText(noSelected ? noSelectedItemsTitle : selectedItemsTitle);
+                }
+
+            });
+    }
+
     private void addGridSelectionChangeListener(Listener<SelectionEvent<ModelData>> listener)
     {
         grid.getSelectionModel().addListener(Events.SelectionChange, listener);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java
index 3ea35c41421464c6f76fde746186ebe401e989a7..a8231fdecadb77d4a173212217188d50f244314c 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleBrowserGrid.java
@@ -362,18 +362,21 @@ public class SampleBrowserGrid extends
         editButton.setId(EDIT_BUTTON_ID);
         addButton(editButton);
 
-        addButton(new Button(viewContext.getMessage(Dict.BUTTON_DELETE),
-                new AbstractCreateDialogListener()
-                    {
-                        @Override
-                        protected Dialog createDialog(List<Sample> samples,
-                                IBrowserGridActionInvoker invoker)
-                        {
-                            return new SampleListDeletionConfirmationDialog(viewContext, samples,
-                                    createDeletionCallback(invoker),
-                                    getDisplayedAndSelectedItemsAction().execute());
-                        }
-                    }));
+        final String deleteTitle = viewContext.getMessage(Dict.BUTTON_DELETE);
+        final String deleteAllTitle = deleteTitle + " All";
+        final Button deleteButton = new Button(deleteAllTitle, new AbstractCreateDialogListener()
+            {
+                @Override
+                protected Dialog createDialog(List<Sample> samples,
+                        IBrowserGridActionInvoker invoker)
+                {
+                    return new SampleListDeletionConfirmationDialog(viewContext, samples,
+                            createDeletionCallback(invoker), getDisplayedAndSelectedItemsAction()
+                                    .execute());
+                }
+            });
+        changeButtonTitleOnSelectedItems(deleteButton, deleteAllTitle, deleteTitle);
+        addButton(deleteButton);
         allowMultipleSelection(); // we allow deletion of multiple samples
     }