diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataViewSection.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataViewSection.java
index c2555a7b776c6388c1e35e165af9247125e8b065..0e000cfa8eb594dbece2aca3ae7b6d3a937f554b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataViewSection.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/dataset/DataViewSection.java
@@ -20,24 +20,24 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-import com.extjs.gxt.ui.client.event.BaseEvent;
-import com.extjs.gxt.ui.client.event.ButtonEvent;
-import com.extjs.gxt.ui.client.event.Events;
-import com.extjs.gxt.ui.client.event.Listener;
-import com.extjs.gxt.ui.client.event.SelectionListener;
-import com.extjs.gxt.ui.client.widget.Header;
-import com.extjs.gxt.ui.client.widget.button.Button;
-import com.extjs.gxt.ui.client.widget.form.CheckBox;
+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.widget.toolbar.LabelToolItem;
 import com.google.gwt.user.client.ui.Frame;
 
 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.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.SingleSectionPanel;
+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.ui.data.DataSetReportGenerator;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.DropDownList;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.DataSetUtils;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DisplayedOrSelectedDatasetCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 
@@ -45,110 +45,162 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
  * Section panel presenting data from Data Store Server.
  * 
  * @author Izabela Adamczyk
+ * @author Piotr Buczek
  */
 public class DataViewSection extends SingleSectionPanel
 {
 
+    private static String FILES_SMART_VIEW = "Files (Smart View)";
+
+    private static String FILES_HOME_VIEW = "Files (Home)";
+
     public DataViewSection(final IViewContext<?> viewContext, final ExternalData dataset)
     {
         super(viewContext.getMessage(Dict.DATA_VIEW));
 
-        Button topButton = new Button(viewContext.getMessage(Dict.BUTTON_TOP));
-        final CheckBox autoResolveCheckbox = new CheckBox();
-        autoResolveCheckbox.setBoxLabel(viewContext.getMessage(Dict.AUTO_RESOLVE_LABEL));
-        autoResolveCheckbox.setValue(true);
+        final Frame iFrame = new Frame();
 
-        final Frame iFrame = new Frame(createUrl(viewContext, dataset, autoResolveCheckbox));
+        final DatastoreServiceViewerSelectionWidget serviceSelectionWidget =
+                new DatastoreServiceViewerSelectionWidget(viewContext, dataset);
+        getHeader().addTool(new LabelToolItem(serviceSelectionWidget.getFieldLabel() + ":&nbsp;"));
+        getHeader().addTool(serviceSelectionWidget);
+        serviceSelectionWidget
+                .addSelectionChangedListener(new SelectionChangedListener<DatastoreServiceDescriptionModel>()
+                    {
 
-        autoResolveCheckbox.addListener(Events.Change, new Listener<BaseEvent>()
-            {
-                public void handleEvent(BaseEvent be)
-                {
-                    iFrame.setUrl(createUrl(viewContext, dataset, autoResolveCheckbox));
-                }
-            });
-        topButton.addSelectionListener(new SelectionListener<ButtonEvent>()
-            {
-                @Override
-                public void componentSelected(ButtonEvent ce)
-                {
-                    autoResolveCheckbox.disableEvents(true);
-                    autoResolveCheckbox.setValue(false);
-                    autoResolveCheckbox.disableEvents(false);
-                    iFrame.setUrl(createUrl(viewContext, dataset, autoResolveCheckbox));
-                }
-            });
+                        @Override
+                        public void selectionChanged(
+                                SelectionChangedEvent<DatastoreServiceDescriptionModel> se)
+                        {
+                            final DatastoreServiceDescriptionModel selectedItem =
+                                    se.getSelectedItem();
+                            if (selectedItem != null)
+                            {
+                                DatastoreServiceDescription service = selectedItem.getBaseObject();
+
+                                // TODO 2010-01-19, PTR: remove after testing with DS
+                                System.err.println("selected " + service.getLabel());
+
+                                if (service.getLabel().equals(FILES_SMART_VIEW))
+                                {
+                                    showDataSetFilesView(true);
+                                } else if (service.getLabel().equals(FILES_HOME_VIEW))
+                                {
+                                    showDataSetFilesView(false);
+                                } else
+                                {
+                                    DisplayedOrSelectedDatasetCriteria criteria =
+                                            DisplayedOrSelectedDatasetCriteria
+                                                    .createSelectedItems(Arrays.asList(dataset
+                                                            .getCode()));
+                                    DataSetReportGenerator.generate(service, criteria, viewContext
+                                            .getCommonViewContext());
+                                }
+                            }
+
+                        }
+
+                        private void showDataSetFilesView(boolean autoResolve)
+                        {
+                            // TODO 2010-01-19, PTR: remove after testing with DS
+                            System.err.println("autoResolve " + autoResolve);
+                            iFrame.setUrl(DataSetUtils.createDataViewUrl(dataset, viewContext
+                                    .getModel(), "simpleHtml", autoResolve));
+                        }
+
+                    });
 
-        getHeader().addTool(autoResolveCheckbox);
-        getHeader().addTool(topButton);
-        viewContext.getCommonService().listDataStoreServices(DataStoreServiceKind.QUERIES,
-                new ReportPluginsCallback(viewContext, dataset, getHeader()));
         add(iFrame);
     }
 
-    private String createUrl(final IViewContext<?> viewContext, final ExternalData dataset,
-            CheckBox autoResolve)
+    private static class DatastoreServiceViewerSelectionWidget extends
+            DropDownList<DatastoreServiceDescriptionModel, DatastoreServiceDescription>
+    {
+
+        private final IViewContext<?> viewContext;
+
+        private final ExternalData dataset;
+
+        public DatastoreServiceViewerSelectionWidget(final IViewContext<?> viewContext,
+                final ExternalData dataset)
+        {
+            super(viewContext, ("data-set_" + dataset.getCode() + "_viewer"), Dict.BUTTON_SHOW,
+                    ModelDataPropertyNames.LABEL, "viewer", "viewers");
+            this.viewContext = viewContext;
+            this.dataset = dataset;
+            setAutoSelectFirst(true); // TODO 2010-01-19, PTR: use saved display settings
+        }
+
+        @Override
+        protected List<DatastoreServiceDescriptionModel> convertItems(
+                List<DatastoreServiceDescription> result)
+        {
+            List<DatastoreServiceDescriptionModel> models =
+                    DatastoreServiceDescriptionModel.convert(result, dataset);
+            models.add(0, createServiceDescription(FILES_SMART_VIEW));
+            models.add(1, createServiceDescription(FILES_HOME_VIEW));
+            return models;
+        }
+
+        @Override
+        protected void loadData(AbstractAsyncCallback<List<DatastoreServiceDescription>> callback)
+        {
+            viewContext.getCommonService().listDataStoreServices(DataStoreServiceKind.QUERIES,
+                    callback);
+        }
+
+        public DatabaseModificationKind[] getRelevantModifications()
+        {
+            return new DatabaseModificationKind[0]; // don't update
+        }
+
+    }
+
+    private static DatastoreServiceDescriptionModel createServiceDescription(String label)
     {
-        return DataSetUtils.createDataViewUrl(dataset, viewContext.getModel(), "simpleHtml",
-                autoResolve.getValue());
+        final DatastoreServiceDescription service =
+                new DatastoreServiceDescription(null, label, null, null);
+        return new DatastoreServiceDescriptionModel(service);
     }
 
     /**
-     * Adds buttons with services relevant to given data set to the header.
+     * {@link ModelData} for {@link DatastoreServiceDescription}.
      * 
-     * @author Izabela Adamczyk
+     * @author Piotr Buczek
      */
-    static private final class ReportPluginsCallback extends
-            AbstractAsyncCallback<List<DatastoreServiceDescription>>
+    public static class DatastoreServiceDescriptionModel extends NonHierarchicalBaseModelData
     {
-        private final ExternalData dataset;
 
-        private final Header header;
+        private static final long serialVersionUID = 1L;
 
-        private ReportPluginsCallback(IViewContext<?> viewContext, ExternalData dataset,
-                Header header)
+        public DatastoreServiceDescriptionModel(final DatastoreServiceDescription description)
         {
-            super(viewContext);
-            this.dataset = dataset;
-            this.header = header;
+            set(ModelDataPropertyNames.OBJECT, description);
+            set(ModelDataPropertyNames.LABEL, description.getLabel());
         }
 
-        @Override
-        protected void process(List<DatastoreServiceDescription> result)
+        public final static List<DatastoreServiceDescriptionModel> convert(
+                final List<DatastoreServiceDescription> services, final ExternalData dataset)
         {
-            List<DatastoreServiceDescription> relevant =
-                    new ArrayList<DatastoreServiceDescription>();
-            for (DatastoreServiceDescription service : result)
+            final List<DatastoreServiceDescriptionModel> result =
+                    new ArrayList<DatastoreServiceDescriptionModel>();
+            for (final DatastoreServiceDescription service : services)
             {
                 if (service.getDatastoreCode().equals(dataset.getDataStore().getCode())
                         && (Arrays.asList(service.getDatasetTypeCodes())).contains(dataset
                                 .getDataSetType().getCode()))
                 {
-                    relevant.add(service);
+                    result.add(new DatastoreServiceDescriptionModel(service));
                 }
             }
-
-            for (final DatastoreServiceDescription service : relevant)
-            {
-                header.addTool(createServiceButton(service));
-            }
+            return result;
         }
 
-        private Button createServiceButton(final DatastoreServiceDescription service)
+        public final DatastoreServiceDescription getBaseObject()
         {
-            return new Button(service.getLabel(), new SelectionListener<ButtonEvent>()
-                {
-                    @Override
-                    public void componentSelected(ButtonEvent ce)
-                    {
-                        DisplayedOrSelectedDatasetCriteria criteria =
-                                DisplayedOrSelectedDatasetCriteria.createSelectedItems(Arrays
-                                        .asList(dataset.getCode()));
-                        DataSetReportGenerator.generate(service, criteria, viewContext
-                                .getCommonViewContext());
-                    }
-                });
+            return get(ModelDataPropertyNames.OBJECT);
         }
+
     }
 
 }