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 2d71bda02dd723358f12b5dec0d25ec8781f670c..ad757ce820991040a79bc178700f7de39fe9c6e4 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
@@ -31,7 +31,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAs
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.SingleSectionPanel;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ComponentProvider;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator;
@@ -88,8 +87,8 @@ public class ExperimentBrowserGrid extends
     public static DisposableEntityChooser<Experiment> createChooser(
             final IViewContext<ICommonClientServiceAsync> viewContext)
     {
-        final ProjectSelectionTreeWidget tree = new ProjectSelectionTreeWidget(viewContext);
-        final SingleSectionPanel treeSection = new ProjectSelectionSection(tree);
+        final ProjectSelectionTreeGridContainer tree =
+                new ProjectSelectionTreeGridContainer(viewContext);
         final ExperimentBrowserToolbar toolbar = new ExperimentBrowserToolbar(viewContext, tree);
         final ExperimentBrowserGrid browserGrid = new ExperimentBrowserGrid(viewContext, toolbar)
             {
@@ -100,20 +99,20 @@ public class ExperimentBrowserGrid extends
                 }
             };
         browserGrid.addGridRefreshListener(toolbar);
-        return browserGrid.asDisposableWithToolbarAndTree(toolbar, treeSection);
+        return browserGrid.asDisposableWithToolbarAndTree(toolbar, tree);
     }
 
     /** Create a grid with the toolbar and a tree. */
     public static DisposableEntityChooser<Experiment> create(
             final IViewContext<ICommonClientServiceAsync> viewContext)
     {
-        final ProjectSelectionTreeWidget tree = new ProjectSelectionTreeWidget(viewContext);
-        final SingleSectionPanel treeSection = new ProjectSelectionSection(tree);
+        final ProjectSelectionTreeGridContainer tree =
+                new ProjectSelectionTreeGridContainer(viewContext);
         final ExperimentBrowserToolbar toolbar = new ExperimentBrowserToolbar(viewContext, tree);
         final ExperimentBrowserGrid browserGrid = new ExperimentBrowserGrid(viewContext, toolbar);
         browserGrid.addGridRefreshListener(toolbar);
         browserGrid.extendBottomToolbar();
-        return browserGrid.asDisposableWithToolbarAndTree(toolbar, treeSection);
+        return browserGrid.asDisposableWithToolbarAndTree(toolbar, tree);
     }
 
     private final ICriteriaProvider<ListExperimentsCriteria> criteriaProvider;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserToolbar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserToolbar.java
index d1c7e6962be89d3a25eadef235ae4cb4128f2503..b1507c19c5be0a193013dc3b4d12e9f147ba7e71 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserToolbar.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ExperimentBrowserToolbar.java
@@ -54,12 +54,12 @@ class ExperimentBrowserToolbar extends ToolBar implements
 
     private final ExperimentTypeSelectionWidget selectExperimentTypeCombo;
 
