From 6e6cb47f16d478a2cd4fb638e46cf33026e8ed62 Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Tue, 18 Jan 2011 10:02:57 +0000
Subject: [PATCH] [LMS-1949] added edit button and usage of input widgets
 (button action is broken)

SVN: 19459
---
 .../application/ManagedPropertySection.java   |  15 ++-
 .../client/application/ui/AbstractViewer.java |  13 +-
 .../ui/AuthorizationGroupGrid.java            |   2 +-
 .../web/client/application/ui/PersonGrid.java |   2 +-
 .../web/client/application/ui/SpaceGrid.java  |   2 +-
 .../ui/attachment/AttachmentBrowser.java      |   2 +-
 .../ui/data/AbstractExternalDataGrid.java     |   2 +-
 .../ui/experiment/ExperimentBrowserGrid.java  |   2 +-
 .../ui/grid/AbstractBrowserGrid.java          |  12 +-
 .../column/GridCustomColumnGrid.java          |   2 +-
 .../filter/GridCustomFilterGrid.java          |   2 +-
 .../managed_property/ManagedPropertyGrid.java |  54 ++++++++-
 .../ManagedPropertyGridActionDialog.java      | 114 ++++++++++++++++++
 .../ManagedPropertyGridGeneratedCallback.java |  12 +-
 .../ui/material/MaterialBrowserGrid.java      |   2 +-
 .../application/ui/project/ProjectGrid.java   |   2 +-
 .../ui/property_type/PropertyTypeGrid.java    |   2 +-
 .../ui/sample/SampleBrowserGrid.java          |   2 +-
 .../application/ui/script/ScriptGrid.java     |   2 +-
 .../ui/vocabulary/VocabularyGrid.java         |   2 +-
 .../web/client/application/util/GWTUtils.java |  43 +++++--
 .../basic/dto/ManagedUiDescription.java       |  11 +-
 .../basic/dto/api/IManagedEntityProperty.java |   2 +
 .../basic/dto/api/IManagedUiDescription.java  |   5 +-
 .../ManagedPropertyEvaluator.java             |   9 +-
 .../application/module/QueryBrowserGrid.java  |   2 +-
 .../SampleAbundanceBrowserGrid.java           |   2 +-
 27 files changed, 258 insertions(+), 64 deletions(-)
 create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGridActionDialog.java

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ManagedPropertySection.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ManagedPropertySection.java
index f9ef0a62269..1bab85cb8c9 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ManagedPropertySection.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ManagedPropertySection.java
@@ -35,6 +35,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IManagedPropertyGridInforma
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ManagedTableWidgetDescription;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ManagedWidgetType;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedUiDescription;
 
 /**
@@ -69,18 +70,19 @@ public class ManagedPropertySection extends DisposableTabContent
 
     private static String ID_PREFIX = "managed_property_section_";
 
-    private final IManagedUiDescription uiDescription;
-
     private final String gridIdSuffix;
 
     private final IDelegatedAction refreshAction;
 
+    private final IManagedEntityProperty managedProperty;
+
     public ManagedPropertySection(final String header, IViewContext<?> viewContext,
-            IIdHolder ownerId, IManagedUiDescription uiDescription, IDelegatedAction refreshAction)
+            IIdHolder ownerId, IManagedEntityProperty managedProperty,
+            IDelegatedAction refreshAction)
     {
         super(header, viewContext, ownerId);
+        this.managedProperty = managedProperty;
         this.gridIdSuffix = Format.hyphenize(header);
-        this.uiDescription = uiDescription;
         this.refreshAction = refreshAction;
         setIds(new IDisplayTypeIDGenerator()
             {
@@ -134,8 +136,8 @@ public class ManagedPropertySection extends DisposableTabContent
                     {
                         AsyncCallback<TableModelReference> callback =
                                 ManagedPropertyGridGeneratedCallback.create(
-                                        viewContext.getCommonViewContext(), gridInfo,
-                                        gridGeneratedAction, refreshAction);
+                                        viewContext.getCommonViewContext(), managedProperty,
+                                        gridInfo, gridGeneratedAction, refreshAction);
                         viewContext.getCommonService().createReportForManagedProperty(
                                 tableDescriptionOrNull, callback);
                     }
@@ -149,6 +151,7 @@ public class ManagedPropertySection extends DisposableTabContent
 
     private ManagedTableWidgetDescription tryGetTableDescription()
     {
+        final IManagedUiDescription uiDescription = managedProperty.getUiDescription();
         if (uiDescription.getOutputWidgetDescription() != null
                 && uiDescription.getOutputWidgetDescription().getManagedWidgetType() == ManagedWidgetType.TABLE
                 && uiDescription.getOutputWidgetDescription() instanceof ManagedTableWidgetDescription)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java
index 007a78acaa9..f39f47c04c5 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractViewer.java
@@ -49,8 +49,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.ICodeHolder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithProperties;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ManagedEntityProperty;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedUiDescription;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedEntityProperty;
 
 /**
  * @author Franz-Josef Elmer
@@ -248,14 +247,14 @@ public abstract class AbstractViewer<D extends IEntityInformationHolder> extends
         boolean sectionsAdded = false;
         for (final IEntityProperty property : entity.getProperties())
         {
-            if (property instanceof ManagedEntityProperty)
+            if (property instanceof IManagedEntityProperty)
             {
-                ManagedEntityProperty managedProperty = (ManagedEntityProperty) property;
+                IManagedEntityProperty managedProperty = (IManagedEntityProperty) property;
                 if (managedProperty.isOwnTab())
                 {
                     TabContent managedSection =
                             createManagedPropertySection(property.getPropertyType().getLabel(),
-                                    entity, managedProperty.getUiDescription());
+                                    entity, managedProperty);
                     container.addSection(managedSection);
                     sectionsAdded = true;
                 }
@@ -268,7 +267,7 @@ public abstract class AbstractViewer<D extends IEntityInformationHolder> extends
     }
 
     protected TabContent createManagedPropertySection(final String header,
-            final IEntityInformationHolder ownerId, final IManagedUiDescription uiDescription)
+            final IEntityInformationHolder ownerId, final IManagedEntityProperty managedProperty)
     {
         IDelegatedAction refreshAction = new IDelegatedAction()
             {
@@ -277,7 +276,7 @@ public abstract class AbstractViewer<D extends IEntityInformationHolder> extends
                     reloadAllData();
                 }
             };
-        return new ManagedPropertySection(header, viewContext, ownerId, uiDescription,
+        return new ManagedPropertySection(header, viewContext, ownerId, managedProperty,
                 refreshAction);
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AuthorizationGroupGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AuthorizationGroupGrid.java
index 60df0b21029..6b479389cd4 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AuthorizationGroupGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AuthorizationGroupGrid.java
@@ -152,7 +152,7 @@ public class AuthorizationGroupGrid extends AbstractSimpleBrowserGrid<Authorizat
                                         IBrowserGridActionInvoker invoker)
                                 {
                                     return new GroupListDeletionConfirmationDialog(viewContext,
-                                            selected, createDeletionCallback(invoker));
+                                            selected, createRefreshCallback(invoker));
                                 }
                             });
         deleteButton.setId(DELETE_BUTTON_ID);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PersonGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PersonGrid.java
index 205bbe06040..119dccf50dc 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PersonGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/PersonGrid.java
@@ -156,7 +156,7 @@ public class PersonGrid extends AbstractSimpleBrowserGrid<Person>
                                     {
                                         return new PersonListDeletionConfirmationDialog(
                                                 viewContext, selected, authorizationGroupOrNull,
-                                                createDeletionCallback(invoker));
+                                                createRefreshCallback(invoker));
                                     }
                                 });
             deleteButton.setId(createRemoveButtonId(authorizationGroupOrNull));
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SpaceGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SpaceGrid.java
index 481f4fa9879..3caf7d61037 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SpaceGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/SpaceGrid.java
@@ -129,7 +129,7 @@ public class SpaceGrid extends TypedTableGrid<Space>
                                         IBrowserGridActionInvoker invoker)
                                 {
                                     return new GroupListDeletionConfirmationDialog(viewContext,
-                                            groups, createDeletionCallback(invoker));
+                                            groups, createRefreshCallback(invoker));
                                 }
                             });
         addButton(deleteButton);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java
index 71a597860e4..0d9feb288fb 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/attachment/AttachmentBrowser.java
@@ -304,7 +304,7 @@ public class AttachmentBrowser extends AbstractSimpleBrowserGrid<AttachmentVersi
                                     IBrowserGridActionInvoker invoker)
                             {
                                 return new AttachmentListDeletionConfirmationDialog(viewContext,
-                                        attachmentVersions, createDeletionCallback(invoker),
+                                        attachmentVersions, createRefreshCallback(invoker),
                                         attachmentHolder);
                             }
                         }));
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 59cc2eb2f0c..35fad9abce4 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
@@ -147,7 +147,7 @@ public abstract class AbstractExternalDataGrid
                                     IBrowserGridActionInvoker invoker)
                             {
                                 return new DataSetListDeletionConfirmationDialog(viewContext,
-                                        createDeletionCallback(invoker),
+                                        createRefreshCallback(invoker),
                                         getSelectedAndDisplayedItemsAction().execute());
                             }
                         });
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 559220334f6..57c1be5fe27 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
@@ -207,7 +207,7 @@ public class ExperimentBrowserGrid extends
                         IBrowserGridActionInvoker invoker)
                 {
                     return new ExperimentListDeletionConfirmationDialog(viewContext,
-                            createDeletionCallback(invoker), getDisplayedAndSelectedItemsAction()
+                            createRefreshCallback(invoker), getDisplayedAndSelectedItemsAction()
                                     .execute());
                 }
             });
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 af01943174d..e8593eea522 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
@@ -1695,19 +1695,19 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod
         return selectedColumnDefs;
     }
 
-    /** Creates deletion callback that refreshes the grid. */
-    protected final AbstractAsyncCallback<Void> createDeletionCallback(
+    /** Creates callback that refreshes the grid. */
+    protected final AbstractAsyncCallback<Void> createRefreshCallback(
             IBrowserGridActionInvoker invoker)
     {
-        return new DeletionCallback(viewContext, invoker);
+        return new RefreshCallback(viewContext, invoker);
     }
 
-    /** Deletion callback that refreshes the grid. */
-    private static final class DeletionCallback extends AbstractAsyncCallback<Void>
+    /** Callback that refreshes the grid. */
+    private static final class RefreshCallback extends AbstractAsyncCallback<Void>
     {
         private final IBrowserGridActionInvoker invoker;
 
-        public DeletionCallback(IViewContext<?> viewContext, IBrowserGridActionInvoker invoker)
+        public RefreshCallback(IViewContext<?> viewContext, IBrowserGridActionInvoker invoker)
         {
             super(viewContext);
             this.invoker = invoker;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/column/GridCustomColumnGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/column/GridCustomColumnGrid.java
index 6b31ad47ea2..e5fb71ed2f9 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/column/GridCustomColumnGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/column/GridCustomColumnGrid.java
@@ -131,7 +131,7 @@ public class GridCustomColumnGrid extends AbstractSimpleBrowserGrid<GridCustomCo
                                         IBrowserGridActionInvoker invoker)
                                 {
                                     return new DeletionConfirmationDialog(viewContext, selected,
-                                            createDeletionCallback(invoker));
+                                            createRefreshCallback(invoker));
                                 }
                             });
         addButton(deleteButton);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/GridCustomFilterGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/GridCustomFilterGrid.java
