From fe3010e29980f1286b4f1c528b58c53dd21be3a0 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Thu, 1 Sep 2011 06:35:24 +0000
Subject: [PATCH] Refactoring PropertyTypeAssignmentGrid part II. Signature of
 TypedTableGrid.listTableRows() slightly changed.

SVN: 22757
---
 .../web/client/ICommonClientService.java      |  6 +-
 .../web/client/ICommonClientServiceAsync.java |  6 +-
 .../application/MatchingEntitiesPanel.java    |  9 +--
 .../ui/AuthorizationGroupGrid.java            |  2 +-
 .../web/client/application/ui/PersonGrid.java | 11 +--
 .../application/ui/RoleAssignmentGrid.java    |  3 +-
 .../web/client/application/ui/SpaceGrid.java  |  2 +-
 .../client/application/ui/TypedTableGrid.java |  3 +-
 .../ui/attachment/AttachmentBrowser.java      | 20 +++--
 .../application/ui/data/DataSetTypeGrid.java  |  4 +-
 .../ui/data/FileFormatTypeGrid.java           |  2 +-
 .../application/ui/deletion/DeletionGrid.java |  3 +-
 .../ui/experiment/ExperimentBrowserGrid.java  |  6 +-
 .../ui/experiment/ExperimentTypeGrid.java     |  2 +-
 .../column/GridCustomColumnGrid.java          | 53 ++++++++-----
 .../filter/GridCustomFilterGrid.java          | 35 ++++----
 .../managed_property/ManagedPropertyGrid.java |  2 +-
 .../ui/material/MaterialTypeGrid.java         |  2 +-
 .../application/ui/project/ProjectGrid.java   | 16 ++--
 .../PropertyTypeAssignmentGrid.java           | 79 +++++++++++--------
 .../ui/property_type/PropertyTypeGrid.java    |  8 +-
 .../application/ui/report/ReportGrid.java     |  4 +-
 .../ui/sample/SampleBrowserGrid.java          |  3 +-
 .../ui/sample/SampleSearchHitGrid.java        | 12 +--
 .../application/ui/sample/SampleTypeGrid.java |  2 +-
 .../application/ui/script/ScriptGrid.java     |  2 +-
 .../ui/vocabulary/VocabularyGrid.java         |  2 +-
 .../ui/vocabulary/VocabularyTermGrid.java     |  2 +-
 .../web/server/CommonClientService.java       | 55 ++-----------
 ...AbstractGenericSampleRegisterEditForm.java |  9 +++
 .../application/module/QueryBrowserGrid.java  | 11 ++-
 .../application/DataSetProteinGrid.java       |  4 +-
 .../application/ProteinRelatedSampleGrid.java |  3 +-
 .../application/ProteinSequenceGrid.java      |  4 +-
 .../application/ProteinSummaryGrid.java       |  4 +-
 .../client/application/RawDataSampleGrid.java |  4 +-
 .../wizard/BiologicalSampleGrid.java          |  4 +-
 .../ParentlessMsInjectionSampleGrid.java      |  4 +-
 .../ExperimentAnalysisSummaryGrid.java        |  4 +-
 .../MaterialDisambiguationGrid.java           |  3 +-
 ...aterialFeaturesFromAllExperimentsGrid.java |  4 +-
 .../MaterialReplicaFeatureSummaryGrid.java    |  4 +-
 .../detailviewers/PlateMetadataBrowser.java   |  4 +-
 .../detailviewers/WellSearchGrid.java         |  3 +-
 44 files changed, 191 insertions(+), 234 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java
index 9450ff31e5f..f0cf89c75be 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java
@@ -323,15 +323,15 @@ public interface ICommonClientService extends IClientService
     /**
      * Returns a chunk of the property types assignment list.
      */
-    public ResultSet<EntityTypePropertyType<?>> listPropertyTypeAssignments(
-            DefaultResultSetConfig<String, EntityTypePropertyType<?>> criteria)
+    public TypedTableResultSet<EntityTypePropertyType<?>> listPropertyTypeAssignments(
+            DefaultResultSetConfig<String, TableModelRowWithObject<EntityTypePropertyType<?>>> criteria)
             throws UserFailureException;
 
     /**
      * Like {@link #prepareExportSamples(TableExportCriteria)}, but for property types assignments.
      */
     public String prepareExportPropertyTypeAssignments(
-            final TableExportCriteria<EntityTypePropertyType<?>> criteria)
+            final TableExportCriteria<TableModelRowWithObject<EntityTypePropertyType<?>>> criteria)
             throws UserFailureException;
 
     /**
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java
index 5286aad79f5..c85e961b549 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java
@@ -217,14 +217,14 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync
 
     /** @see ICommonClientService#listPropertyTypeAssignments(DefaultResultSetConfig) */
     public void listPropertyTypeAssignments(
-            DefaultResultSetConfig<String, EntityTypePropertyType<?>> criteria,
-            final AsyncCallback<ResultSet<EntityTypePropertyType<?>>> asyncCallback);
+            DefaultResultSetConfig<String, TableModelRowWithObject<EntityTypePropertyType<?>>> criteria,
+            final AsyncCallback<TypedTableResultSet<EntityTypePropertyType<?>>> asyncCallback);
 
     /**
      * @see ICommonClientService#prepareExportPropertyTypeAssignments(TableExportCriteria)
      */
     public void prepareExportPropertyTypeAssignments(
-            final TableExportCriteria<EntityTypePropertyType<?>> criteria,
+            final TableExportCriteria<TableModelRowWithObject<EntityTypePropertyType<?>>> criteria,
             AsyncCallback<String> asyncCallback);
 
     /**
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java
index 92c36759464..66eca7e3c5d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java
@@ -31,7 +31,6 @@ import com.extjs.gxt.ui.client.event.ButtonEvent;
 import com.extjs.gxt.ui.client.event.SelectionListener;
 import com.extjs.gxt.ui.client.widget.LayoutContainer;
 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.framework.AbstractTabItemFactory;
@@ -200,15 +199,11 @@ public final class MatchingEntitiesPanel extends TypedTableGrid<MatchingEntity>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<MatchingEntity>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<MatchingEntity>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<MatchingEntity>> callback)
     {
         ShowResultSetCutInfo<TypedTableResultSet<MatchingEntity>> info =
                 new ShowResultSetCutInfo<TypedTableResultSet<MatchingEntity>>(viewContext);
-        if (callback instanceof AbstractAsyncCallback)
-        {
-            ((AbstractAsyncCallback<TypedTableResultSet<MatchingEntity>>) callback)
-                    .addOnSuccessAction(info);
-        }
+        callback.addOnSuccessAction(info);
         viewContext.getService().listMatchingEntities(searchableEntity, queryText,
                 useWildcardSearchMode, resultSetConfig, callback);
     }
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 67b13581327..022279757f9 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
@@ -191,7 +191,7 @@ public class AuthorizationGroupGrid extends TypedTableGrid<AuthorizationGroup>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<AuthorizationGroup>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<AuthorizationGroup>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<AuthorizationGroup>> callback)
     {
         viewContext.getService().listAuthorizationGroups(resultSetConfig, callback);
     }
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 d27a0aebcc3..20261c836c2 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
@@ -24,7 +24,6 @@ import com.extjs.gxt.ui.client.event.ButtonEvent;
 import com.extjs.gxt.ui.client.event.SelectionListener;
 import com.extjs.gxt.ui.client.widget.Dialog;
 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;
@@ -189,7 +188,7 @@ public class PersonGrid extends TypedTableGrid<Person>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<Person>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<Person>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<Person>> callback)
     {
         ListPersonsCriteria criteria = new ListPersonsCriteria(authorizationGroupOrNull);
         criteria.copyPagingConfig(resultSetConfig);
@@ -197,7 +196,8 @@ public class PersonGrid extends TypedTableGrid<Person>
     }
 
     @Override
-    protected void prepareExportEntities(TableExportCriteria<TableModelRowWithObject<Person>> exportCriteria,
+    protected void prepareExportEntities(
+            TableExportCriteria<TableModelRowWithObject<Person>> exportCriteria,
             AbstractAsyncCallback<String> callback)
     {
         viewContext.getService().prepareExportPersons(exportCriteria, callback);
@@ -208,7 +208,7 @@ public class PersonGrid extends TypedTableGrid<Person>
     {
         return Arrays.asList(PersonGridColumnIDs.USER_ID);
     }
-    
+
     @Override
     protected ColumnDefsAndConfigs<TableModelRowWithObject<Person>> createColumnsDefinition()
     {
@@ -226,7 +226,8 @@ public class PersonGrid extends TypedTableGrid<Person>
     }
 
     @Override
-    protected void showEntityViewer(final TableModelRowWithObject<Person> person, boolean editMode, boolean inBackground)
+    protected void showEntityViewer(final TableModelRowWithObject<Person> person, boolean editMode,
+            boolean inBackground)
     {
         assert false : "not implemented";
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/RoleAssignmentGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/RoleAssignmentGrid.java
index 78da8211254..58ac03b34cc 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/RoleAssignmentGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/RoleAssignmentGrid.java
@@ -22,7 +22,6 @@ import java.util.List;
 import com.extjs.gxt.ui.client.event.ButtonEvent;
 import com.extjs.gxt.ui.client.event.SelectionListener;
 import com.extjs.gxt.ui.client.widget.button.Button;
-import com.google.gwt.user.client.rpc.AsyncCallback;
 
 import ch.systemsx.cisd.common.shared.basic.utils.StringUtils;
 import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
@@ -172,7 +171,7 @@ public class RoleAssignmentGrid extends TypedTableGrid<RoleAssignment>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<RoleAssignment>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<RoleAssignment>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<RoleAssignment>> callback)
     {
         viewContext.getService().listRoleAssignments(resultSetConfig, callback);
     }
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 dd3f9a8dd6f..f8b833b3542 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
@@ -189,7 +189,7 @@ public class SpaceGrid extends TypedTableGrid<Space>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<Space>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<Space>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<Space>> callback)
     {
         viewContext.getService().listGroups(resultSetConfig, callback);
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java
index 4020a976ef0..dd7816f5dee 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/TypedTableGrid.java
@@ -24,7 +24,6 @@ import java.util.Map;
 import java.util.Set;
 
 import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
-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;
@@ -213,7 +212,7 @@ public abstract class TypedTableGrid<T extends ISerializable>
      */
     protected abstract void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<T>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<T>> callback);
