From c4c8c68b840d81f878784c60dffe48a3a75710f0 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Tue, 26 Jan 2010 09:58:47 +0000
Subject: [PATCH] SE-192 remove debug print statements, change
 GenericExperimentViewer to allow additional sections

SVN: 14441
---
 .../application/SingleSectionPanel.java       |  4 +-
 .../framework/AbstractColumnDefinition.java   |  6 ---
 .../application/ui/widget/SectionsPanel.java  |  2 -
 .../experiment/GenericExperimentViewer.java   | 54 ++++++++++++++-----
 .../web/server/GenericClientService.java      |  4 +-
 5 files changed, 44 insertions(+), 26 deletions(-)

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 e943002b04c..ba3ad606504 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
@@ -19,7 +19,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application;
 import com.extjs.gxt.ui.client.widget.ContentPanel;
 import com.extjs.gxt.ui.client.widget.layout.FitLayout;
 
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDisplayTypeIDGenerator;
 
 /**
  * {@link ContentPanel} configured for Experiment Viewer.
@@ -40,7 +40,7 @@ public class SingleSectionPanel extends ContentPanel
         setLayout(new FitLayout());
     }
 
-    public void setDisplayID(DisplayTypeIDGenerator generator, String suffix)
+    public void setDisplayID(IDisplayTypeIDGenerator generator, String suffix)
     {
         if (suffix != null)
         {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinition.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinition.java
index a1f037a7e2b..8c7cb1c65b9 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinition.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/AbstractColumnDefinition.java
@@ -84,12 +84,6 @@ public abstract class AbstractColumnDefinition<T> implements IColumnDefinitionUI
         return false;
     }
 
-    public String getIdentifier()
-    {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
     public String tryToGetProperty(String key)
     {
         return null;
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 aab159f7e69..95278c9bcb7 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
@@ -159,7 +159,6 @@ public class SectionsPanel extends ContentPanel
         removeAll();
         for (SectionElement el : elements)
         {
-            System.out.println("ADD SECTION PANEL: "+el.getButton().getText()+" "+el.getButton().isPressed());
             if (el.getButton().isPressed())
             {
                 internalAdd(el);
@@ -279,7 +278,6 @@ public class SectionsPanel extends ContentPanel
                 {
                     public void handleEvent(BaseEvent be)
                     {
-                        System.out.println("TOGGLE:" + result.getId() + " "+result.isPressed());
                         result.setText(getHeading(heading, result.isPressed()));
                     }
                 });
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentViewer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentViewer.java
index c87ca37df32..3e9935133e3 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentViewer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/GenericExperimentViewer.java
@@ -16,17 +16,22 @@
 
 package ch.systemsx.cisd.openbis.plugin.generic.client.web.client.application.experiment;
 
+import java.util.Collections;
+import java.util.List;
+
 import com.extjs.gxt.ui.client.Style.Scroll;
 import com.extjs.gxt.ui.client.widget.Component;
 import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.AttachmentVersionsSection;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.BrowserSectionPanel;
 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.framework.CompositeDatabaseModificationObserverWithMainObserver;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareComponent;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.IDatabaseModificationObserver;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.AbstractViewer;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment.ExperimentListDeletionConfirmationDialog;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.SectionsPanel;
@@ -41,7 +46,7 @@ import ch.systemsx.cisd.openbis.plugin.generic.client.web.client.IGenericClientS
  * 
  * @author Izabela Adamczyk
  */
