diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AppView.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AppView.java
index efd59d415f53c7a5f3439b15f80e9e4dca3bfbd6..0838d51022307979db8b26f65b82f125327b1251 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AppView.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/framework/AppView.java
@@ -86,7 +86,7 @@ final class AppView extends View
         } else if (viewMode == ViewMode.NORMAL)
         {
             north = new TopMenu(viewContext, componentProvider);
-        } else if (viewMode == ViewMode.SIMPLE_EMBEDDED)
+        } else if (viewMode == ViewMode.EMBEDDED)
         {
             north = null;
         } else
@@ -115,7 +115,7 @@ final class AppView extends View
 
     private final void createSouth()
     {
-        if (getViewMode() != ViewMode.SIMPLE_EMBEDDED)
+        if (getViewMode() != ViewMode.EMBEDDED)
         {
             final Footer footer = new Footer(viewContext);
             final BorderLayoutData data = new BorderLayoutData(LayoutRegion.SOUTH, 20);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
index c44505059ee5a258e7b29b76f8efc1dbf41edf15..2db04b7e09e25d86b5a9bc90bb83bde5a7133e34 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
@@ -89,6 +89,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.Compone
 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.columns.framework.IColumnDefinitionUI;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.specific.GridCustomColumnDefinition;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.BrowserGridPagingToolBar.PagingToolBarButtonKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.expressions.filter.FilterToolbar;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.IDataRefreshCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction;
@@ -106,6 +107,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.GridRowModel;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IColumnDefinition;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId;
 import ch.systemsx.cisd.openbis.generic.shared.basic.URLMethodWithParameters;
+import ch.systemsx.cisd.openbis.generic.shared.basic.ViewMode;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ColumnSetting;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode;
@@ -285,18 +287,18 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod
                     }
                 }
             });
+        if (viewContext.getModel().getViewMode() == ViewMode.EMBEDDED)
+        {
+            removeButtons(PagingToolBarButtonKind.CONFIG, PagingToolBarButtonKind.FILTERS,
+                    PagingToolBarButtonKind.REFRESH);
+        }
     }
 
-    public void removeConfigAndExportButtons()
-    {
-        pagingToolbar.removeConfigAndExportButtons();
-    }
-    
-    public void removeFiltersButtons()
+    public void removeButtons(PagingToolBarButtonKind... buttonKinds)
     {
-        pagingToolbar.removeFiltersButtons();
+        pagingToolbar.removeButtons(buttonKinds);
     }
-    
+
     private ICellListener<T> createShowEntityViewerLinkClickListener()
     {
         return new ICellListener<T>()
@@ -735,7 +737,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod
             throw new IllegalStateException("unknown sort dir: " + sortDir);
         }
     }
-    
+
     /** @return number of rows in the grid */
     public final int getRowNumber()
     {
@@ -808,7 +810,9 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod
                         loadConfig.setSortDir(translate(sortInfo.getSortDir()));
                     }
                 }
-                resultSetConfig = createPagingConfig(loadConfig, filterToolbar.getFilters(), resultSetConfig.tryGetGridDisplayId());
+                resultSetConfig =
+                        createPagingConfig(loadConfig, filterToolbar.getFilters(),
+                                resultSetConfig.tryGetGridDisplayId());
                 resultSetConfig.setCacheConfig(ResultSetFetchConfig
                         .createFetchFromCacheAndRecompute(key));
                 // this.reuse(); // FIXME PTR has to be done?
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java
index da645626fad3a5374cf4f878dbf8e96eb74727d1..b90242b8d902263bc8786b6289d3bce695caaaa0 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/BrowserGridPagingToolBar.java
@@ -18,7 +18,9 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import com.extjs.gxt.ui.client.data.LoadEvent;
 import com.extjs.gxt.ui.client.event.ButtonEvent;
@@ -69,6 +71,11 @@ public final class BrowserGridPagingToolBar extends PagingToolBar
 
     private int nextTableButtonIndex;
 