-    private final ProjectSelectionTreeWidget selectProjectTree;
+    private final ProjectSelectionTreeGridContainer selectProjectTree;
 
     private final IViewContext<ICommonClientServiceAsync> viewContext;
 
     public ExperimentBrowserToolbar(final IViewContext<ICommonClientServiceAsync> viewContext,
-            ProjectSelectionTreeWidget tree)
+            ProjectSelectionTreeGridContainer tree)
     {
         this.viewContext = viewContext;
         selectExperimentTypeCombo = new ExperimentTypeSelectionWidget(viewContext, ID, true);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ProjectSelectionSection.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ProjectSelectionSection.java
deleted file mode 100644
index a10331306bf2979e5a12bf79c8c0d97e7e020038..0000000000000000000000000000000000000000
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ProjectSelectionSection.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2008 ETH Zuerich, CISD
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment;
-
-import com.extjs.gxt.ui.client.Style.Scroll;
-
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.SingleSectionPanel;
-
-/**
- * {@link SingleSectionPanel} containing {@link ProjectSelectionTreeWidget}.
- * 
- * @author Piotr Buczek
- */
-public class ProjectSelectionSection extends SingleSectionPanel
-{
-    public ProjectSelectionSection(final ProjectSelectionTreeWidget tree)
-    {
-        super("Project Selection");
-        setScrollMode(Scroll.AUTOY);
-        setCollapsible(false);
-        add(tree);
-    }
-}
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ProjectSelectionTreeGridContainer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ProjectSelectionTreeGridContainer.java
new file mode 100644
index 0000000000000000000000000000000000000000..ea34d8f7119609191435b533e4fa08a96dedc30f
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ProjectSelectionTreeGridContainer.java
@@ -0,0 +1,442 @@
+/*
+ * Copyright 2008 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+
+import com.extjs.gxt.ui.client.Style.SelectionMode;
+import com.extjs.gxt.ui.client.data.ModelData;
+import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
+import com.extjs.gxt.ui.client.event.SelectionChangedListener;
+import com.extjs.gxt.ui.client.store.ListStore;
+import com.extjs.gxt.ui.client.store.TreeStore;
+import com.extjs.gxt.ui.client.widget.ContentPanel;
+import com.extjs.gxt.ui.client.widget.LayoutContainer;
+import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
+import com.extjs.gxt.ui.client.widget.grid.ColumnData;
+import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
+import com.extjs.gxt.ui.client.widget.grid.Grid;
+import com.extjs.gxt.ui.client.widget.layout.FitLayout;
+import com.extjs.gxt.ui.client.widget.treegrid.TreeGrid;
+import com.extjs.gxt.ui.client.widget.treegrid.WidgetTreeGridCellRenderer;
+import com.google.gwt.dom.client.Element;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.dom.client.DomEvent;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Event;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.InlineHTML;
+import com.google.gwt.user.client.ui.Widget;
+
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ProjectViewer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareComponent;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DefaultTabItem;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItem;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.ITabItemFactory;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.NonHierarchicalBaseModelData;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.LinkRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractViewer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.GWTUtils;
+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.shared.basic.ICodeProvider;
+import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Group;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind;
+
+/**
+ * {@link LayoutContainer} containing a {@link TreeGrid} with projects loaded from the server. Main
+ * items of the tree are project groups and projects are their children.
+ * 
+ * @author Piotr Buczek
+ */
+public final class ProjectSelectionTreeGridContainer extends LayoutContainer implements
+        IDatabaseModificationObserver
+{
+
+    public static final String ID = GenericConstants.ID_PREFIX + "select-project";
+
+    private final IViewContext<?> viewContext;
+
+    private Project selectedProjectOrNull;
+
+    private SelectionChangedListener<?> selectionChangedListener;
+
+    private final TreeGrid<ModelData> tree;
+
+    public ProjectSelectionTreeGridContainer(final IViewContext<?> viewContext)
+    {
+        super(new FitLayout());
+        this.viewContext = viewContext;
+
+        ColumnConfig codeColumn = createCodeColumn();
+        ColumnModel columnModel = new ColumnModel(Arrays.asList(codeColumn));
+        tree = createTreeGrid(columnModel);
+
+        ContentPanel cp = new ContentPanel();
+        cp.setBodyBorder(false);
+        cp.setHeading("Project Selection");
+        cp.setLayout(new FitLayout());
+        cp.add(tree);
+        add(cp);
+
+        refreshTree();
+    }
+
+    /** @return tree grid with empty store and specified column model */
+    private TreeGrid<ModelData> createTreeGrid(ColumnModel columnModel)
+    {
+        final TreeGrid<ModelData> treeGrid =
+                new TreeGrid<ModelData>(new TreeStore<ModelData>(), columnModel);
+        treeGrid.setId(ID);
+        treeGrid.setBorders(true);
+        treeGrid.setAutoExpandColumn(ModelDataPropertyNames.CODE);
+        treeGrid.getTreeView().setForceFit(true);
+        treeGrid.getTreeView().setSortingEnabled(false);
+        treeGrid.getTreeView().setRowHeight(32);
+        treeGrid
+                .setTitle("- Click on a row with project code to select it.\n"
+                        + "- If Group/Project description is available it will show up in a tooltip when you mouse over their codes.");
+        // switchOffFolderIcons
+        treeGrid.getStyle().setNodeCloseIcon(null);
+        treeGrid.getStyle().setNodeOpenIcon(null);
+
+        treeGrid.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
+        treeGrid.getSelectionModel().addSelectionChangedListener(
+                new SelectionChangedListener<ModelData>()
+                    {
+                        @Override
+                        public void selectionChanged(SelectionChangedEvent<ModelData> se)
+                        {
+                            ModelData selected = se.getSelectedItem();
+                            if (selected != null && tree.isLeaf(selected))
+                            {
+                                selectedProjectOrNull =
+                                        (Project) selected.get(ModelDataPropertyNames.OBJECT);
+                                getSelectionChangedListener().handleEvent(null);
+                            }
+                        }
+                    });
+        return treeGrid;
+    }
+
+    private ColumnConfig createCodeColumn()
+    {
+        final ColumnConfig columnConfig =
+                new ColumnConfig(ModelDataPropertyNames.CODE, "Group/Project Code", 1);
+        columnConfig.setRenderer(new WidgetTreeGridCellRenderer<ModelData>()
+            {
+                @Override
+                public Widget getWidget(ModelData model, String property, ColumnData config,
+                        int rowIndex, int colIndex, ListStore<ModelData> store, Grid<ModelData> grid)
+                {
+                    if (model instanceof GroupItemModel)
+                    {
+                        return createGroupWidget((GroupItemModel) model);
+                    } else if (model instanceof ProjectItemModel)
+                    {
+                        return createProjectWidget((ProjectItemModel) model);
+                    } else
+                    {
+                        throw new UnsupportedOperationException("unsupported data model");
+                    }
+                }
+
+                private Widget createGroupWidget(GroupItemModel model)
+                {
+                    final Group group = (Group) model.get(ModelDataPropertyNames.OBJECT);
+                    final Widget result = new InlineHTML(group.getCode());
+                    result.setTitle(group.getDescription());
+                    return result;
+                }
+
+                private Widget createProjectWidget(ProjectItemModel model)
+                {
+                    final Project project = (Project) model.get(ModelDataPropertyNames.OBJECT);
+
+                    final Widget detailsLink =
+                            LinkRenderer.getLinkWidget("(details)", new ClickHandler()
+                                {
+
+                                    public void onClick(ClickEvent event)
+                                    {
+                                        showProjectDetailsView(project);
+                                    }
+
+                                });
+                    detailsLink.setTitle("Click on the link to show project details in a viewer.");
+                    detailsLink.removeStyleName("inline");
+
+                    final FlowPanel panel = new FlowPanelWithLinkAppearingOnMouseOver(detailsLink);
+                    panel.setTitle(project.getDescription());
+                    panel.add(new InlineHTML(project.getCode() + " "));
+                    panel.add(detailsLink);
+                    return panel;
+                }
+
+                class FlowPanelWithLinkAppearingOnMouseOver extends FlowPanel
+                {
+
+                    private final Widget link;
+
+                    public FlowPanelWithLinkAppearingOnMouseOver(Widget link)
+                    {
+                        super();
+                        this.link = link;
+                        sinkEvents(Event.ONMOUSEOVER | Event.ONMOUSEOUT);
+                        link.setVisible(false);
+                    }
+
+                    @Override
+                    @SuppressWarnings("deprecation")
+                    public void onBrowserEvent(Event event)
+                    {
+                        switch (DOM.eventGetType(event))
+                        {
+                            case Event.ONMOUSEOVER:
+                                // Only fire the mouse over event if it's coming from
+                                // outside
+                                // this widget.
+                            case Event.ONMOUSEOUT:
+                                // Only fire the mouse out event if it's leaving this
+                                // widget.
+                                Element related = event.getRelatedTarget();
+                                if (related != null && getElement().isOrHasChild(related))
+                                {
+                                    return;
+                                }
+                                // this is the only part different from FlowPanel
+                                link.setVisible(DOM.eventGetType(event) == Event.ONMOUSEOVER);
+                                //
+                                break;
+                        }
+                        DomEvent.fireNativeEvent(event, this, this.getElement());
+                    }
+                }
+
+            });
+        return columnConfig;
+    }
+
+    private void showProjectDetailsView(final Project project)
+    {
+        ITabItemFactory tabFactory;
+        final TechId projectId = TechId.create(project);
+        tabFactory = new ITabItemFactory()
+            {
+                public ITabItem create()
+                {
+                    final DatabaseModificationAwareComponent viewer =
+                            ProjectViewer.create(viewContext.getCommonViewContext(), projectId);
+                    return DefaultTabItem.create(getViewerTitle(), viewer, viewContext, false);
+                }
+
+                public String getId()
+                {
+                    return ProjectViewer.createId(projectId);
+                }
+
+                private String getViewerTitle()
+                {
+                    return AbstractViewer.getTitle(viewContext, Dict.PROJECT, project);
+                }
+            };
+        DispatcherHelper.dispatchNaviEvent(tabFactory);
+    }
+
+    /**
+     * Returns the {@link Project} currently selected.
+     * 
+     * @return <code>null</code> if no project is selected.
+     */
+    public final Project tryGetSelectedProject()
+    {
+        return selectedProjectOrNull;
+    }
+
+    private SelectionChangedListener<?> getSelectionChangedListener()
+    {
+        return selectionChangedListener;
+    }
+
+    public void setSelectionChangedListener(SelectionChangedListener<?> listener)
+    {
+        selectionChangedListener = listener;
+    }
+
+    private void clearTree()
+    {
+        tree.getStore().removeAll();
+    }
+
+    /**
+     * Rebuilds the tree from a list of projects.
+     */
+    private void rebuildTree(List<Project> projects)
+    {
+        clearTree();
+        addToStore(projects);
+        tree.expandAll();
+    }
+
+    /** adds items for given <var>projects</var> to the tree */
+    private void addToStore(List<Project> projects)
+    {
+        for (Group group : getSortedGroups(projects))
+        {
+            GroupItemModel groupModel = new GroupItemModel(group);
+            tree.getTreeStore().add(groupModel, true);
+            tree.setLeaf(groupModel, false);
+            for (Project project : projects)
+            {
+                if (project.getGroup().equals(group))
+                {
+                    ProjectItemModel projectModel = new ProjectItemModel(project);
+                    tree.getTreeStore().add(groupModel, projectModel, false);
+                    tree.setLeaf(projectModel, true);
+                }
+            }
+        }
+    }
+
+    /** @return a sorted set of groups of given <var>projects</var> */
+    private Set<Group> getSortedGroups(List<Project> projects)
+    {
+        Set<Group> groups = new TreeSet<Group>();
+        for (final Project project : projects)
+        {
+            groups.add(project.getGroup());
+        }
+        return groups;
+    }
+
+    /**
+     * Refreshes the whole tree. If the previously selected project is no longer present in the db,
+     * nothing will be selected. Otherwise the previous selection will be preserved.
+     */
+    public void refreshTree()
+    {
+        loadData();
+    }
+
+    private void loadData()
+    {
+        DefaultResultSetConfig<String, Project> config = DefaultResultSetConfig.createFetchAll();
+        viewContext.getCommonService().listProjects(config, new ListProjectsCallback(viewContext));
+    }
+
+    private void selectByIdentifierIfPossible(String projectIdentifier)
+    {
+        GWTUtils
+                .setSelectedItem(tree, ModelDataPropertyNames.PROJECT_IDENTIFIER, projectIdentifier);
+    }
+
+    public DatabaseModificationKind[] getRelevantModifications()
+    {
+        return DatabaseModificationKind.any(ObjectKind.PROJECT);
+    }
+
+    public void update(Set<DatabaseModificationKind> observedModifications)
+    {
+        refreshTree();
+    }
+
+    // 
+    // Helper classes
+    //
+    private final class ListProjectsCallback extends AbstractAsyncCallback<ResultSet<Project>>
+    {
+        ListProjectsCallback(final IViewContext<?> viewContext)
+        {
+            super(viewContext);
+        }
+
+        @Override
+        protected void process(final ResultSet<Project> result)
+        {
+            List<Project> projects = result.getList().extractOriginalObjects();
+            rebuildTree(projects);
+
+            if (selectedProjectOrNull != null)
+            {
+                selectByIdentifierIfPossible(selectedProjectOrNull.getIdentifier());
+            }
+        }
+    }
+
+    private static class BaseModelDataWithCode extends NonHierarchicalBaseModelData
+    {
+        private static final long serialVersionUID = 1L;
+
+        public BaseModelDataWithCode(ICodeProvider codeProvider)
+        {
+            set(ModelDataPropertyNames.CODE, codeProvider.getCode());
+            set(ModelDataPropertyNames.OBJECT, codeProvider);
+        }
+
+        @Override
+        public String toString()
+        {
+            return get(ModelDataPropertyNames.CODE);
+        }
+    }
+
+    public static final String PROJECT_WITH_GROUP_CODE = "projectWithGroupCode";
+
+    private static class ProjectItemModel extends BaseModelDataWithCode
+    {
+
+        private static final long serialVersionUID = 1L;
+
+        public ProjectItemModel(Project project)
+        {
+            super(project);
+            set(ModelDataPropertyNames.PROJECT_IDENTIFIER, project.getIdentifier());
+            set(PROJECT_WITH_GROUP_CODE, getProjectWithGroupCode(project));
+        }
+
+        private static String getProjectWithGroupCode(Project project)
+        {
+            return project.getCode() + " (" + project.getGroup().getCode() + ")";
+        }
+
+    }
+
+    private static class GroupItemModel extends BaseModelDataWithCode
+    {
+        private static final long serialVersionUID = 1L;
+
+        public GroupItemModel(Group group)
+        {
+            super(group);
+        }
+    }
+
+}
\ No newline at end of file
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 8ab6abf1ac0d73e27eae0195f2c94b39113c991d..269ffa29914c0e32a7eb40b1655a3e444701601a 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
@@ -390,7 +390,7 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod
 
         final LayoutContainer subContainer = new LayoutContainer();
         subContainer.setLayout(new RowLayout(Orientation.HORIZONTAL));
-        subContainer.add(tree, new RowData(250, 1));
+        subContainer.add(tree, new RowData(300, 1));
         subContainer.add(this, new RowData(1, 1));
         container.add(subContainer, new RowData(1, 1));
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java
index 45ef327a700f4268602563d4e990f7d2fa5a85d4..5f65c49342058799ef46875336b5faa1f5fbe907 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/util/GWTUtils.java
@@ -21,9 +21,9 @@ import java.util.List;
 
 import com.extjs.gxt.ui.client.data.ModelData;
 import com.extjs.gxt.ui.client.store.ListStore;
-import com.extjs.gxt.ui.client.store.TreeStore;
 import com.extjs.gxt.ui.client.widget.form.ComboBox;
 import com.extjs.gxt.ui.client.widget.form.Field;
+import com.extjs.gxt.ui.client.widget.treegrid.TreeGrid;
 import com.extjs.gxt.ui.client.widget.treepanel.TreePanel;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.user.client.ui.ListBox;
@@ -122,28 +122,41 @@ public final class GWTUtils
         comboBox.setValue(null);
     }
 
