From 8e5b82cee32d61e8c98443eb5c0d670ec2b8e22e Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Tue, 29 Sep 2009 13:38:03 +0000
Subject: [PATCH] [LMS-1122] change delete button label when table rows
 selection changes

SVN: 12767
---
 .../ui/data/AbstractExternalDataGrid.java     | 27 ++++++++++---------
 .../ui/experiment/ExperimentBrowserGrid.java  | 26 +++++++++---------
 .../ui/grid/AbstractBrowserGrid.java          | 18 +++++++++++++
 .../ui/sample/SampleBrowserGrid.java          | 27 ++++++++++---------
 4 files changed, 62 insertions(+), 36 deletions(-)

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 32dcb78da4c..db657dfa082 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 1539a674760..2a53c23d914 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 7f974eb0418..2ed8a820ffe 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 3ea35c41421..a8231fdecad 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
     }
 
-- 
GitLab