+    public static enum PagingToolBarButtonKind
+    {
+        REFRESH, CONFIG, EXPORT, FILTERS
+    }
+
     void setPagingComponentsHidden(boolean hide)
     {
         // WORKAROUND GXT2.1: to access all the elements of the paging toolbar
@@ -138,18 +145,33 @@ public final class BrowserGridPagingToolBar extends PagingToolBar
         viewContext.logStop(logID);
         setPagingComponentsHidden(true);
     }
-    
-    public void removeConfigAndExportButtons()
-    {
-        configButton.removeFromParent();
-        exportButton.removeFromParent();
-    }
 
-    public void removeFiltersButtons()
+    public void removeButtons(PagingToolBarButtonKind... buttonKinds)
     {
-        showFiltersButton.removeFromParent();
+        Set<PagingToolBarButtonKind> buttonSet =
+                new HashSet<PagingToolBarButtonKind>(Arrays.asList(buttonKinds));
+        for (PagingToolBarButtonKind buttonKind : buttonSet)
+        {
+            switch (buttonKind)
+            {
+                case CONFIG:
+                    configButton.removeFromParent();
+                    break;
+                case REFRESH:
+                    refreshButton.removeFromParent();
+                    break;
+                case FILTERS:
+                    showFiltersButton.removeFromParent();
+                    break;
+                case EXPORT:
+                    exportButton.removeFromParent();
+                    break;
+                default:
+                    throw new IllegalStateException("Unhandled button " + buttonKind);
+            }
+        }
     }
-    
+
     @Override
     protected void onLoad(LoadEvent event)
     {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/ViewMode.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/ViewMode.java
index 0ac26951d04bb7b0a4a1eb9ef8560d9a2d83a47b..9e4b1f464e30a58c94848df0405fbaf94997d162 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/ViewMode.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/ViewMode.java
@@ -24,11 +24,13 @@ import com.google.gwt.user.client.rpc.IsSerializable;
 public enum ViewMode implements IsSerializable
 {
     SIMPLE,
+
     /**
-     * Embedded mode is a simple view mode which has less widgets (e.g. top toolbar and footer are
-     * invisible) to allow embedding the application on other web sites.
+     * Embedded mode inherits most of the SIMPLE mode behaviors. But it has less widgets (e.g. top
+     * toolbar and footer are invisible, grids have only "Export" button) to allow embedding the
+     * application on other web sites.
      */
-    SIMPLE_EMBEDDED,
+    EMBEDDED,
 
     NORMAL;
 }
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 05e13d3acab0732641d378afc71445a183450e98..6a24ec5ef6a99f210a32ffb9c6dbdaf41c2ee508 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
@@ -25,6 +25,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAs
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.BrowserGridPagingToolBar.PagingToolBarButtonKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet;
@@ -35,14 +36,11 @@ import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.application
 import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.dto.BiologicalSampleGridColumnIDs;
 
 /**
- * 
- *
  * @author Franz-Josef Elmer
  */
 public class BiologicalSampleGrid extends TypedTableGrid<Sample>
 {
-    private static final String PREFIX = GenericConstants.ID_PREFIX
-            + "biological_sample";
+    private static final String PREFIX = GenericConstants.ID_PREFIX + "biological_sample";
 
     public static final String BROWSER_ID = PREFIX + "_main";
 
@@ -55,8 +53,8 @@ public class BiologicalSampleGrid extends TypedTableGrid<Sample>
         super(viewContext.getCommonViewContext(), BROWSER_ID, true,
                 PhosphoNetXDisplayTypeIDGenerator.BIOLOGICAL_SAMPLE_BROWSER_GRID);
         specificViewContext = viewContext;
-        removeConfigAndExportButtons();
-        removeFiltersButtons();
+        removeButtons(PagingToolBarButtonKind.CONFIG, PagingToolBarButtonKind.EXPORT,
+                PagingToolBarButtonKind.FILTERS);
         showFiltersBar();
         setBorders(true);
     }
@@ -82,7 +80,7 @@ public class BiologicalSampleGrid extends TypedTableGrid<Sample>
             AbstractAsyncCallback<String> callback)
     {
     }
