diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/DisposableSectionPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/DisposableSectionPanel.java
index c64dafe835115550d838df0e1683bdf3a669bf32..b7983d86357d7118a9f3992f193ce726d2364aa3 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/DisposableSectionPanel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/DisposableSectionPanel.java
@@ -46,13 +46,12 @@ abstract public class DisposableSectionPanel extends SingleSectionPanel
     }
 
     @Override
-    protected void onDetach()
+    protected void disposeComponents()
     {
         if (disposableComponentOrNull != null)
         {
             disposableComponentOrNull.dispose();
         }
-        super.onDetach();
     }
 
     @Override
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SingleSectionPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SingleSectionPanel.java
index 2179dee3c9eefdd0ab93d52bb431f245d654a33f..7f720857ebe8791f24ea189be511e1b609dedd41 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SingleSectionPanel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/SingleSectionPanel.java
@@ -41,6 +41,13 @@ abstract public class SingleSectionPanel extends ContentPanel
 
     private boolean isContentVisible = false;
 
+    /**
+     * whether additional components created for this section (e.g. browsers) should be automatically
+     * disposed (for sections that can temporarily removed from container as in
+     * {@link SectionsPanel} it should be turned off until detach from the container)
+     */
+    private boolean autoDisposeComponents = true;
+
     public SingleSectionPanel(final String header, IViewContext<?> viewContext)
     {
         this.viewContext = viewContext;
@@ -82,4 +89,45 @@ abstract public class SingleSectionPanel extends ContentPanel
             isContentVisible = true;
         }
     }
+
+    public boolean isContentVisible()
+    {
+        return isContentVisible;
+    }
+
+    public void enableAutoDisposeComponents()
+    {
+        setAutoDisposeComponents(true);
+    }
+
+    public void disableAutoDisposeComponents()
+    {
+        setAutoDisposeComponents(false);
+    }
+
+    protected boolean isAutoDisposeComponents()
+    {
+        return autoDisposeComponents;
+    }
+
+    private void setAutoDisposeComponents(boolean autoDisposeComponent)
+    {
+        this.autoDisposeComponents = autoDisposeComponent;
+    }
+
+    @Override
+    protected void onDetach()
+    {
+        if (isAutoDisposeComponents())
+        {
+            disposeComponents();
+        }
+        super.onDetach();
+    }
+
+    /** disposes components created for the section (by default does nothing) */
+    protected void disposeComponents()
+    {
+    }
+
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/SectionsPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/SectionsPanel.java
index b1ed415dfa2455d7fa3f5679497d9a21b2381550..a1b955aa17c4675ee2af4c4a32784086b7fd96c3 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/SectionsPanel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/SectionsPanel.java
@@ -145,11 +145,24 @@ public class SectionsPanel extends ContentPanel
                     refreshLayout();
                 }
             });
+        // sections will be disposed when section panel is removed, not when they are hidden
+        // (see onDetach())
+        panel.disableAutoDisposeComponents();
         elements.add(element);
         addToToolbar(element.getButton());
         updateElementVisibility(element);
     }
 
+    @Override
+    protected void onDetach()
+    {
+        for (SectionElement el : elements)
+        {
+            el.getPanel().enableAutoDisposeComponents();
+        }
+        super.onDetach();
+    }
+
     /** removes all sections and adds them once again with with refreshed state */
     private void refreshLayout()
     {
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 a53c1d790e83f800927d558a3d46260b4ff62435..8f26cb4d6e7f3da4ddda2e1d5ed815cfaddd1b74 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
@@ -73,7 +73,7 @@ public class DataViewSection extends SingleSectionPanel
     }
 
     @Override
-    protected void onDetach()
+    protected void disposeComponents()
     {
         disposeCurrentReport();
     }