-public final class GenericExperimentViewer extends AbstractViewer<Experiment>
+public class GenericExperimentViewer extends AbstractViewer<Experiment>
 {
     private static final String GENERIC_EXPERIMENT_VIEWER = "generic-experiment-viewer";
 
@@ -51,30 +56,37 @@ public final class GenericExperimentViewer extends AbstractViewer<Experiment>
 
     private final IViewContext<IGenericClientServiceAsync> viewContext;
 
-    private final TechId experimentId;
-
     private final CompositeDatabaseModificationObserverWithMainObserver modificationObserver;
 
+    protected final IIdentifiable identifiable;
+    
+    protected Experiment experimentOrNull;
+
     public static DatabaseModificationAwareComponent create(
             final IViewContext<IGenericClientServiceAsync> viewContext,
             final IIdentifiable identifiable)
     {
         GenericExperimentViewer viewer = new GenericExperimentViewer(viewContext, identifiable);
-        return new DatabaseModificationAwareComponent(viewer, viewer.modificationObserver);
+        return new DatabaseModificationAwareComponent(viewer, viewer.getModificationObserver());
     }
 
-    private GenericExperimentViewer(final IViewContext<IGenericClientServiceAsync> viewContext,
-            final IIdentifiable identifiable)
+    protected GenericExperimentViewer(final IViewContext<IGenericClientServiceAsync> viewContext,
+            final IIdentifiable experiment)
     {
-        super(viewContext, createId(identifiable));
+        super(viewContext, createId(experiment));
+        this.identifiable = experiment;
         setLayout(new BorderLayout());
-        this.experimentId = TechId.create(identifiable);
         this.modificationObserver = new CompositeDatabaseModificationObserverWithMainObserver();
         this.viewContext = viewContext;
         extendToolBar();
         reloadAllData();
     }
 
+    public IDatabaseModificationObserver getModificationObserver()
+    {
+        return modificationObserver;
+    }
+    
     private void extendToolBar()
     {
         addToolBarButton(createDeleteButton(new IDelegatedAction()
@@ -108,6 +120,7 @@ public final class GenericExperimentViewer extends AbstractViewer<Experiment>
      */
     protected void reloadData(AbstractAsyncCallback<Experiment> callback)
     {
+        TechId experimentId = TechId.create(identifiable);
         viewContext.getService().getExperimentInfo(experimentId, callback);
     }
 
@@ -117,25 +130,25 @@ public final class GenericExperimentViewer extends AbstractViewer<Experiment>
         super.updateOriginalData(newData);
     }
 
-    private final Component createLeftPanel(final Experiment experiment,
+    private final Component createLeftPanel(final Experiment newExperiment,
             final CompositeDatabaseModificationObserverWithMainObserver observer)
     {
-        final ExperimentPropertiesPanel panel = createExperimentPropertiesPanel(experiment);
+        final ExperimentPropertiesPanel panel = createExperimentPropertiesPanel(newExperiment);
         panel.setScrollMode(Scroll.AUTOY);
         observer.addMainObserver(panel.getDatabaseModificationObserver());
         return panel;
     }
 
-    private ExperimentPropertiesPanel createExperimentPropertiesPanel(final Experiment experiment)
+    private ExperimentPropertiesPanel createExperimentPropertiesPanel(final Experiment newExperiment)
     {
-        return new ExperimentPropertiesPanel(experiment, viewContext, this);
+        return new ExperimentPropertiesPanel(newExperiment, viewContext, this);
     }
 
     private AttachmentVersionsSection<Experiment> createAttachmentsSection(
-            final Experiment experiment)
+            final Experiment newExperiment)
     {
         return new AttachmentVersionsSection<Experiment>(viewContext.getCommonViewContext(),
-                experiment);
+                newExperiment);
     }
 
     private static final class ExperimentInfoCallback extends AbstractAsyncCallback<Experiment>
@@ -166,6 +179,7 @@ public final class GenericExperimentViewer extends AbstractViewer<Experiment>
         @Override
         protected final void process(final Experiment result)
         {
+            genericExperimentViewer.experimentOrNull = result;
             genericExperimentViewer.updateOriginalData(result);
             genericExperimentViewer.removeAll();
 
@@ -190,6 +204,13 @@ public final class GenericExperimentViewer extends AbstractViewer<Experiment>
     {
         final SectionsPanel container = new SectionsPanel(viewContext.getCommonViewContext());
         final String displayIdSuffix = getDisplayIdSuffix(result.getExperimentType().getCode());
+        
+        List<BrowserSectionPanel> additionalPanels = createAdditionalBrowserSectionPanels(displayIdSuffix);
+        for (BrowserSectionPanel panel : additionalPanels)
+        {
+            container.addPanel(panel);
+            observer.addObserver(panel.getDatabaseModificationObserver());
+        }
 
         final ExperimentSamplesSection sampleSection =
                 new ExperimentSamplesSection(viewContext, result);
@@ -212,5 +233,10 @@ public final class GenericExperimentViewer extends AbstractViewer<Experiment>
         container.layout();
         return container;
     }
+    
+    protected List<BrowserSectionPanel> createAdditionalBrowserSectionPanels(String displyIdSuffix)
+    {
+        return Collections.emptyList();
+    }
 
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java
index b78ca3eca4f..a5df0d58638 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/server/GenericClientService.java
@@ -89,7 +89,7 @@ import ch.systemsx.cisd.openbis.plugin.generic.shared.ResourceNames;
  * @author Franz-Josef Elmer
  */
 @Component(value = ResourceNames.GENERIC_PLUGIN_SERVICE)
-public final class GenericClientService extends AbstractClientService implements
+public class GenericClientService extends AbstractClientService implements
         IGenericClientService
 {
 
@@ -101,7 +101,7 @@ public final class GenericClientService extends AbstractClientService implements
     }
 
     @Private
-    GenericClientService(final IGenericServer genericServer,
+    protected GenericClientService(final IGenericServer genericServer,
             final IRequestContextProvider requestContextProvider)
     {
         super(requestContextProvider);
-- 
GitLab