index 17b250e726e..418b90d8413 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/GridCustomFilterGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/GridCustomFilterGrid.java
@@ -127,7 +127,7 @@ public class GridCustomFilterGrid extends AbstractSimpleBrowserGrid<GridCustomFi
                                         IBrowserGridActionInvoker invoker)
                                 {
                                     return new DeletionConfirmationDialog(viewContext, selected,
-                                            createDeletionCallback(invoker));
+                                            createRefreshCallback(invoker));
                                 }
                             });
         addButton(deleteButton);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGrid.java
index 4e25891aa8e..410608b37f4 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGrid.java
@@ -16,13 +16,17 @@
 
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.managed_property;
 
+import java.util.List;
 import java.util.Set;
 
+import com.extjs.gxt.ui.client.widget.Dialog;
 import com.extjs.gxt.ui.client.widget.Info;
+import com.extjs.gxt.ui.client.widget.button.Button;
 import com.google.gwt.user.client.rpc.AsyncCallback;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator;
@@ -40,6 +44,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKin
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Null;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedEntityProperty;
 
 /**
  * @author Piotr Buczek
@@ -51,13 +56,13 @@ public class ManagedPropertyGrid extends TypedTableGrid<Null>
 
     public static IDisposableComponent create(
             final IViewContext<ICommonClientServiceAsync> viewContext,
-            TableModelReference tableModelReference,
+            IManagedEntityProperty managedProperty, TableModelReference tableModelReference,
             IManagedPropertyGridInformationProvider gridInformation,
             IDelegatedAction onRefreshAction)
     {
         final ManagedPropertyGrid grid =
-                new ManagedPropertyGrid(viewContext, tableModelReference, gridInformation,
-                        onRefreshAction);
+                new ManagedPropertyGrid(viewContext, managedProperty, tableModelReference,
+                        gridInformation, onRefreshAction);
         return grid.asDisposableWithoutToolbar();
     }
 
@@ -72,17 +77,55 @@ public class ManagedPropertyGrid extends TypedTableGrid<Null>
 
     private final IDelegatedAction onRefreshAction;
 
+    private final IManagedEntityProperty managedProperty;
+
     private ManagedPropertyGrid(IViewContext<ICommonClientServiceAsync> viewContext,
-            TableModelReference tableModelReference,
+            IManagedEntityProperty managedProperty, TableModelReference tableModelReference,
             IManagedPropertyGridInformationProvider gridInformation,
             IDelegatedAction onRefreshAction)
     {
         super(viewContext, BROWSER_ID, true, DisplayTypeIDGenerator.DATA_SET_REPORTING_GRID);
+        this.managedProperty = managedProperty;
         this.onRefreshAction = onRefreshAction;
         setId(BROWSER_ID);
         this.resultSetKey = tableModelReference.getResultSetKey();
         this.gridKind = gridInformation.getKey();
         updateDefaultRefreshButton();
+        extendBottomToolbar();
+    }
+
+    // adds action buttons
+    private void extendBottomToolbar()
+    {
+        if (viewContext.isSimpleMode())
+        {
+            return;
+        }
+        addEntityOperationsLabel();
+        addEntityOperationButtons();
+        addEntityOperationsSeparator();
+    }
+
+    private void addEntityOperationButtons()
+    {
+        // For now we have only one fixed action to modify
+        // but in future we want to support different actions (create/update/delete).
+
+        final String editTitle = viewContext.getMessage(Dict.BUTTON_EDIT);
+        Button editButton = new Button(editTitle, new AbstractCreateDialogListener()
+            {
+
+                @Override
+                protected Dialog createDialog(List<TableModelRowWithObject<Null>> data,
+                        IBrowserGridActionInvoker invoker)
+                {
+                    AsyncCallback<Void> callback = createRefreshCallback(invoker);
+                    return new ManagedPropertyGridActionDialog(viewContext, data, callback,
+                            managedProperty, editTitle);
+                }
+            });
+
+        addButton(editButton);
     }
 
     @Override
@@ -111,6 +154,8 @@ public class ManagedPropertyGrid extends TypedTableGrid<Null>
         viewContext.getService().prepareExportReport(exportCriteria, callback);
     }
 
+    // FIXME auto refresh doesn't work
+
     @Override
     public DatabaseModificationKind[] getRelevantModifications()
     {
@@ -160,4 +205,5 @@ public class ManagedPropertyGrid extends TypedTableGrid<Null>
                 }
             };
     }
+
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGridActionDialog.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGridActionDialog.java
new file mode 100644
index 00000000000..b802435b538
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGridActionDialog.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2009 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.managed_property;
+
+import java.util.List;
+
+import com.extjs.gxt.ui.client.widget.Info;
+import com.extjs.gxt.ui.client.widget.form.TextField;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
+
+import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.AbstractDataConfirmationDialog;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Null;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedEntityProperty;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription;
+
+
+public final class ManagedPropertyGridActionDialog extends
+        AbstractDataConfirmationDialog<List<TableModelRowWithObject<Null>>>
+{
+
+    @SuppressWarnings("unused")
+    private final IViewContext<ICommonClientServiceAsync> viewContext;
+
+    @SuppressWarnings("unused")
+    private final List<TableModelRowWithObject<Null>> data;
+
+    @SuppressWarnings("unused")
+    private final AsyncCallback<Void> callback;
+
+    private final IManagedEntityProperty managedProperty;
+
+    private List<TextField<String>> inputFields;
+
+    public ManagedPropertyGridActionDialog(IViewContext<ICommonClientServiceAsync> viewContext,
+            List<TableModelRowWithObject<Null>> data, AsyncCallback<Void> callback,
+            IManagedEntityProperty managedProperty, String title)
+    {
+        super(viewContext, data, title);
+        this.viewContext = viewContext;
+        this.data = data;
+        this.managedProperty = managedProperty;
+        this.callback = callback;
+        setWidth(400);
+    }
+
+    @Override
+    protected String createMessage()
+    {
+        return "Update property"; // TODO
+    }
+
+    @Override
+    protected void executeConfirmedAction()
+    {
+        StringBuilder sb = new StringBuilder();
+        for (TextField<String> inputField : inputFields)
+        {
+            sb.append(inputField.getFieldLabel() + ": " + inputField.getValue() + "\n");
+        }
+        Info.display("confirmed", sb.toString());
+        // TODO
+        // AsyncCallback<Void> callbackWithProgressBar =
+        // AsyncCallbackWithProgressBar.decorate(callback, "Deleting samples...");
+        // if (selectedAndDisplayedItemsOrNull != null)
+        // {
+        // final DisplayedOrSelectedIdHolderCriteria<T> uploadCriteria =
+        // selectedAndDisplayedItemsOrNull.createCriteria(isOnlySelected());
+        // viewContext.getCommonService().deleteSamples(uploadCriteria, reason.getValue(),
+        // callbackWithProgressBar);
+        // } else
+        // {
+        // viewContext.getCommonService().deleteSample(TechId.create(singleDataOrNull),
+        // reason.getValue(), callbackWithProgressBar);
+        // }
+    }
+
+    @Override
+    protected void extendForm()
+    {
+        formPanel.setLabelWidth(100);
+        formPanel.setFieldWidth(200);
+        for (IManagedInputWidgetDescription inputDescription : managedProperty.getUiDescription()
+                .getInputWidgetDescriptions())
+        {
+            final TextField<String> field = new TextField<String>();
+            field.setFieldLabel(inputDescription.getLabel());
+            if (inputDescription.getValue() != null)
+            {
+                field.setValue(inputDescription.getValue());
+            }
+            inputFields.add(field);
+            formPanel.add(field);
+        }
+    }
+
+}
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGridGeneratedCallback.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGridGeneratedCallback.java
index 7c7603e236d..474a23e4f03 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGridGeneratedCallback.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/managed_property/ManagedPropertyGridGeneratedCallback.java
@@ -28,6 +28,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ID
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableModelReference;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IManagedPropertyGridInformationProvider;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedEntityProperty;
 
 /**
  * @author Piotr Buczek
@@ -48,23 +49,28 @@ public class ManagedPropertyGridGeneratedCallback extends
 
     private final IDelegatedAction onRefreshAction;
 
+    private final IManagedEntityProperty managedProperty;
+
     public static AsyncCallback<TableModelReference> create(
             IViewContext<ICommonClientServiceAsync> viewContext,
+            IManagedEntityProperty managedProperty,
             IManagedPropertyGridInformationProvider gridInfo,
             IOnGridComponentGeneratedAction onGridGeneratedAction, IDelegatedAction onRefreshAction)
     {
         return AsyncCallbackWithProgressBar.decorate(new ManagedPropertyGridGeneratedCallback(
-                viewContext, gridInfo, onGridGeneratedAction, onRefreshAction),
+                viewContext, managedProperty, gridInfo, onGridGeneratedAction, onRefreshAction),
                 "Generating the table...");
     }
 
     private ManagedPropertyGridGeneratedCallback(
             IViewContext<ICommonClientServiceAsync> viewContext,
+            IManagedEntityProperty managedProperty,
             IManagedPropertyGridInformationProvider gridInfo,
             IOnGridComponentGeneratedAction onGridGeneratedAction, IDelegatedAction onRefreshAction)
     {
         super(viewContext);
         this.viewContext = viewContext;
+        this.managedProperty = managedProperty;
         this.gridInfo = gridInfo;
         this.onGridGeneratedAction = onGridGeneratedAction;
         this.onRefreshAction = onRefreshAction;
@@ -74,8 +80,8 @@ public class ManagedPropertyGridGeneratedCallback extends
     protected void process(final TableModelReference tableModelReference)
     {
         final IDisposableComponent reportComponent =
-                ManagedPropertyGrid.create(viewContext, tableModelReference, gridInfo,
-                        onRefreshAction);
+                ManagedPropertyGrid.create(viewContext, managedProperty, tableModelReference,
+                        gridInfo, onRefreshAction);
         onGridGeneratedAction.execute(reportComponent);
         if (StringUtils.isBlank(tableModelReference.tryGetMessage()) == false)
         {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java
index 057f2b8e0be..6d555f45058 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialBrowserGrid.java
@@ -194,7 +194,7 @@ public class MaterialBrowserGrid extends
                         IBrowserGridActionInvoker invoker)
                 {
                     return new MaterialListDeletionConfirmationDialog(viewContext, materials,
-                            createDeletionCallback(invoker), getDisplayedAndSelectedItemsAction()
+                            createRefreshCallback(invoker), getDisplayedAndSelectedItemsAction()
                                     .execute());
                 }
             });
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java
index 08ec5caeb4f..5bec4ac0cb4 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/project/ProjectGrid.java
@@ -152,7 +152,7 @@ public class ProjectGrid extends TypedTableGrid<Project>
                                         projects.add(row.getObjectOrNull());
                                     }
                                     return new ProjectListDeletionConfirmationDialog(viewContext,
-                                            projects , createDeletionCallback(invoker));
+                                            projects , createRefreshCallback(invoker));
                                 }
                             });
         addButton(deleteButton);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java
index 5e6ed8f8cef..b5827209c5c 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeGrid.java
@@ -133,7 +133,7 @@ public class PropertyTypeGrid extends AbstractSimpleBrowserGrid<PropertyType>
                                 IBrowserGridActionInvoker invoker)
                         {
                             return new PropertyTypeListDeletionConfirmationDialog(viewContext,
-                                    propertyTypes, createDeletionCallback(invoker));
+                                    propertyTypes, createRefreshCallback(invoker));
                         }
 
                         @Override
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 46723308627..2a2b24c3c94 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
@@ -661,7 +661,7 @@ public class SampleBrowserGrid extends TypedTableGrid<Sample>
                 protected Dialog createDialog(List<TableModelRowWithObject<Sample>> samples,
                         IBrowserGridActionInvoker invoker)
                 {
-                    AsyncCallback<Void> callback = createDeletionCallback(invoker);
+                    AsyncCallback<Void> callback = createRefreshCallback(invoker);
                     DisplayedAndSelectedEntities<TableModelRowWithObject<Sample>> s =
                             getDisplayedAndSelectedItemsAction().execute();
                     return new SampleListDeletionConfirmationDialog<TableModelRowWithObject<Sample>>(
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/ScriptGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/ScriptGrid.java
index 8f0589668de..11673e85765 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/ScriptGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/ScriptGrid.java
@@ -137,7 +137,7 @@ public class ScriptGrid extends AbstractSimpleBrowserGrid<Script>
                                         IBrowserGridActionInvoker invoker)
                                 {
                                     return new ScriptListDeletionConfirmationDialog(viewContext,
-                                            scripts, createDeletionCallback(invoker));
+                                            scripts, createRefreshCallback(invoker));
                                 }
                             });
         addButton(deleteButton);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java
index 3f3267295bd..f9efdd92c28 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyGrid.java
@@ -244,7 +244,7 @@ public class VocabularyGrid extends TypedTableGrid<Vocabulary>
                                 IBrowserGridActionInvoker invoker)
                         {
                             return new VocabularyListDeletionConfirmationDialog(viewContext,
-                                    vocabularies, createDeletionCallback(invoker));
+                                    vocabularies, createRefreshCallback(invoker));
                         }
 
                         @Override
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java
index 32c6cc49439..3bb4f5b929b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java
@@ -27,6 +27,8 @@ import com.extjs.gxt.ui.client.event.Listener;
 import com.extjs.gxt.ui.client.store.ListStore;
 import com.extjs.gxt.ui.client.util.TextMetrics;
 import com.extjs.gxt.ui.client.widget.Component;
+import com.extjs.gxt.ui.client.widget.Info;
+import com.extjs.gxt.ui.client.widget.InfoConfig;
 import com.extjs.gxt.ui.client.widget.form.ComboBox;
 import com.extjs.gxt.ui.client.widget.form.Field;
 import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
@@ -405,10 +407,6 @@ public final class GWTUtils
             });
     }
 
-    //
-    // native JavaScript
-    //
-
     /**
      * Returns the <i>search</i> of a <i>Javascript</i> window location (without the starting
      * <code>?</code> if any).
@@ -420,6 +418,35 @@ public final class GWTUtils
         return Location.getQueryString();
     }
 
+    /**
+     * Whether this application is deployed.
+     */
+    public final static boolean isDeployed()
+    {
+        return GWT.isScript();
+    }
+
+    public final static void displayInfo(String title)
+    {
+        displayInfo(title, "");
+    }
+
+    public final static void displayInfo(String title, String text)
+    {
+        displayInfo(title, text, 10000); // 10s
+    }
+
+    public final static void displayInfo(String title, String text, int displayTime)
+    {
+        InfoConfig config = new InfoConfig(title, text);
+        config.display = displayTime;
+        Info.display(config);
+    }
+
+    //
+    // native JavaScript
+    //
+
     /**
      * Tooltip template displayed when mouse is over drop down list.
      */