-    
+
     public void dispose()
     {
         asDisposableWithoutToolbar().dispose();
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 b66527acd8548a0642a3f2a5c8ac0cca214c7b7d..14f66e50539cc3cc99dce85faf06ab609aba0a08 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
@@ -25,6 +25,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAs
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.TypedTableGrid;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.BrowserGridPagingToolBar.PagingToolBarButtonKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TypedTableResultSet;
@@ -35,8 +36,6 @@ import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.application
 import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.dto.ParentlessMsInjectionSampleGridColumnIDs;
 
 /**
- * 
- *
  * @author Franz-Josef Elmer
  */
 public class ParentlessMsInjectionSampleGrid extends TypedTableGrid<Sample>
@@ -55,19 +54,20 @@ public class ParentlessMsInjectionSampleGrid extends TypedTableGrid<Sample>
         super(viewContext.getCommonViewContext(), BROWSER_ID, true,
                 PhosphoNetXDisplayTypeIDGenerator.PARENT_LESS_MS_INJECTION_SAMPLE_BROWSER_GRID);
         specificViewContext = viewContext;
-        removeConfigAndExportButtons();
-        removeFiltersButtons();
+        removeButtons(PagingToolBarButtonKind.CONFIG, PagingToolBarButtonKind.EXPORT,
+                PagingToolBarButtonKind.FILTERS);
         allowMultipleSelection();
         showFiltersBar();
         setBorders(true);
     }
-    
+
     @Override
     protected void listTableRows(
             DefaultResultSetConfig<String, TableModelRowWithObject<Sample>> resultSetConfig,
             AsyncCallback<TypedTableResultSet<Sample>> callback)
     {
-        specificViewContext.getService().listParentlessMsInjectionSamples(resultSetConfig, callback);
+        specificViewContext.getService()
+                .listParentlessMsInjectionSamples(resultSetConfig, callback);
     }
 
     @Override
@@ -83,7 +83,7 @@ public class ParentlessMsInjectionSampleGrid extends TypedTableGrid<Sample>
             AbstractAsyncCallback<String> callback)
     {
     }
-    
+
     public void dispose()
     {
         asDisposableWithoutToolbar().dispose();
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java
index f3bd4e3f4a6fd6091b3e9be3b85994a8dc9b0b9b..755242ec77e45a7370d2191f6c64cfcfb87801d2 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ClientPluginFactory.java
@@ -40,12 +40,14 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.ICl
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.plugin.IModule;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractViewer;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.LinkExtractor;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException;
 import ch.systemsx.cisd.openbis.generic.shared.basic.ICodeHolder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId;
 import ch.systemsx.cisd.openbis.generic.shared.basic.IIdAndCodeHolder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
+import ch.systemsx.cisd.openbis.generic.shared.basic.ViewMode;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind;
@@ -54,10 +56,11 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
 import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.sample.GenericSampleViewer;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningClientServiceAsync;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.ImageSampleViewer;
+import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.MaterialDetailsComponent;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.MicroscopyDatasetViewer;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.PlateDatasetViewer;
-import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.PlateLocationsMaterialViewer;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.PlateSampleViewer;
+import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.ImagingMaterialViewer;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.sample.LibrarySampleBatchRegistrationForm;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConstants;
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteria;
@@ -167,7 +170,7 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree
         public final AbstractTabItemFactory createEntityViewer(
                 final IEntityInformationHolderWithPermId entity)
         {
-            return createPlateLocationsMaterialViewerTabFactory(entity, null, getViewContext());
+            return createImagingMaterialViewerTabFactory(entity, null, getViewContext());
         }
     }
 
@@ -175,18 +178,18 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree
      * opens material viewer showing wells in which the material is contained, with a selected
      * experiment
      */