+            AbstractAsyncCallback<TypedTableResultSet<T>> callback);
 
     @Override
     protected ColumnDefsAndConfigs<TableModelRowWithObject<T>> createColumnsDefinition()
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 6e3d7e6e0ca..9cd2c6eeecb 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
@@ -215,7 +215,8 @@ public class AttachmentBrowser extends TypedTableGrid<AttachmentVersions>
                             Attachment current = entity.getCurrent();
                             final String fileName = current.getFileName();
                             final int version = current.getVersion();
-                            return AttachmentDownloadHelper.createURL(fileName, version, attachmentHolder);
+                            return AttachmentDownloadHelper.createURL(fileName, version,
+                                    attachmentHolder);
                         }
                     });
     }
@@ -246,7 +247,7 @@ public class AttachmentBrowser extends TypedTableGrid<AttachmentVersions>
                         }
                     });
     }
-    
+
     @Override
     protected ColumnDefsAndConfigs<TableModelRowWithObject<AttachmentVersions>> createColumnsDefinition()
     {
@@ -313,14 +314,17 @@ public class AttachmentBrowser extends TypedTableGrid<AttachmentVersions>
 
         if (viewContext.isSimpleOrEmbeddedMode() == false)
         {
-            addButton(createSelectedItemButton(viewContext.getMessage(Dict.BUTTON_EDIT),
+            addButton(createSelectedItemButton(
+                    viewContext.getMessage(Dict.BUTTON_EDIT),
                     new ISelectedEntityInvoker<BaseEntityModel<TableModelRowWithObject<AttachmentVersions>>>()
                         {
 
-                            public void invoke(BaseEntityModel<TableModelRowWithObject<AttachmentVersions>> selectedItem,
+                            public void invoke(
+                                    BaseEntityModel<TableModelRowWithObject<AttachmentVersions>> selectedItem,
                                     boolean keyPressed)
                             {
-                                AttachmentVersions versions = selectedItem.getBaseObject().getObjectOrNull();
+                                AttachmentVersions versions =
+                                        selectedItem.getBaseObject().getObjectOrNull();
                                 createEditAttachmentDialog(versions).show();
 
                             }
@@ -395,8 +399,8 @@ public class AttachmentBrowser extends TypedTableGrid<AttachmentVersions>
     }
 
     @Override
-    protected void showEntityViewer(TableModelRowWithObject<AttachmentVersions> entity, boolean editMode,
-            boolean inBackground)
+    protected void showEntityViewer(TableModelRowWithObject<AttachmentVersions> entity,
+            boolean editMode, boolean inBackground)
     {
         assert editMode == false : "edit mode is not implemented";
 
@@ -480,7 +484,7 @@ public class AttachmentBrowser extends TypedTableGrid<AttachmentVersions>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<AttachmentVersions>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<AttachmentVersions>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<AttachmentVersions>> callback)
     {
         viewContext.getService().listAttachmentVersions(TechId.create(attachmentHolder),
                 attachmentHolder.getAttachmentHolderKind(), resultSetConfig, callback);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetTypeGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetTypeGrid.java
index 83fd9f88d04..15620988aa2 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetTypeGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetTypeGrid.java
@@ -70,7 +70,7 @@ public class DataSetTypeGrid extends AbstractEntityTypeGrid<DataSetType>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<DataSetType>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<DataSetType>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<DataSetType>> callback)
     {
         viewContext.getService().listDataSetTypes(resultSetConfig, callback);
     }
@@ -172,7 +172,7 @@ public class DataSetTypeGrid extends AbstractEntityTypeGrid<DataSetType>
                 {
                     containerTypeField = createContainerField();
                     addField(containerTypeField);
-                    
+
                     mainDataSetPatternField = createMainDataSetPatternField();
                     addField(mainDataSetPatternField);
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/FileFormatTypeGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/FileFormatTypeGrid.java
index c6ae27f37cd..e49ac91a74a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/FileFormatTypeGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/FileFormatTypeGrid.java
@@ -225,7 +225,7 @@ public class FileFormatTypeGrid extends TypedTableGrid<FileFormatType>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<FileFormatType>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<FileFormatType>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<FileFormatType>> callback)
     {
         viewContext.getService().listFileTypes(resultSetConfig, callback);
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/deletion/DeletionGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/deletion/DeletionGrid.java
index dfe2b225648..f3fdcfae713 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/deletion/DeletionGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/deletion/DeletionGrid.java
@@ -22,7 +22,6 @@ import java.util.List;
 
 import com.extjs.gxt.ui.client.widget.Dialog;
 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;
@@ -145,7 +144,7 @@ public class DeletionGrid extends TypedTableGrid<Deletion>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<Deletion>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<Deletion>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<Deletion>> callback)
     {
         viewContext.getService().listDeletions(resultSetConfig, callback);
     }
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 f818cc6311d..b0be00f25ef 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
@@ -25,7 +25,6 @@ import com.extjs.gxt.ui.client.event.SelectionListener;
 import com.extjs.gxt.ui.client.widget.Dialog;
 import com.extjs.gxt.ui.client.widget.LayoutContainer;
 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;
@@ -118,7 +117,8 @@ public class ExperimentBrowserGrid extends AbstractEntityGrid<Experiment>
                 protected void showNonEditableTableCellMessage(
                         BaseEntityModel<TableModelRowWithObject<Experiment>> model, String columnID)
                 {
-                    // Do not show a message because in a chooser nobody is expecting editable table cells.
+                    // Do not show a message because in a chooser nobody is expecting editable table
+                    // cells.
                 }
             };
         browserGrid.addGridRefreshListener(toolbar);
@@ -319,7 +319,7 @@ public class ExperimentBrowserGrid extends AbstractEntityGrid<Experiment>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<Experiment>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<Experiment>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<Experiment>> callback)
     {
         ListExperimentsCriteria criteria = criteriaProvider.tryGetCriteria();
         criteria.copyPagingConfig(resultSetConfig);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentTypeGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentTypeGrid.java
index 06d2061e202..5599055654a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentTypeGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentTypeGrid.java
@@ -58,7 +58,7 @@ public class ExperimentTypeGrid extends AbstractEntityTypeGrid<ExperimentType>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<ExperimentType>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<ExperimentType>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<ExperimentType>> callback)
     {
         viewContext.getService().listExperimentTypes(resultSetConfig, callback);
     }
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 eb8732da68c..3938b4cf4b0 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
@@ -64,8 +64,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject
  */
 public class GridCustomColumnGrid extends TypedTableGrid<GridCustomColumn>
 {
-    private static final String BROWSER_ID =
-            GenericConstants.ID_PREFIX + "custom-grid-column-browser";
+    private static final String BROWSER_ID = GenericConstants.ID_PREFIX
+            + "custom-grid-column-browser";
 
     public static IDisposableComponent create(IViewContext<ICommonClientServiceAsync> viewContext,
             String gridDisplayId, AbstractColumnSettingsDataModelProvider columnDataModelProvider)
@@ -97,8 +97,8 @@ public class GridCustomColumnGrid extends TypedTableGrid<GridCustomColumn>
     {
         addEntityOperationsLabel();
         final Button addButton =
-                new Button(viewContext.getMessage(Dict.BUTTON_ADD, viewContext
-                        .getMessage(Dict.COLUMN)), new SelectionListener<ButtonEvent>()
+                new Button(viewContext.getMessage(Dict.BUTTON_ADD,
+                        viewContext.getMessage(Dict.COLUMN)), new SelectionListener<ButtonEvent>()
                     {
                         @Override
                         public void componentSelected(ButtonEvent ce)
@@ -110,13 +110,16 @@ public class GridCustomColumnGrid extends TypedTableGrid<GridCustomColumn>
         addButton.setId(createAddButtonId(gridDisplayId));
         addButton(addButton);
         final Button editButton =
-                createSelectedItemButton(viewContext.getMessage(Dict.BUTTON_EDIT),
+                createSelectedItemButton(
+                        viewContext.getMessage(Dict.BUTTON_EDIT),
                         new ISelectedEntityInvoker<BaseEntityModel<TableModelRowWithObject<GridCustomColumn>>>()
                             {
-                                public void invoke(BaseEntityModel<TableModelRowWithObject<GridCustomColumn>> selectedItem,
+                                public void invoke(
+                                        BaseEntityModel<TableModelRowWithObject<GridCustomColumn>> selectedItem,
                                         boolean keyPressed)
                                 {
-                                    final GridCustomColumn selected = selectedItem.getBaseObject().getObjectOrNull();
+                                    final GridCustomColumn selected =
+                                            selectedItem.getBaseObject().getObjectOrNull();
                                     createEditDialog(selected).show();
                                 }
 
@@ -127,7 +130,8 @@ public class GridCustomColumnGrid extends TypedTableGrid<GridCustomColumn>
                         new AbstractCreateDialogListener()
                             {
                                 @Override
-                                protected Dialog createDialog(List<TableModelRowWithObject<GridCustomColumn>> selected,
+                                protected Dialog createDialog(
+                                        List<TableModelRowWithObject<GridCustomColumn>> selected,
                                         IBrowserGridActionInvoker invoker)
                                 {
                                     return new DeletionConfirmationDialog(viewContext, selected,
@@ -190,9 +194,9 @@ public class GridCustomColumnGrid extends TypedTableGrid<GridCustomColumn>
                 AbstractColumnSettingsDataModelProvider columnDataModelProvider,
                 AbstractExpression itemToUpdate)
         {
-            super(viewContext, viewContext.getMessage(Dict.EDIT_TITLE, viewContext
-                    .getMessage(Dict.COLUMN), itemToUpdate.getName()), postRegistrationCallback,
-                    gridId, columnDataModelProvider);
+            super(viewContext, viewContext.getMessage(Dict.EDIT_TITLE,
+                    viewContext.getMessage(Dict.COLUMN), itemToUpdate.getName()),
+                    postRegistrationCallback, gridId, columnDataModelProvider);
             this.viewContext = viewContext;
             this.itemToUpdate = itemToUpdate;
             initializeValues(itemToUpdate);
@@ -225,7 +229,8 @@ public class GridCustomColumnGrid extends TypedTableGrid<GridCustomColumn>
         private final AbstractAsyncCallback<Void> callback;
 
         public DeletionConfirmationDialog(IViewContext<ICommonClientServiceAsync> viewContext,
-                List<TableModelRowWithObject<GridCustomColumn>> data, AbstractAsyncCallback<Void> callback)
+                List<TableModelRowWithObject<GridCustomColumn>> data,
+                AbstractAsyncCallback<Void> callback)
         {
             super(viewContext, data, viewContext.getMessage(Dict.DELETE_CONFIRMATION_TITLE));
             this.callback = callback;
@@ -268,11 +273,11 @@ public class GridCustomColumnGrid extends TypedTableGrid<GridCustomColumn>
     {
         return columnID.toLowerCase();
     }
-    
+
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<GridCustomColumn>> resultSetConfig,
-            final AsyncCallback<TypedTableResultSet<GridCustomColumn>> callback)
+            final AbstractAsyncCallback<TypedTableResultSet<GridCustomColumn>> callback)
     {
         final int orgOffset = resultSetConfig.getOffset();
         final int orgLimit = resultSetConfig.getLimit();
@@ -297,12 +302,15 @@ public class GridCustomColumnGrid extends TypedTableGrid<GridCustomColumn>
                             callback.onSuccess(result);
                         }
 
-                        private void setPageFromAllFetched(TypedTableResultSet<GridCustomColumn> result,
-                                final int offset, final int limit)
+                        private void setPageFromAllFetched(
+                                TypedTableResultSet<GridCustomColumn> result, final int offset,
+                                final int limit)
                         {
-                            GridRowModels<TableModelRowWithObject<GridCustomColumn>> allModel = result.getResultSet().getList();
+                            GridRowModels<TableModelRowWithObject<GridCustomColumn>> allModel =
+                                    result.getResultSet().getList();
                             List<GridRowModel<TableModelRowWithObject<GridCustomColumn>>> pageResult =
-                                    new ArrayList<GridRowModel<TableModelRowWithObject<GridCustomColumn>>>(limit);
+                                    new ArrayList<GridRowModel<TableModelRowWithObject<GridCustomColumn>>>(
+                                            limit);
                             for (int i = offset; i < Math.min(offset + limit, allModel.size()); i++)
                             {
                                 pageResult.add(allModel.get(i));
@@ -320,7 +328,8 @@ public class GridCustomColumnGrid extends TypedTableGrid<GridCustomColumn>
     }
 
     @Override
-    protected void prepareExportEntities(TableExportCriteria<TableModelRowWithObject<GridCustomColumn>> exportCriteria,
+    protected void prepareExportEntities(
+            TableExportCriteria<TableModelRowWithObject<GridCustomColumn>> exportCriteria,
             AbstractAsyncCallback<String> callback)
     {
         viewContext.getService().prepareExportColumns(exportCriteria, callback);
@@ -329,13 +338,15 @@ public class GridCustomColumnGrid extends TypedTableGrid<GridCustomColumn>
     @Override
     protected List<String> getColumnIdsOfFilters()
     {
-        return Arrays.asList(CustomGridColumnGridColumnIDs.NAME, CustomGridColumnGridColumnIDs.IS_PUBLIC);
+        return Arrays.asList(CustomGridColumnGridColumnIDs.NAME,
+                CustomGridColumnGridColumnIDs.IS_PUBLIC);
     }
 
     @Override
     protected ColumnDefsAndConfigs<TableModelRowWithObject<GridCustomColumn>> createColumnsDefinition()
     {
-        ColumnDefsAndConfigs<TableModelRowWithObject<GridCustomColumn>> schema = super.createColumnsDefinition();
+        ColumnDefsAndConfigs<TableModelRowWithObject<GridCustomColumn>> schema =
+                super.createColumnsDefinition();
         schema.setGridCellRendererFor(CustomGridColumnGridColumnIDs.DESCRIPTION,
                 createMultilineStringCellRenderer());
         schema.setGridCellRendererFor(CustomGridColumnGridColumnIDs.EXPRESSION,
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 8fab7cb58f4..2415100aa0b 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
@@ -93,8 +93,8 @@ public class GridCustomFilterGrid extends TypedTableGrid<GridCustomFilter>
     {
         addEntityOperationsLabel();
         final Button addButton =
-                new Button(viewContext.getMessage(Dict.BUTTON_ADD, viewContext
-                        .getMessage(Dict.FILTER)), new SelectionListener<ButtonEvent>()
+                new Button(viewContext.getMessage(Dict.BUTTON_ADD,
+                        viewContext.getMessage(Dict.FILTER)), new SelectionListener<ButtonEvent>()
                     {
                         @Override
                         public void componentSelected(ButtonEvent ce)
@@ -106,13 +106,16 @@ public class GridCustomFilterGrid extends TypedTableGrid<GridCustomFilter>
         addButton.setId(createAddButtonId(gridDisplayId));
         addButton(addButton);
         final Button editButton =
-                createSelectedItemButton(viewContext.getMessage(Dict.BUTTON_EDIT),
+                createSelectedItemButton(
+                        viewContext.getMessage(Dict.BUTTON_EDIT),
                         new ISelectedEntityInvoker<BaseEntityModel<TableModelRowWithObject<GridCustomFilter>>>()
                             {
-                                public void invoke(BaseEntityModel<TableModelRowWithObject<GridCustomFilter>> selectedItem,
+                                public void invoke(
+                                        BaseEntityModel<TableModelRowWithObject<GridCustomFilter>> selectedItem,
                                         boolean keyPressed)
                                 {
-                                    final GridCustomFilter selected = selectedItem.getBaseObject().getObjectOrNull();
+                                    final GridCustomFilter selected =
+                                            selectedItem.getBaseObject().getObjectOrNull();
                                     createEditDialog(selected).show();
                                 }
 
@@ -123,7 +126,8 @@ public class GridCustomFilterGrid extends TypedTableGrid<GridCustomFilter>
                         new AbstractCreateDialogListener()
                             {
                                 @Override
-                                protected Dialog createDialog(List<TableModelRowWithObject<GridCustomFilter>> selected,
+                                protected Dialog createDialog(
+                                        List<TableModelRowWithObject<GridCustomFilter>> selected,
                                         IBrowserGridActionInvoker invoker)
                                 {
                                     return new DeletionConfirmationDialog(viewContext, selected,
@@ -186,9 +190,9 @@ public class GridCustomFilterGrid extends TypedTableGrid<GridCustomFilter>
                 AbstractColumnSettingsDataModelProvider columnDataModelProvider,
                 AbstractExpression itemToUpdate)
         {
-            super(viewContext, viewContext.getMessage(Dict.EDIT_TITLE, viewContext
-                    .getMessage(Dict.FILTER), itemToUpdate.getName()), postRegistrationCallback,
-                    gridId, columnDataModelProvider);
+            super(viewContext, viewContext.getMessage(Dict.EDIT_TITLE,
+                    viewContext.getMessage(Dict.FILTER), itemToUpdate.getName()),
+                    postRegistrationCallback, gridId, columnDataModelProvider);
             this.viewContext = viewContext;
             this.itemToUpdate = itemToUpdate;
             initializeValues(itemToUpdate);
@@ -221,7 +225,8 @@ public class GridCustomFilterGrid extends TypedTableGrid<GridCustomFilter>
         private final AbstractAsyncCallback<Void> callback;
 
         public DeletionConfirmationDialog(IViewContext<ICommonClientServiceAsync> viewContext,
-                List<TableModelRowWithObject<GridCustomFilter>> data, AbstractAsyncCallback<Void> callback)
+                List<TableModelRowWithObject<GridCustomFilter>> data,
+                AbstractAsyncCallback<Void> callback)
         {
             super(viewContext, data, viewContext.getMessage(Dict.DELETE_CONFIRMATION_TITLE));
             this.callback = callback;
@@ -264,11 +269,11 @@ public class GridCustomFilterGrid extends TypedTableGrid<GridCustomFilter>
     {
         return columnID.toLowerCase();
     }
-    
+
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<GridCustomFilter>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<GridCustomFilter>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<GridCustomFilter>> callback)
     {
         viewContext.getService().listFilters(gridDisplayId, resultSetConfig, callback);
     }
@@ -284,13 +289,15 @@ public class GridCustomFilterGrid extends TypedTableGrid<GridCustomFilter>
     @Override
     protected List<String> getColumnIdsOfFilters()
     {
-        return Arrays.asList(CustomGridColumnGridColumnIDs.NAME, CustomGridColumnGridColumnIDs.IS_PUBLIC);
+        return Arrays.asList(CustomGridColumnGridColumnIDs.NAME,
+                CustomGridColumnGridColumnIDs.IS_PUBLIC);
     }
 
     @Override
     protected ColumnDefsAndConfigs<TableModelRowWithObject<GridCustomFilter>> createColumnsDefinition()
     {
-        ColumnDefsAndConfigs<TableModelRowWithObject<GridCustomFilter>> schema = super.createColumnsDefinition();
+        ColumnDefsAndConfigs<TableModelRowWithObject<GridCustomFilter>> schema =
+                super.createColumnsDefinition();
         schema.setGridCellRendererFor(CustomGridColumnGridColumnIDs.DESCRIPTION,
                 createMultilineStringCellRenderer());
         schema.setGridCellRendererFor(CustomGridColumnGridColumnIDs.EXPRESSION,
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 54a01318146..b3fa226b4b2 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
@@ -165,7 +165,7 @@ public class ManagedPropertyGrid extends TypedTableGrid<ReportRowModel>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<ReportRowModel>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<ReportRowModel>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<ReportRowModel>> callback)
     {
         // In all cases the data should be taken from the cache, and we know the key already.
         // The custom columns should be recomputed.
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialTypeGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialTypeGrid.java
index 804b942e6c3..db9f10073c4 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialTypeGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/material/MaterialTypeGrid.java
@@ -58,7 +58,7 @@ public class MaterialTypeGrid extends AbstractEntityTypeGrid<MaterialType>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<MaterialType>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<MaterialType>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<MaterialType>> callback)
     {
         viewContext.getService().listMaterialTypes(resultSetConfig, callback);
     }
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 5bec4ac0cb4..0691ff4cfa3 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
@@ -24,7 +24,6 @@ import com.extjs.gxt.ui.client.event.ButtonEvent;
 import com.extjs.gxt.ui.client.event.SelectionListener;
 import com.extjs.gxt.ui.client.widget.Dialog;
 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;
@@ -143,7 +142,8 @@ public class ProjectGrid extends TypedTableGrid<Project>
                         new AbstractCreateDialogListener()
                             {
                                 @Override
-                                protected Dialog createDialog(List<TableModelRowWithObject<Project>> rows,
+                                protected Dialog createDialog(
+                                        List<TableModelRowWithObject<Project>> rows,
                                         IBrowserGridActionInvoker invoker)
                                 {
                                     List<Project> projects = new ArrayList<Project>();
@@ -152,7 +152,7 @@ public class ProjectGrid extends TypedTableGrid<Project>
                                         projects.add(row.getObjectOrNull());
                                     }
                                     return new ProjectListDeletionConfirmationDialog(viewContext,
-                                            projects , createRefreshCallback(invoker));
+                                            projects, createRefreshCallback(invoker));
                                 }
                             });
         addButton(deleteButton);
@@ -166,7 +166,7 @@ public class ProjectGrid extends TypedTableGrid<Project>
     {
         return columnID.toLowerCase();
     }
-    
+
     @Override
     protected ColumnDefsAndConfigs<TableModelRowWithObject<Project>> createColumnsDefinition()
     {
@@ -183,13 +183,14 @@ public class ProjectGrid extends TypedTableGrid<Project>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<Project>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<Project>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<Project>> callback)
     {
         viewContext.getService().listProjects(resultSetConfig, callback);
     }
 
     @Override
-    protected void prepareExportEntities(TableExportCriteria<TableModelRowWithObject<Project>> exportCriteria,
+    protected void prepareExportEntities(
+            TableExportCriteria<TableModelRowWithObject<Project>> exportCriteria,
             AbstractAsyncCallback<String> callback)
     {
         viewContext.getService().prepareExportProjects(exportCriteria, callback);
@@ -202,7 +203,8 @@ public class ProjectGrid extends TypedTableGrid<Project>
     }
 
     @Override
-    protected void showEntityViewer(final TableModelRowWithObject<Project> row, boolean editMode, boolean inBackground)
+    protected void showEntityViewer(final TableModelRowWithObject<Project> row, boolean editMode,
+            boolean inBackground)
     {
         showEntityViewer(row.getObjectOrNull(), editMode, viewContext, inBackground);
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java
index 5a8aa8555ab..1135599ee90 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/property_type/PropertyTypeAssignmentGrid.java
@@ -17,6 +17,7 @@
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.property_type;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -42,12 +43,11 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.help.HelpPageIdentifier;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.PropertyTypeAssignmentColDefKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.CheckBoxField;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.PropertyFieldFactory;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.ScriptChooserField;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.AbstractSimpleBrowserGrid;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ColumnDefsAndConfigs;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IBrowserGridActionInvoker;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent;
@@ -56,9 +56,9 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.DialogWithOnlineHelpUtils;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig;
-import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet;
+import ch.systemsx.cisd.openbis.generic.client.web.client.dto.PropertyTypeAssignmentGridColumnIDs;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria;
-import ch.systemsx.cisd.openbis.generic.shared.basic.IColumnDefinition;
+import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind;
@@ -67,20 +67,20 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityTypePropertyType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewETPTAssignment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Script;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ScriptType;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject;
 
 /**
  * Grid with 'entity type' - 'property type' assignments.
  * 
  * @author Izabela Adamczyk
  */
-public class PropertyTypeAssignmentGrid extends
-        AbstractSimpleBrowserGrid<EntityTypePropertyType<?>>
+public class PropertyTypeAssignmentGrid extends TypedTableGrid<EntityTypePropertyType<?>>
 {
     // browser consists of the grid and the paging toolbar
     public static final String BROWSER_ID = GenericConstants.ID_PREFIX
             + "property-type-assignment-browser";
 
-    public static final String GRID_ID = BROWSER_ID + "_grid";
+    public static final String GRID_ID = BROWSER_ID + TypedTableGrid.GRID_POSTFIX;
 
     private static final class UnassignmentPreparationCallback extends
             AbstractAsyncCallback<Integer>
@@ -196,7 +196,7 @@ public class PropertyTypeAssignmentGrid extends
 
     private PropertyTypeAssignmentGrid(final IViewContext<ICommonClientServiceAsync> viewContext)
     {
-        super(viewContext, BROWSER_ID, GRID_ID,
+        super(viewContext, BROWSER_ID, true,
                 DisplayTypeIDGenerator.PROPERTY_TYPE_ASSIGNMENT_BROWSER_GRID);
         extendBottomToolbar();
         postRegistrationCallback = createRefreshGridAction();
@@ -206,14 +206,17 @@ public class PropertyTypeAssignmentGrid extends
     {
         addEntityOperationsLabel();
 
-        addButton(createSelectedItemButton(viewContext.getMessage(Dict.BUTTON_EDIT),
-                new ISelectedEntityInvoker<BaseEntityModel<EntityTypePropertyType<?>>>()
+        addButton(createSelectedItemButton(
+                viewContext.getMessage(Dict.BUTTON_EDIT),
+                new ISelectedEntityInvoker<BaseEntityModel<TableModelRowWithObject<EntityTypePropertyType<?>>>>()
                     {
 
-                        public void invoke(BaseEntityModel<EntityTypePropertyType<?>> selectedItem,
+                        public void invoke(
+                                BaseEntityModel<TableModelRowWithObject<EntityTypePropertyType<?>>> selectedItem,
                                 boolean keyPressed)
                         {
-                            final EntityTypePropertyType<?> etpt = selectedItem.getBaseObject();
+                            final EntityTypePropertyType<?> etpt =
+                                    selectedItem.getBaseObject().getObjectOrNull();
                             if (etpt.isManagedInternally())
                             {
                                 final String errorMsg =
@@ -225,13 +228,16 @@ public class PropertyTypeAssignmentGrid extends
                             }
                         }
                     }));
-        addButton(createSelectedItemButton(viewContext.getMessage(Dict.UNASSIGN_BUTTON_LABEL),
-                new ISelectedEntityInvoker<BaseEntityModel<EntityTypePropertyType<?>>>()
+        addButton(createSelectedItemButton(
+                viewContext.getMessage(Dict.UNASSIGN_BUTTON_LABEL),
+                new ISelectedEntityInvoker<BaseEntityModel<TableModelRowWithObject<EntityTypePropertyType<?>>>>()
                     {
-                        public void invoke(BaseEntityModel<EntityTypePropertyType<?>> selectedItem,
+                        public void invoke(
+                                BaseEntityModel<TableModelRowWithObject<EntityTypePropertyType<?>>> selectedItem,
                                 boolean keyPressed)
                         {
-                            final EntityTypePropertyType<?> etpt = selectedItem.getBaseObject();
+                            final EntityTypePropertyType<?> etpt =
+                                    selectedItem.getBaseObject().getObjectOrNull();
                             unassignPropertyType(etpt);
                         }
 
@@ -477,27 +483,27 @@ public class PropertyTypeAssignmentGrid extends
     }
 
     @Override
-    protected IColumnDefinitionKind<EntityTypePropertyType<?>>[] getStaticColumnsDefinition()
+    protected String translateColumnIdToDictionaryKey(String columnID)
     {
-        return PropertyTypeAssignmentColDefKind.values();
+        return columnID.toLowerCase();
     }
 
     @Override
-    protected ColumnDefsAndConfigs<EntityTypePropertyType<?>> createColumnsDefinition()
+    protected ColumnDefsAndConfigs<TableModelRowWithObject<EntityTypePropertyType<?>>> createColumnsDefinition()
     {
-        ColumnDefsAndConfigs<EntityTypePropertyType<?>> schema = super.createColumnsDefinition();
+        ColumnDefsAndConfigs<TableModelRowWithObject<EntityTypePropertyType<?>>> schema =
+                super.createColumnsDefinition();
         schema.setGridCellRendererFor(PropertyTypeAssignmentColDefKind.DESCRIPTION.id(),
                 createMultilineStringCellRenderer());
         return schema;
     }
 
     @Override
-    protected List<IColumnDefinition<EntityTypePropertyType<?>>> getInitialFilters()
+    protected List<String> getColumnIdsOfFilters()
     {
-        return asColumnFilters(new PropertyTypeAssignmentColDefKind[]
-            { PropertyTypeAssignmentColDefKind.PROPERTY_TYPE_CODE,
-                    PropertyTypeAssignmentColDefKind.ENTITY_TYPE_CODE,
-                    PropertyTypeAssignmentColDefKind.ENTITY_KIND });
+        return Arrays.asList(PropertyTypeAssignmentGridColumnIDs.PROPERTY_TYPE_CODE,
+                PropertyTypeAssignmentGridColumnIDs.ASSIGNED_TO,
+                PropertyTypeAssignmentGridColumnIDs.TYPE_OF);
     }
 
     private List<EntityTypePropertyType<?>> getEntityTypePropertyTypes(EntityType entityType)
@@ -505,11 +511,12 @@ public class PropertyTypeAssignmentGrid extends
         return entityTypePropertyTypes.get(entityType);
     }
 
-    private void extractETPTs(List<EntityTypePropertyType<?>> etpts)
+    private void extractETPTs(List<TableModelRowWithObject<EntityTypePropertyType<?>>> etpts)
     {
         entityTypePropertyTypes = new HashMap<EntityType, List<EntityTypePropertyType<?>>>();
-        for (EntityTypePropertyType<?> etpt : etpts)
+        for (TableModelRowWithObject<EntityTypePropertyType<?>> row : etpts)
         {
+            EntityTypePropertyType<?> etpt = row.getObjectOrNull();
             List<EntityTypePropertyType<?>> list =
                     entityTypePropertyTypes.get(etpt.getEntityType());
             if (list == null)
@@ -522,17 +529,18 @@ public class PropertyTypeAssignmentGrid extends
     }
 
     @Override
-    protected void listEntities(
-            DefaultResultSetConfig<String, EntityTypePropertyType<?>> resultSetConfig,
-            final AbstractAsyncCallback<ResultSet<EntityTypePropertyType<?>>> callback)
+    protected void listTableRows(
+            DefaultResultSetConfig<String, TableModelRowWithObject<EntityTypePropertyType<?>>> resultSetConfig,
+            final AbstractAsyncCallback<TypedTableResultSet<EntityTypePropertyType<?>>> callback)
     {
-        AbstractAsyncCallback<ResultSet<EntityTypePropertyType<?>>> extendedCallback =
-                new AbstractAsyncCallback<ResultSet<EntityTypePropertyType<?>>>(viewContext)
+        AbstractAsyncCallback<TypedTableResultSet<EntityTypePropertyType<?>>> extendedCallback =
+                new AbstractAsyncCallback<TypedTableResultSet<EntityTypePropertyType<?>>>(
+                        viewContext)
                     {
                         @Override
-                        protected void process(ResultSet<EntityTypePropertyType<?>> result)
+                        protected void process(TypedTableResultSet<EntityTypePropertyType<?>> result)
                         {
-                            extractETPTs(result.getList().extractOriginalObjects());
+                            extractETPTs(result.getResultSet().getList().extractOriginalObjects());
                             callback.onSuccess(result);
                         }
 
@@ -548,12 +556,13 @@ public class PropertyTypeAssignmentGrid extends
 
     @Override
     protected void prepareExportEntities(
-            TableExportCriteria<EntityTypePropertyType<?>> exportCriteria,
+            TableExportCriteria<TableModelRowWithObject<EntityTypePropertyType<?>>> exportCriteria,
             AbstractAsyncCallback<String> callback)
     {
         viewContext.getService().prepareExportPropertyTypeAssignments(exportCriteria, callback);
     }
 
+    @Override
     public DatabaseModificationKind[] getRelevantModifications()
     {
         return DatabaseModificationKind.any(ObjectKind.PROPERTY_TYPE_ASSIGNMENT);
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 9955dac5c2b..c436769536c 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
@@ -249,11 +249,11 @@ public class PropertyTypeGrid extends TypedTableGrid<PropertyType>
     @Override
     protected ColumnDefsAndConfigs<TableModelRowWithObject<PropertyType>> createColumnsDefinition()
     {
-        ColumnDefsAndConfigs<TableModelRowWithObject<PropertyType>> schema = super.createColumnsDefinition();
+        ColumnDefsAndConfigs<TableModelRowWithObject<PropertyType>> schema =
+                super.createColumnsDefinition();
         GridCellRenderer<BaseEntityModel<?>> multilineCellRenderer =
                 createMultilineStringCellRenderer();
-        schema.setGridCellRendererFor(PropertyTypeGridColumnIDs.DESCRIPTION,
-                multilineCellRenderer);
+        schema.setGridCellRendererFor(PropertyTypeGridColumnIDs.DESCRIPTION, multilineCellRenderer);
         schema.setGridCellRendererFor(PropertyTypeGridColumnIDs.XML_SCHEMA, multilineCellRenderer);
         schema.setGridCellRendererFor(PropertyTypeGridColumnIDs.XSLT, multilineCellRenderer);
         return schema;
@@ -262,7 +262,7 @@ public class PropertyTypeGrid extends TypedTableGrid<PropertyType>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<PropertyType>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<PropertyType>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<PropertyType>> callback)
     {
         viewContext.getService().listPropertyTypes(resultSetConfig, callback);
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/report/ReportGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/report/ReportGrid.java
index b2f1d6dc8cd..ab77b40d6e7 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/report/ReportGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/report/ReportGrid.java
@@ -18,8 +18,6 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.report
 
 import java.util.Set;
 
-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.GenericConstants;
@@ -84,7 +82,7 @@ public class ReportGrid extends TypedTableGrid<ReportRowModel>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<ReportRowModel>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<ReportRowModel>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<ReportRowModel>> callback)
     {
         // In all cases the data should be taken from the cache, and we know the key already.
         // The custom columns should be recomputed.
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 c10980c64d0..15be6a785c8 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
@@ -26,7 +26,6 @@ import com.extjs.gxt.ui.client.event.SelectionListener;
 import com.extjs.gxt.ui.client.widget.Dialog;
 import com.extjs.gxt.ui.client.widget.button.Button;
 import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
-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;
@@ -450,7 +449,7 @@ public class SampleBrowserGrid extends AbstractEntityGrid<Sample>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<Sample>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<Sample>> callback)
     {
         ListSampleDisplayCriteria c1 = getCriteriaProvider().tryGetCriteria();
         ListSampleDisplayCriteria2 criteria;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleSearchHitGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleSearchHitGrid.java
index 993298ea6f0..944340dfdb9 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleSearchHitGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleSearchHitGrid.java
@@ -22,7 +22,6 @@ import java.util.List;
 import com.extjs.gxt.ui.client.event.ButtonEvent;
 import com.extjs.gxt.ui.client.event.SelectionListener;
 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;
@@ -161,15 +160,10 @@ public class SampleSearchHitGrid extends SampleBrowserGrid implements IDetailedS
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<Sample>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<Sample>> callback)
     {
-        if (callback instanceof AbstractAsyncCallback)
-        {
-            AbstractAsyncCallback<TypedTableResultSet<Sample>> asc =
-                    (AbstractAsyncCallback<TypedTableResultSet<Sample>>) callback;
-            asc.addOnSuccessAction(new ShowResultSetCutInfo<TypedTableResultSet<Sample>>(
-                    viewContext));
-        }
+        callback.addOnSuccessAction(new ShowResultSetCutInfo<TypedTableResultSet<Sample>>(
+                viewContext));
         super.listTableRows(resultSetConfig, callback);
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleTypeGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleTypeGrid.java
index dc62ead6c6c..1aec99f38aa 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleTypeGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/sample/SampleTypeGrid.java
@@ -82,7 +82,7 @@ public class SampleTypeGrid extends AbstractEntityTypeGrid<SampleType>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<SampleType>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<SampleType>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<SampleType>> callback)
     {
         viewContext.getService().listSampleTypes(resultSetConfig, callback);
     }
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 a1fbee05851..e2a561e0eab 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
@@ -171,7 +171,7 @@ public class ScriptGrid extends TypedTableGrid<Script>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<Script>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<Script>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<Script>> callback)
     {
         ListScriptsCriteria criteria = new ListScriptsCriteria();
         criteria.copyPagingConfig(resultSetConfig);
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 e7da4a75ea4..51c9837fff6 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
@@ -103,7 +103,7 @@ public class VocabularyGrid extends TypedTableGrid<Vocabulary>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<Vocabulary>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<Vocabulary>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<Vocabulary>> callback)
     {
         viewContext.getService().listVocabularies(false, false, resultSetConfig, callback);
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyTermGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyTermGrid.java
index b4b4ec6527c..9bbb952b1de 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyTermGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/vocabulary/VocabularyTermGrid.java
@@ -343,7 +343,7 @@ public class VocabularyTermGrid extends TypedTableGrid<VocabularyTermWithStats>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<VocabularyTermWithStats>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<VocabularyTermWithStats>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<VocabularyTermWithStats>> callback)
     {
         viewContext.getService().listVocabularyTerms(vocabulary, resultSetConfig, callback);
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java
index 8120304ab29..562edb14791 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java
@@ -74,6 +74,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.CacheManager
 import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.CustomGridColumnProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.DataSetTypeProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.DeletionsProvider;
+import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.EntityTypePropertyTypeProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.EntityTypeProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.ExperimentProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.FileFormatTypesProvider;
@@ -116,7 +117,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Code;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetRelatedEntities;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetRelationshipRole;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetTypePropertyType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription;
@@ -129,7 +129,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityTypePropertyType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentTypePropertyType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Grantee;
@@ -147,7 +146,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MatchingEntity;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialType;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialTypePropertyType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAttachment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAuthorizationGroup;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewColumnOrFilter;
@@ -163,7 +161,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleAssignment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleTypePropertyType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Script;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel;
@@ -392,7 +389,7 @@ public final class CommonClientService extends AbstractClientService implements
     }
 
     public String prepareExportPropertyTypeAssignments(
-            TableExportCriteria<EntityTypePropertyType<?>> criteria)
+            TableExportCriteria<TableModelRowWithObject<EntityTypePropertyType<?>>> criteria)
     {
         return prepareExportEntities(criteria);
     }
@@ -558,52 +555,10 @@ public final class CommonClientService extends AbstractClientService implements
         return listEntities(provider, resultSetConfig);
     }
 
-    public ResultSet<EntityTypePropertyType<?>> listPropertyTypeAssignments(
-            DefaultResultSetConfig<String, EntityTypePropertyType<?>> criteria)
+    public TypedTableResultSet<EntityTypePropertyType<?>> listPropertyTypeAssignments(
+            DefaultResultSetConfig<String, TableModelRowWithObject<EntityTypePropertyType<?>>> criteria)
     {
-        return listEntities(criteria,
-                new AbstractOriginalDataProviderWithoutHeaders<EntityTypePropertyType<?>>()
-                    {
-                        @Override
-                        public List<EntityTypePropertyType<?>> getFullOriginalData()
-                                throws UserFailureException
-                        {
-                            return extractAssignments(listPropertyTypes(true));
-                        }
-                    });
-    }
-
-    private static List<EntityTypePropertyType<?>> extractAssignments(
-            List<PropertyType> listPropertyTypes)
-    {
-        List<EntityTypePropertyType<?>> result = new ArrayList<EntityTypePropertyType<?>>();
-        for (PropertyType propertyType : listPropertyTypes)
-        {
-            extractAssignments(result, propertyType);
-        }
-        Collections.sort(result);
-        return result;
-    }
-
-    private static void extractAssignments(List<EntityTypePropertyType<?>> result,
-            final PropertyType propertyType)
-    {
-        for (ExperimentTypePropertyType etpt : propertyType.getExperimentTypePropertyTypes())
-        {
-            result.add(etpt);
-        }
-        for (SampleTypePropertyType etpt : propertyType.getSampleTypePropertyTypes())
-        {
-            result.add(etpt);
-        }
-        for (MaterialTypePropertyType etpt : propertyType.getMaterialTypePropertyTypes())
-        {
-            result.add(etpt);
-        }
-        for (DataSetTypePropertyType etpt : propertyType.getDataSetTypePropertyTypes())
-        {
-            result.add(etpt);
-        }
+        return listEntities(new EntityTypePropertyTypeProvider(commonServer, getSessionToken()), criteria);
     }
 
     public TypedTableResultSet<Space> listGroups(
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/AbstractGenericSampleRegisterEditForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/AbstractGenericSampleRegisterEditForm.java
index 78daa354a59..ee6872795fe 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/AbstractGenericSampleRegisterEditForm.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/AbstractGenericSampleRegisterEditForm.java
@@ -39,6 +39,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareField;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.SampleTypeDisplayID;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.SpaceModel;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractRegistrationForm;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.SpaceSelectionWidget;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.ExperimentChooserField;
@@ -55,6 +56,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ApplicationInfo;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExperimentIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleTypePropertyType;
@@ -321,6 +323,13 @@ abstract public class AbstractGenericSampleRegisterEditForm extends
                                 .withSuffix(getSampleTypeCode()));
         experimentField = createExperimentField();
         experimentField.getChooserField().setId(getId() + ID_SUFFIX_EXPERIMENT);
+        experimentField.getChooserField().addChosenEntityListener(new IChosenEntityListener<TableModelRowWithObject<Experiment>>()
+            {
+                public void entityChosen(TableModelRowWithObject<Experiment> entity)
+                {
+                    groupSelectionWidget.setValue(new SpaceModel(entity.getObjectOrNull().getProject().getSpace()));
+                }
+            });
         attachmentsManager = new AttachmentsFileFieldManager(attachmentsSessionKey, viewContext);
         formPanel.addListener(Events.Submit, new FormPanelListener(infoBox)
             {
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 72586b9e144..4c675552d62 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
@@ -24,7 +24,6 @@ import com.extjs.gxt.ui.client.event.ButtonEvent;
 import com.extjs.gxt.ui.client.event.SelectionListener;
 import com.extjs.gxt.ui.client.widget.Dialog;
 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.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
@@ -175,17 +174,17 @@ public class QueryBrowserGrid extends TypedTableGrid<QueryExpression>
     {
         return columnID.toLowerCase();
     }
-    
+
     @Override
     protected ColumnDefsAndConfigs<TableModelRowWithObject<QueryExpression>> createColumnsDefinition()
     {
         ColumnDefsAndConfigs<TableModelRowWithObject<QueryExpression>> definitions =
-                    super.createColumnsDefinition();
+                super.createColumnsDefinition();
         definitions.setGridCellRendererFor(QueryBrowserGridColumnIDs.REGISTRATOR,
-                    PersonRenderer.REGISTRATOR_RENDERER);
+                PersonRenderer.REGISTRATOR_RENDERER);
         return definitions;
     }
-    
+
     @Override
     protected List<String> getColumnIdsOfFilters()
     {
@@ -195,7 +194,7 @@ public class QueryBrowserGrid extends TypedTableGrid<QueryExpression>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<QueryExpression>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<QueryExpression>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<QueryExpression>> callback)
     {
         viewContext.getService().listQueries(resultSetConfig, callback);
     }
diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/DataSetProteinGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/DataSetProteinGrid.java
index ff35302d9cc..22297bea5af 100644
--- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/DataSetProteinGrid.java
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/DataSetProteinGrid.java
@@ -19,8 +19,6 @@ package ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.applicatio
 import java.util.Arrays;
 import java.util.List;
 
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
@@ -97,7 +95,7 @@ class DataSetProteinGrid extends TypedTableGrid<DataSetProtein>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<DataSetProtein>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<DataSetProtein>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<DataSetProtein>> callback)
     {
         criteria.copyPagingConfig(resultSetConfig);
         specificViewContext.getService().listProteinsByExperimentAndReference(criteria, callback);
diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinRelatedSampleGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinRelatedSampleGrid.java
index 7418b4207d6..f90622e67a2 100644
--- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinRelatedSampleGrid.java
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinRelatedSampleGrid.java
@@ -20,7 +20,6 @@ import java.util.Arrays;
 import java.util.List;
 
 import com.extjs.gxt.ui.client.widget.LayoutContainer;
-import com.google.gwt.user.client.rpc.AsyncCallback;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
@@ -109,7 +108,7 @@ public class ProteinRelatedSampleGrid extends TypedTableGrid<ProteinRelatedSampl
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<ProteinRelatedSample>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<ProteinRelatedSample>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<ProteinRelatedSample>> callback)
     {
         criteria.copyPagingConfig(resultSetConfig);
         phosphoViewContext.getService().listProteinRelatedSamplesByProtein(criteria, callback);
diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinSequenceGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinSequenceGrid.java
index 0cff5f49206..d6640f02ce9 100644
--- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinSequenceGrid.java
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinSequenceGrid.java
@@ -19,8 +19,6 @@ package ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.applicatio
 import java.util.Arrays;
 import java.util.List;
 
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
@@ -83,7 +81,7 @@ public class ProteinSequenceGrid extends TypedTableGrid<ProteinSequence>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<ProteinSequence>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<ProteinSequence>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<ProteinSequence>> callback)
     {
         criteria.copyPagingConfig(resultSetConfig);
         specificViewContext.getService().listSequencesByProteinReference(criteria, callback);
diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinSummaryGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinSummaryGrid.java
index c609d80389c..4751682100f 100644
--- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinSummaryGrid.java
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/ProteinSummaryGrid.java
@@ -19,8 +19,6 @@ package ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.applicatio
 import java.util.Arrays;
 import java.util.List;
 
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
@@ -91,7 +89,7 @@ class ProteinSummaryGrid extends TypedTableGrid<ProteinSummary>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<ProteinSummary>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<ProteinSummary>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<ProteinSummary>> callback)
     {
         if (criteria != null)
         {
diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/RawDataSampleGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/RawDataSampleGrid.java
index c39877914e9..87afabfc0e4 100644
--- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/RawDataSampleGrid.java
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/RawDataSampleGrid.java
@@ -21,8 +21,6 @@ import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModifica
 
 import java.util.List;
 
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
@@ -128,7 +126,7 @@ class RawDataSampleGrid extends TypedTableGrid<Sample>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<Sample>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<Sample>> callback)
     {
         specificViewContext.getService().listRawDataSamples(resultSetConfig, callback);
     }
diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/wizard/BiologicalSampleGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/wizard/BiologicalSampleGrid.java
index 6a24ec5ef6a..5a011a95dda 100644
--- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/wizard/BiologicalSampleGrid.java
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/wizard/BiologicalSampleGrid.java
@@ -19,8 +19,6 @@ package ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.applicatio
 import java.util.Arrays;
 import java.util.List;
 
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
@@ -62,7 +60,7 @@ public class BiologicalSampleGrid extends TypedTableGrid<Sample>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<Sample>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<Sample>> callback)
     {
         specificViewContext.getService().listBiologicalSamples(resultSetConfig, callback);
     }
diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/wizard/ParentlessMsInjectionSampleGrid.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/wizard/ParentlessMsInjectionSampleGrid.java
index 14f66e50539..5bd88cdfdb5 100644
--- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/wizard/ParentlessMsInjectionSampleGrid.java
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/client/web/client/application/wizard/ParentlessMsInjectionSampleGrid.java
@@ -19,8 +19,6 @@ package ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.applicatio
 import java.util.Arrays;
 import java.util.List;
 
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
@@ -64,7 +62,7 @@ public class ParentlessMsInjectionSampleGrid extends TypedTableGrid<Sample>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<Sample>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<Sample>> callback)
     {
         specificViewContext.getService()
                 .listParentlessMsInjectionSamples(resultSetConfig, callback);
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentAnalysisSummaryGrid.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentAnalysisSummaryGrid.java
index 13e851d2467..e033a660cad 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentAnalysisSummaryGrid.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentAnalysisSummaryGrid.java
@@ -18,8 +18,6 @@ package ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.
 
 import static ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.grids.FeatureVectorSummaryGridColumnIDs.RANK_PREFIX;
 
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
@@ -152,7 +150,7 @@ public class ExperimentAnalysisSummaryGrid extends TypedTableGrid<MaterialFeatur
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<MaterialFeatureVectorSummary>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<MaterialFeatureVectorSummary>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<MaterialFeatureVectorSummary>> callback)
     {
         screeningViewContext.getService().listExperimentFeatureVectorSummary(resultSetConfig,
                 new TechId(experiment), analysisProcedureCriteria, callback);
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialDisambiguationGrid.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialDisambiguationGrid.java
index 2b977dbe71d..d253be7f49b 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialDisambiguationGrid.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialDisambiguationGrid.java
@@ -23,7 +23,6 @@ import java.util.List;
 import com.extjs.gxt.ui.client.widget.Component;
 import com.extjs.gxt.ui.client.widget.Text;
 import com.google.gwt.i18n.client.DateTimeFormat;
-import com.google.gwt.user.client.rpc.AsyncCallback;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
@@ -258,7 +257,7 @@ public class MaterialDisambiguationGrid extends TypedTableGrid<Material>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<Material>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<Material>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<Material>> callback)
     {
         screeningViewContext.getService().listMaterials(resultSetConfig, searchCriteria, callback);
 
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialFeaturesFromAllExperimentsGrid.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialFeaturesFromAllExperimentsGrid.java
index 4802cfa7a47..a80a4b9a662 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialFeaturesFromAllExperimentsGrid.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialFeaturesFromAllExperimentsGrid.java
@@ -16,8 +16,6 @@
 
 package ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers;
 
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
@@ -195,7 +193,7 @@ public class MaterialFeaturesFromAllExperimentsGrid extends
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<MaterialSimpleFeatureVectorSummary>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<MaterialSimpleFeatureVectorSummary>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<MaterialSimpleFeatureVectorSummary>> callback)
     {
         MaterialFeaturesManyExpCriteria criteria =
                 new MaterialFeaturesManyExpCriteria(new TechId(material),
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialReplicaFeatureSummaryGrid.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialReplicaFeatureSummaryGrid.java
index bf257c97d4e..70e8c260396 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialReplicaFeatureSummaryGrid.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialReplicaFeatureSummaryGrid.java
@@ -16,8 +16,6 @@
 
 package ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers;
 
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
@@ -118,7 +116,7 @@ public class MaterialReplicaFeatureSummaryGrid extends
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<MaterialReplicaFeatureSummary>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<MaterialReplicaFeatureSummary>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<MaterialReplicaFeatureSummary>> callback)
     {
         MaterialFeaturesOneExpCriteria criteria =
                 new MaterialFeaturesOneExpCriteria(materialId, analysisProcedureCriteria,
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMetadataBrowser.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMetadataBrowser.java
index 3c55b109364..f33297a9052 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMetadataBrowser.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMetadataBrowser.java
@@ -16,8 +16,6 @@
 
 package ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers;
 
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
@@ -166,7 +164,7 @@ public class PlateMetadataBrowser extends TypedTableGrid<WellMetadata>
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<WellMetadata>> resultSetConfig,
-            AsyncCallback<TypedTableResultSet<WellMetadata>> callback)
+            AbstractAsyncCallback<TypedTableResultSet<WellMetadata>> callback)
     {
         screeningViewContext.getService().listPlateMetadata(resultSetConfig, sampleId, callback);
     }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellSearchGrid.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellSearchGrid.java
index 3e0db00f80b..e2fa872fec8 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellSearchGrid.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellSearchGrid.java
@@ -29,7 +29,6 @@ import com.extjs.gxt.ui.client.widget.grid.Grid;
 import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
 import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
 import com.google.gwt.i18n.client.DateTimeFormat;
-import com.google.gwt.user.client.rpc.AsyncCallback;
 import com.google.gwt.user.client.ui.Widget;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
@@ -644,7 +643,7 @@ public class WellSearchGrid extends TypedTableGrid<WellContent> implements
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<WellContent>> resultSetConfig,
-            final AsyncCallback<TypedTableResultSet<WellContent>> callback)
+            final AbstractAsyncCallback<TypedTableResultSet<WellContent>> callback)
     {
         ExperimentSearchCriteria experimentCriteriaOrNull =
                 experimentCriteriaHolder.tryGetCriteria();
-- 
GitLab