@@ -436,12 +463,4 @@ public final class GWTUtils
        ].join(""); 
      }-*/;
 
-    /**
-     * Whether this application is deployed.
-     */
-    public final static boolean isDeployed()
-    {
-        return GWT.isScript();
-    }
-
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedUiDescription.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedUiDescription.java
index 36284f9385b..04b39dac555 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedUiDescription.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ManagedUiDescription.java
@@ -16,10 +16,12 @@
 
 package ch.systemsx.cisd.openbis.generic.shared.basic.dto;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
 import ch.systemsx.cisd.openbis.generic.shared.basic.ISerializable;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedInputWidgetDescription;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedUiDescription;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedWidgetDescription;
 
@@ -34,7 +36,8 @@ public class ManagedUiDescription implements IManagedUiDescription, ISerializabl
 
     private IManagedWidgetDescription outputWidgetDescription;
 
-    private List<ManagedInputWidgetDescription> inputWidgetDescriptions;
+    private List<IManagedInputWidgetDescription> inputWidgetDescriptions =
+            new ArrayList<IManagedInputWidgetDescription>();
 
     public ManagedUiDescription()
     {
@@ -50,17 +53,17 @@ public class ManagedUiDescription implements IManagedUiDescription, ISerializabl
         this.outputWidgetDescription = outputWidgetDescription;
     }
 
