From 0b34bf061b93caf7c5c69115148c1c00b2126787 Mon Sep 17 00:00:00 2001
From: tpylak <tpylak>
Date: Tue, 19 Jul 2011 11:17:08 +0000
Subject: [PATCH] LMS-2355 analysis procedures: set initial value in material
 detail view (normal mode)

SVN: 22207
---
 .../MaterialMergedSummarySection.java         | 25 ++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialMergedSummarySection.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialMergedSummarySection.java
index 547750054a6..ce5fb4f95e9 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialMergedSummarySection.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/MaterialMergedSummarySection.java
@@ -31,22 +31,25 @@ class MaterialMergedSummarySection extends DisposableTabContent
 
     private final boolean restrictGlobalScopeLinkToProject;
 
-    private ExperimentSearchCriteriaHolder experimentSearchCriteriaHolder;
+    private final ExperimentSearchCriteriaHolder experimentSearchCriteriaHolder;
 
-    private AnalysisProcedureListenerHolder analysisProcedureListenerHolder =
+    private final AnalysisProcedureListenerHolder analysisProcedureListenerHolder =
             new AnalysisProcedureListenerHolder();
 
+    private AnalysisProcedureCriteria initialAnalysisProcedureCriteriaOrNull;
+
     // TODO 2011-07-19, Tomasz Pylak: use analysisProcedureCriteria
     public MaterialMergedSummarySection(
             IViewContext<IScreeningClientServiceAsync> screeningViewContext, Material material,
             ExperimentSearchCriteria experimentCriteriaOrNull,
-            AnalysisProcedureCriteria analysisProcedureCriteria,
+            AnalysisProcedureCriteria initialAnalysisProcedureCriteriaOrNull,
             boolean restrictGlobalScopeLinkToProject)
     {
         super(screeningViewContext.getMessage(Dict.MATERIAL_MERGED_SUMMARY_SECTION_TITLE),
                 screeningViewContext, material);
         this.screeningViewContext = screeningViewContext;
         this.material = material;
+        this.initialAnalysisProcedureCriteriaOrNull = initialAnalysisProcedureCriteriaOrNull;
         this.restrictGlobalScopeLinkToProject = restrictGlobalScopeLinkToProject;
         this.experimentSearchCriteriaHolder =
                 new ExperimentSearchCriteriaHolder(experimentCriteriaOrNull);
@@ -99,6 +102,7 @@ class MaterialMergedSummarySection extends DisposableTabContent
         IDisposableComponent allExperimentsComponent =
                 MaterialFeaturesFromAllExperimentsComponent.createComponent(screeningViewContext,
                         material, experimentSearchCriteria, analysisProcedureListenerHolder);
+        setInitialAnalysisProcedureCriteriaAndReset();
         return allExperimentsComponent;
     }
 
@@ -108,9 +112,24 @@ class MaterialMergedSummarySection extends DisposableTabContent
                 MaterialReplicaSummaryComponent
                         .createViewer(screeningViewContext, experiment, material,
                                 restrictGlobalScopeLinkToProject, analysisProcedureListenerHolder);
+        setInitialAnalysisProcedureCriteriaAndReset();
         return viewer;
     }
 
+    /**
+     * The first time when the grid is shown, we set the initial analysis procedure. Later on the
+     * user choice is kept.
+     */
+    private void setInitialAnalysisProcedureCriteriaAndReset()
+    {
+        if (initialAnalysisProcedureCriteriaOrNull != null)
+        {
+            analysisProcedureListenerHolder.getAnalysisProcedureListener()
+                    .analysisProcedureSelected(initialAnalysisProcedureCriteriaOrNull);
+            initialAnalysisProcedureCriteriaOrNull = null;
+        }
+    }
+
     @Override
     protected IDisposableComponent createDisposableContent()
     {
-- 
GitLab