+    /**
+     * Selects given <var>value</var> of given <var>tree</var>.
+     */
+    public final static void setSelectedItem(final TreeGrid<ModelData> tree, final String property,
+            final String value)
+    {
+        ModelData model = tryFindModel(tree.getTreeStore().getAllItems(), property, value);
+        if (model != null)
+        {
+            tree.getSelectionModel().select(model, false);
+        }
+    }
+
     /**
      * Selects given <var>value</var> of given <var>tree</var>.
      */
     public final static void setSelectedItem(final TreePanel<ModelData> tree,
             final String property, final String value)
     {
-        ModelData model = tryFindModel(tree, property, value);
+        ModelData model = tryFindModel(tree.getStore().getAllItems(), property, value);
         if (model != null)
         {
             tree.getSelectionModel().select(model, false);
         }
     }
 
-    /** @return specified item from the tree if it's found, null otherwise */
-    public final static ModelData tryFindModel(final TreePanel<ModelData> tree,
-            final String property, final String value)
+    /** @return specified model from the list if it's found, null otherwise */
+    public final static ModelData tryFindModel(final List<ModelData> models, final String property,
+            final String value)
     {
-        assert tree != null : "Unspecified tree.";
+        assert models != null : "Unspecified models.";
         assert property != null : "Unspecified model property.";
         assert value != null : "Unspecified model property value.";
-        TreeStore<ModelData> items = tree.getStore();
-        for (ModelData model : items.getAllItems())
+
+        for (ModelData model : models)
         {
             if (model != null)
             {
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ListExperiments.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ListExperiments.java
index dbbac957708afd9607d204aecda2d3ee7ff7a369..16ef2c0ad1d0f3e4662dc5618a72adb527f1d551 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ListExperiments.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/experiment/ListExperiments.java
@@ -16,7 +16,9 @@
 
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment;
 
+import com.extjs.gxt.ui.client.data.ModelData;
 import com.extjs.gxt.ui.client.widget.form.ComboBox;
+import com.extjs.gxt.ui.client.widget.treegrid.TreeGrid;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ExperimentTypeModel;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames;
@@ -46,11 +48,12 @@ public class ListExperiments extends AbstractDefaultTestCommand
     // AbstractDefaultTestCommand
     //
 
+    @SuppressWarnings("unchecked")
     public void execute()
     {
-        final ProjectSelectionTreeWidget projectSelector =
-                (ProjectSelectionTreeWidget) GWTTestUtil
-                        .getWidgetWithID(ProjectSelectionTreeWidget.ID);
+        final TreeGrid<ModelData> projectSelector =
+                (TreeGrid<ModelData>) GWTTestUtil
+                        .getWidgetWithID(ProjectSelectionTreeGridContainer.ID);
 
         final ComboBox<ExperimentTypeModel> experimentTypeSelector =
                 (ExperimentTypeSelectionWidget) GWTTestUtil
@@ -62,7 +65,8 @@ public class ListExperiments extends AbstractDefaultTestCommand
         GWTUtils.unselect(experimentTypeSelector);
 
         GWTUtils.setSelectedItem(projectSelector,
-                ProjectSelectionTreeWidget.PROJECT_WITH_GROUP_CODE, projectCodeOrNull);
+                ProjectSelectionTreeGridContainer.PROJECT_WITH_GROUP_CODE, projectCodeOrNull);
+
         GWTUtils.setSelectedItem(experimentTypeSelector, ModelDataPropertyNames.CODE,
                 experimentTypeNameOrNull);
     }