-    public List<ManagedInputWidgetDescription> getInputWidgetDescriptions()
+    public List<IManagedInputWidgetDescription> getInputWidgetDescriptions()
     {
         return inputWidgetDescriptions;
     }
 
-    public void setInputWidgetDescriptions(List<ManagedInputWidgetDescription> widgetDescriptions)
+    public void setInputWidgetDescriptions(List<IManagedInputWidgetDescription> widgetDescriptions)
     {
         this.inputWidgetDescriptions = widgetDescriptions;
     }
 
-    public void addInputWidgetDescription(ManagedInputWidgetDescription widgetDescription)
+    public void addInputWidgetDescription(IManagedInputWidgetDescription widgetDescription)
     {
         inputWidgetDescriptions.add(widgetDescription);
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/api/IManagedEntityProperty.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/api/IManagedEntityProperty.java
index adc13ffe23c..d202c5cc392 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/api/IManagedEntityProperty.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/api/IManagedEntityProperty.java
@@ -25,6 +25,8 @@ public interface IManagedEntityProperty
 {
     boolean isOwnTab();
 
+    void setOwnTab(boolean ownTab);
+
     IManagedUiDescription getUiDescription();
 
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/api/IManagedUiDescription.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/api/IManagedUiDescription.java
index 9b7beff0932..81a4d12545d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/api/IManagedUiDescription.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/api/IManagedUiDescription.java
@@ -16,8 +16,9 @@
 
 package ch.systemsx.cisd.openbis.generic.shared.basic.dto.api;
 
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel;
+import java.util.List;
 
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel;
 
 /**
  * The interface exposed to the Managed Property script.
@@ -33,4 +34,6 @@ public interface IManagedUiDescription
     public void addComboBoxInputField(String labels, String[] values);
 
     public IManagedWidgetDescription getOutputWidgetDescription();
+
+    public List<IManagedInputWidgetDescription> getInputWidgetDescriptions();
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/ManagedPropertyEvaluator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/ManagedPropertyEvaluator.java
index b63cdd85127..0c9cc5ae233 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/ManagedPropertyEvaluator.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/managed_property/ManagedPropertyEvaluator.java
@@ -21,7 +21,7 @@ import org.apache.log4j.Logger;
 import ch.systemsx.cisd.common.evaluator.Evaluator;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ManagedEntityProperty;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.IManagedEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.util.SimpleTableModelBuilder;
 
 /**
@@ -40,7 +40,7 @@ public class ManagedPropertyEvaluator
     /**
      * The name of the script that expects the property to be there and updates it.
      */
-    private static final String CONFIGURE_OUTPUT_EXPRESSION = "configure_output()";
+    private static final String CONFIGURE_UI_EXPRESSION = "configure_ui()";
 
     private static final String PROPERTY_VARIABLE_NAME = "property";
 
@@ -49,7 +49,7 @@ public class ManagedPropertyEvaluator
         this.scriptExpression = scriptExpression;
     }
 
-    public void evalConfigureProperty(ManagedEntityProperty managedProperty)
+    public void evalConfigureProperty(IManagedEntityProperty managedProperty)
     {
         if (operationLog.isDebugEnabled())
         {
@@ -57,8 +57,7 @@ public class ManagedPropertyEvaluator
         }
 
         Evaluator evaluator =
-                new Evaluator(CONFIGURE_OUTPUT_EXPRESSION, ScriptUtilityFactory.class,
-                        scriptExpression);
+                new Evaluator(CONFIGURE_UI_EXPRESSION, ScriptUtilityFactory.class, scriptExpression);
         evaluator.set(PROPERTY_VARIABLE_NAME, managedProperty);
         evaluator.eval();
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryBrowserGrid.java
index 8fdb2b9dfba..6300eab8ee1 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryBrowserGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryBrowserGrid.java
@@ -156,7 +156,7 @@ public class QueryBrowserGrid extends AbstractSimpleBrowserGrid<QueryExpression>
                                         IBrowserGridActionInvoker invoker)
                                 {
                                     return new DeletionConfirmationDialog(viewContext, selected,
-                                            createDeletionCallback(invoker));
+                                            createRefreshCallback(invoker));
                                 }
                             });
         addButton(deleteButton);
diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java
index 50a882c7cd9..00f6c087858 100644
--- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/SampleAbundanceBrowserGrid.java
@@ -213,7 +213,7 @@ public class SampleAbundanceBrowserGrid
                                 IBrowserGridActionInvoker invoker)
                         {
                             return new SampleListDeletionConfirmationDialog(viewContext, samples,
-                                    createDeletionCallback(invoker));
+                                    createRefreshCallback(invoker));
                         }
                     }));
         allowMultipleSelection(); // we allow deletion of multiple samples
-- 
GitLab