-    public static final void openPlateLocationsMaterialViewer(
+    public static final void openImagingMaterialViewer(
             final IEntityInformationHolderWithPermId material,
             final ExperimentSearchCriteria experimentCriteriaOrNull,
             final IViewContext<IScreeningClientServiceAsync> viewContext)
     {
         AbstractTabItemFactory tab =
-                createPlateLocationsMaterialViewerTabFactory(material, experimentCriteriaOrNull,
+                createImagingMaterialViewerTabFactory(material, experimentCriteriaOrNull,
                         viewContext);
         DispatcherHelper.dispatchNaviEvent(tab);
     }
 
-    private static final AbstractTabItemFactory createPlateLocationsMaterialViewerTabFactory(
+    private static final AbstractTabItemFactory createImagingMaterialViewerTabFactory(
             final IEntityInformationHolderWithPermId material,
             final ExperimentSearchCriteria experimentCriteriaOrNull,
             final IViewContext<IScreeningClientServiceAsync> viewContext)
@@ -196,22 +199,32 @@ public final class ClientPluginFactory extends AbstractClientPluginFactory<Scree
                 @Override
                 public ITabItem create()
                 {
-                    final DatabaseModificationAwareComponent viewer =
-                            PlateLocationsMaterialViewer.create(viewContext,
-                                    TechId.create(material), experimentCriteriaOrNull);
-                    return createViewerTab(viewer, getTabTitle(), viewContext);
+                    TechId materialTechId = TechId.create(material);
+                    if (viewContext.getModel().getViewMode() == ViewMode.EMBEDDED)
+                    {
+                        IDisposableComponent viewer =
+                                MaterialDetailsComponent.create(viewContext, materialTechId,
+                                        experimentCriteriaOrNull);
+                        return DefaultTabItem.create(getTabTitle(), viewer, viewContext);
+                    } else
+                    {
+                        final DatabaseModificationAwareComponent viewer =
+                                ImagingMaterialViewer.create(viewContext, materialTechId,
+                                        experimentCriteriaOrNull);
+                        return createViewerTab(viewer, getTabTitle(), viewContext);
+                    }
                 }
 
                 @Override
                 public String getId()
                 {
-                    return PlateLocationsMaterialViewer.createId(TechId.create(material));
+                    return ImagingMaterialViewer.createId(TechId.create(material));
                 }
 
                 @Override
                 public HelpPageIdentifier getHelpPageIdentifier()
                 {
-                    return PlateLocationsMaterialViewer.getHelpPageIdentifier();
+                    return ImagingMaterialViewer.getHelpPageIdentifier();
                 }
 
                 @Override
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ScreeningViewContext.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ScreeningViewContext.java
index bc7a7c9810714dfb409b2399363baa9d9f172573..2e6a6f9fcb835d7ce6b1bd5fb131988f9a362a95 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ScreeningViewContext.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ScreeningViewContext.java
@@ -8,8 +8,8 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.locator.ViewLocatorResolverRegistry;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningClientService;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningClientServiceAsync;
-import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.locator.PlateLocationsMaterialLocatorResolver;
-import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.locator.PlateMaterialReviewerLocatorResolver;
+import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.locator.ImagingMaterialLocatorResolver;
+import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.locator.WellSearchLocatorResolver;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.locator.PlateMetadataBrowserLocatorResolver;
 import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.locator.GlobalWellSearchLocatorResolver;
 
@@ -44,9 +44,9 @@ public final class ScreeningViewContext extends
     {
         super.initializeLocatorHandlerRegistry(handlerRegistry);
 
-        handlerRegistry.registerHandler(new PlateLocationsMaterialLocatorResolver(this));
+        handlerRegistry.registerHandler(new ImagingMaterialLocatorResolver(this));
         handlerRegistry.registerHandler(new PlateMetadataBrowserLocatorResolver(this));
-        handlerRegistry.registerHandler(new PlateMaterialReviewerLocatorResolver(this));
+        handlerRegistry.registerHandler(new WellSearchLocatorResolver(this));
         handlerRegistry.registerHandler(new GlobalWellSearchLocatorResolver(this));
     }
 
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentWellMaterialBrowserGrid.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentWellMaterialBrowserGrid.java
index f14bf05535d7be7eaf67c084bb9d040f63ba5f73..f8a4a724e39dce73dd64fa8182a2a0abe5f61e40 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentWellMaterialBrowserGrid.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ExperimentWellMaterialBrowserGrid.java
@@ -109,7 +109,7 @@ public class ExperimentWellMaterialBrowserGrid extends MaterialBrowserGrid
             ExperimentSearchCriteria experimentCriteria =
                     ExperimentSearchCriteria.createExperiment(experiment.getId(),
                             experiment.getPermId(), experiment.getIdentifier());
-            ClientPluginFactory.openPlateLocationsMaterialViewer(material, experimentCriteria,
+            ClientPluginFactory.openImagingMaterialViewer(material, experimentCriteria,
                     screeningViewContext);
         } else
         {
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateLocationsMaterialViewer.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImagingMaterialViewer.java
similarity index 88%
rename from screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateLocationsMaterialViewer.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImagingMaterialViewer.java
index 732cfe47daf8d2f244203dbafc7d75f6001260b1..a8bdb63df19ea092efd2911dc170098ef2b12035 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateLocationsMaterialViewer.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ImagingMaterialViewer.java
@@ -37,7 +37,7 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCrit
  * 
  * @author Tomasz Pylak
  */
-public class PlateLocationsMaterialViewer extends GenericMaterialViewer
+public class ImagingMaterialViewer extends GenericMaterialViewer
 {
 
     /**
@@ -48,8 +48,8 @@ public class PlateLocationsMaterialViewer extends GenericMaterialViewer
             IViewContext<IScreeningClientServiceAsync> viewContext, TechId materialId,
             ExperimentSearchCriteria experimentCriteriaOrNull)
     {
-        PlateLocationsMaterialViewer viewer =
-                new PlateLocationsMaterialViewer(viewContext, materialId, experimentCriteriaOrNull);
+        ImagingMaterialViewer viewer =
+                new ImagingMaterialViewer(viewContext, materialId, experimentCriteriaOrNull);
         viewer.reloadAllData();
         return new DatabaseModificationAwareComponent(viewer, viewer);
     }
@@ -58,9 +58,8 @@ public class PlateLocationsMaterialViewer extends GenericMaterialViewer
 
     private final ExperimentSearchCriteria experimentCriteriaOrNull;
 
-    private PlateLocationsMaterialViewer(
-            final IViewContext<IScreeningClientServiceAsync> viewContext,
-            final TechId materialTechId, ExperimentSearchCriteria experimentCriteriaOrNull)
+    private ImagingMaterialViewer(IViewContext<IScreeningClientServiceAsync> viewContext,
+            TechId materialTechId, ExperimentSearchCriteria experimentCriteriaOrNull)
     {
         super(viewContext, materialTechId);
         this.screeningViewContext = viewContext;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialDetailsComponent.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialDetailsComponent.java
new file mode 100644
index 0000000000000000000000000000000000000000..f7da90df827b23ff5cb2ca26e267e1f45608d133
--- /dev/null
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialDetailsComponent.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2011 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers;
+
+import java.util.Set;
+
+import com.extjs.gxt.ui.client.widget.Component;
+import com.extjs.gxt.ui.client.widget.ContentPanel;
+import com.extjs.gxt.ui.client.widget.layout.RowLayout;
+
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent;
+import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind;
+import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningClientServiceAsync;
+import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteria;
+
+/**
+ * Shows details about one material (across all plates in one or all experiments). <br>
+ * Can be used as a tab in {@link ImagingMaterialViewer} or independently.
+ * 
+ * @author Tomasz Pylak
+ */
+// TODO 2011-03-23, Tomasz Pylak: this class will replace the Plate Locations tab on the material
+// detail view in future.
+// For now it is a prototype accessible only in embedded mode.
+public class MaterialDetailsComponent extends ContentPanel
+{
+    private final IViewContext<IScreeningClientServiceAsync> screeningViewContext;
+
+    private final ExperimentSearchCriteria experimentCriteriaOrNull;
+
+    private final TechId materialId;
+
+    public MaterialDetailsComponent(IViewContext<IScreeningClientServiceAsync> viewContext,
+            TechId materialId, ExperimentSearchCriteria experimentCriteriaOrNull)
+    {
+        this.screeningViewContext = viewContext;
+        this.materialId = materialId;
+        this.experimentCriteriaOrNull = experimentCriteriaOrNull;
+    }
+
+    private IDisposableComponent createWellSearchGrid()
+    {
+        return WellSearchGrid.create(screeningViewContext, experimentCriteriaOrNull, materialId);
+    }
+
+    public static IDisposableComponent create(
+            IViewContext<IScreeningClientServiceAsync> viewContext, TechId materialId,
+            ExperimentSearchCriteria experimentCriteriaOrNull)
+    {
+        MaterialDetailsComponent materialDetailsComponent =
+                new MaterialDetailsComponent(viewContext, materialId, experimentCriteriaOrNull);
+        ContentPanel view = new ContentPanel();
+        view.setLayout(new RowLayout());
+        view.setHeading("Gene ID: " + materialId);
+        IDisposableComponent wellSearchGrid = materialDetailsComponent.createWellSearchGrid();
+        view.add(wellSearchGrid.getComponent());
+        return new DisposableComponentWrapper(view, wellSearchGrid);
+    }
+
+    private static class DisposableComponentWrapper implements IDisposableComponent
+    {
+        private final Component component;
+
+        private final IDisposableComponent delegator;
+
+        public DisposableComponentWrapper(Component component, IDisposableComponent delegator)
+        {
+            this.component = component;
+            this.delegator = delegator;
+        }
+
+        public Component getComponent()
+        {
+            return component;
+        }
+
+        // --- delegate
+
+        public void update(Set<DatabaseModificationKind> observedModifications)
+        {
+            delegator.update(observedModifications);
+        }
+
+        public DatabaseModificationKind[] getRelevantModifications()
+        {
+            return delegator.getRelevantModifications();
+        }
+
+        public void dispose()
+        {
+            delegator.dispose();
+        }
+
+    }
+}
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java
index d5b52ef4b0bfe98b3ad45cae1029a826216a3175..f6f4021dd909586acbb8994f92e7d1750da0933d 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java
@@ -434,7 +434,7 @@ public class WellContentDialog extends Dialog
                 {
                     WellContentDialog.this.hide();
                     ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.ClientPluginFactory
-                            .openPlateLocationsMaterialViewer(material,
+                            .openImagingMaterialViewer(material,
                                     ExperimentSearchCriteria.createExperiment(experimentCriteria),
                                     viewContext);
                 }
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 4bb0d6180fd303961407e3085a3783f9599e2c5b..49f3de124854b7c9191f38e550465bfe7c983067 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
@@ -315,7 +315,7 @@ public class WellSearchGrid extends TypedTableGrid<WellContent>
                                             experiment.getPermId(),
                                             experiment.getExperimentIdentifier());
 
-                            ClientPluginFactory.openPlateLocationsMaterialViewer(contentMaterial,
+                            ClientPluginFactory.openImagingMaterialViewer(contentMaterial,
                                     experimentCriteria, viewContext);
                         }
                     });
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/PlateLocationsMaterialLocatorResolver.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingMaterialLocatorResolver.java
similarity index 86%
rename from screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/PlateLocationsMaterialLocatorResolver.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingMaterialLocatorResolver.java
index 5dab77b0b26b70f72796c56ebaf5c5fd4d6f69e3..7c23b7923a80dd48b5bd00abce33f45fdbe9cc15 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/PlateLocationsMaterialLocatorResolver.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/ImagingMaterialLocatorResolver.java
@@ -16,16 +16,15 @@ import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.u
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.ExperimentSearchCriteria;
 
 /**
- * {@link MaterialLocatorResolver} for screening materials.
+ * Material detail view for screening materials. Overrides {@link MaterialLocatorResolver}.
  * 
  * @author Piotr Buczek
  */
-public class PlateLocationsMaterialLocatorResolver extends MaterialLocatorResolver
+public class ImagingMaterialLocatorResolver extends MaterialLocatorResolver
 {
     private final IViewContext<IScreeningClientServiceAsync> viewContext;
 
-    public PlateLocationsMaterialLocatorResolver(
-            IViewContext<IScreeningClientServiceAsync> viewContext)
+    public ImagingMaterialLocatorResolver(IViewContext<IScreeningClientServiceAsync> viewContext)
     {
         super(viewContext.getCommonViewContext());
         this.viewContext = viewContext;
@@ -84,7 +83,7 @@ public class PlateLocationsMaterialLocatorResolver extends MaterialLocatorResolv
         {
             if (experimentIdentifierOrNull == null)
             {
-                ClientPluginFactory.openPlateLocationsMaterialViewer(material, null, viewContext);
+                openImagingMaterialViewer(material, null);
             } else
             {
                 fetchExperimentAndShowLocations(material, experimentIdentifierOrNull);
@@ -105,13 +104,19 @@ public class PlateLocationsMaterialLocatorResolver extends MaterialLocatorResolv
                                         ExperimentSearchCriteria.createExperiment(
                                                 experiment.getId(), experiment.getPermId(),
                                                 experiment.getIdentifier());
-                                ClientPluginFactory.openPlateLocationsMaterialViewer(material,
-                                        experimentCriteria,
-                                        OpenEntityDetailsTabCallback.this.viewContext);
+                                openImagingMaterialViewer(material, experimentCriteria);
                             }
 
                         });
         }
+
+        private final void openImagingMaterialViewer(
+                final IEntityInformationHolderWithPermId material,
+                final ExperimentSearchCriteria experimentCriteriaOrNull)
+        {
+            ClientPluginFactory.openImagingMaterialViewer(material, experimentCriteriaOrNull,
+                    viewContext);
+        }
     }
 
 }
\ No newline at end of file
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/PlateMaterialReviewerLocatorResolver.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/WellSearchLocatorResolver.java
similarity index 91%
rename from screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/PlateMaterialReviewerLocatorResolver.java
rename to screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/WellSearchLocatorResolver.java
index 6da3753cf80ab9ab2d18a31989da92f5c7d5a87c..9b3f64de6dd0cfa3344f8e3128d164f10cabbcde 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/PlateMaterialReviewerLocatorResolver.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/locator/WellSearchLocatorResolver.java
@@ -14,16 +14,16 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCrit
 import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellSearchCriteria.MaterialSearchCriteria;
 
 /**
- * Locator resolver for plate metadata browser.
+ * Locator resolver for Well Search which displays wells containing specified materials optionally
+ * restricted to one experiment.
  * 
  * @author Tomasz Pylak
  */
-public class PlateMaterialReviewerLocatorResolver extends AbstractViewLocatorResolver
+public class WellSearchLocatorResolver extends AbstractViewLocatorResolver
 {
     private final IViewContext<IScreeningClientServiceAsync> viewContext;
 
-    public PlateMaterialReviewerLocatorResolver(
-            IViewContext<IScreeningClientServiceAsync> viewContext)
+    public WellSearchLocatorResolver(IViewContext<IScreeningClientServiceAsync> viewContext)
     {
         super(ScreeningLinkExtractor.WELL_SEARCH_ACTION);
         this.viewContext = viewContext;