From bead2a851c45617cef51eb120a15b3531a25566e Mon Sep 17 00:00:00 2001
From: jakubs <jakubs>
Date: Fri, 25 Oct 2013 12:28:04 +0000
Subject: [PATCH] SP-972  BIS-566 SOB-127 Improve behavior of resolution
 dropdown

SVN: 30021
---
 .../detailviewers/ChannelChooser.java         | 11 ++++--
 .../detailviewers/DefaultChannelState.java    |  8 ++---
 .../detailviewers/IDefaultChannelState.java   |  4 +--
 .../LogicalImageDatasetSection.java           |  2 +-
 .../detailviewers/LogicalImageLayouter.java   |  2 +-
 .../detailviewers/LogicalImageViewer.java     | 34 +++++++++----------
 .../detailviewers/TileContentDialog.java      |  2 +-
 .../detailviewers/WellContentDialog.java      |  2 +-
 8 files changed, 35 insertions(+), 30 deletions(-)

diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ChannelChooser.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ChannelChooser.java
index 9b42e61d8b8..9bcb6e1e6b6 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ChannelChooser.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ChannelChooser.java
@@ -99,8 +99,12 @@ class ChannelChooser
 
     private Map<String, IntensityRange> rangesOrNull;
 
+    // window id is the string identifying the kind of a view (either a tile view or well view)
+    // It is used as a key to store selected image resolutions different for tile and well view
+    private final String windowId;
+
     public ChannelChooser(LogicalImageReference basicImage, IChanneledViewerFactory viewerFactory,
-            IDefaultChannelState defaultChannelState)
+            IDefaultChannelState defaultChannelState, String windowId)
     {
         this.basicImage = basicImage;
         this.viewerFactory = viewerFactory;
@@ -114,6 +118,7 @@ class ChannelChooser
         this.rangesOrNull = tryGetInitialIntensityRange(defaultChannelState, basicChannelCodes);
         this.defaultChannelState = defaultChannelState;
         this.selectedOverlayChannels = new HashSet<ImageDatasetChannel>();
+        this.windowId = windowId;
     }
 
     /** Refreshes the displayed images, but not the rest of the GUI */
@@ -359,13 +364,13 @@ class ChannelChooser
         {
             resolutionChooser =
                     new ResolutionChooser(viewContext, resolutions,
-                            defaultChannelState.tryGetDefaultResolution());
+                            defaultChannelState.tryGetDefaultResolution(windowId));
             resolutionChooser.addResolutionChangedListener(new Listener<BaseEvent>()
                 {
                     @Override
                     public void handleEvent(BaseEvent be)
                     {
-                        defaultChannelState.setDefaultResolution(resolutionChooser.getResolution());
+                        defaultChannelState.setDefaultResolution(resolutionChooser.getResolution(), windowId);
                         refresh();
                     }
                 });
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/DefaultChannelState.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/DefaultChannelState.java
index 921561aebd4..d9c8de3baa4 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/DefaultChannelState.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/DefaultChannelState.java
@@ -75,15 +75,15 @@ public class DefaultChannelState implements IDefaultChannelState
     }
 
     @Override
-    public ImageResolution tryGetDefaultResolution()
+    public ImageResolution tryGetDefaultResolution(String windowId)
     {
-        return getDisplaySettingManager().getDefaultResolution(displayTypeId);
+        return getDisplaySettingManager().getDefaultResolution(displayTypeId + windowId);
     }
 
     @Override
-    public void setDefaultResolution(ImageResolution resolution)
+    public void setDefaultResolution(ImageResolution resolution, String windowId)
     {
-        getDisplaySettingManager().setDefaultResolution(displayTypeId, resolution);
+        getDisplaySettingManager().setDefaultResolution(displayTypeId + windowId, resolution);
     }
 
     @Override
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/IDefaultChannelState.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/IDefaultChannelState.java
index d91f1ed3401..37f8c070165 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/IDefaultChannelState.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/IDefaultChannelState.java
@@ -20,9 +20,9 @@ public interface IDefaultChannelState
 
     public String tryGetDefaultTransformation(String channel);
 
-    public ImageResolution tryGetDefaultResolution();
+    public ImageResolution tryGetDefaultResolution(String windowId);
 
-    public void setDefaultResolution(ImageResolution resolution);
+    public void setDefaultResolution(ImageResolution resolution, String windowId);
 
     public void setIntensityRange(String channel, IntensityRange intensityRange);
 
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageDatasetSection.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageDatasetSection.java
index 4ba7f8af9a4..cd38ab8589b 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageDatasetSection.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageDatasetSection.java
@@ -96,7 +96,7 @@ public class LogicalImageDatasetSection extends TabContent
                 new LogicalImageViewer(logicalImageReference,
                         LogicalImageDatasetSection.this.getViewContext(), identifier, experimentPermId,
                         true);
-        Widget viewerWidget = viewer.getViewerWidget(imageInfo.getChannelStacks());
+        Widget viewerWidget = viewer.getViewerWidget(imageInfo.getChannelStacks(), "LogicalImageDatasetSection");
         return viewerWidget;
     }
 }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageLayouter.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageLayouter.java
index d42575d9aa6..b460cd8b6dc 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageLayouter.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageLayouter.java
@@ -53,7 +53,7 @@ class LogicalImageLayouter extends LayoutContainer implements IDatasetImagesRefe
         LogicalImageViewer viewer =
                 new LogicalImageViewer(logicalImageReference, viewContext,
                         imageInfo.getExperimentIdentifier(), imageInfo.getExperimentPermId(), true);
-        return viewer.getViewerWidget();
+        return viewer.getViewerWidget("LogicalImageLayouter");
     }
 
     public List<ImageDatasetEnrichedReference> getDatasetImagesReferences()
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageViewer.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageViewer.java
index 8accfac0354..de6e2b43c69 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageViewer.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageViewer.java
@@ -108,34 +108,33 @@ public class LogicalImageViewer
     }
 
     /** Creates a widget which displays a series of images. */
-    public Widget getViewerWidget(List<ImageChannelStack> channelStackImages)
+    public Widget getViewerWidget(List<ImageChannelStack> channelStackImages, String windowId)
     {
         if (logicalImageReference.isMultidimensional())
         {
-            return createSeriesImageWidget(channelStackImages);
+            return createSeriesImageWidget(channelStackImages, windowId + "series");
         } else
         {
-            return getStaticImageWidget();
+            return getStaticImageWidget(windowId + "static");
         }
     }
 
     /**
-     * Creates a widget which displays a series of images. If there are image series fetches
-     * information about them from the server.
+     * Creates a widget which displays a series of images. If there are image series fetches information about them from the server.
      */
-    public Widget getViewerWidget()
+    public Widget getViewerWidget(String windowId)
     {
         if (logicalImageReference.isMultidimensional())
         {
-            return getSeriesImageWidget();
+            return getSeriesImageWidget(windowId + "series");
         } else
         {
-            return getStaticImageWidget();
+            return getStaticImageWidget(windowId + "static");
         }
     }
 
     /** Creates a widget which displays a series of images. */
-    private Widget getSeriesImageWidget()
+    private Widget getSeriesImageWidget(final String windowId)
     {
         final LayoutContainer container = new LayoutContainer();
         container.add(new Text(viewContext.getMessage(ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict.LOAD_IN_PROGRESS)));
@@ -156,7 +155,7 @@ public class LogicalImageViewer
                                     imageInfo.getChannelStacks();
                             if (channelStackImages.size() > 0)
                             {
-                                container.add(createSeriesImageWidget(channelStackImages));
+                                container.add(createSeriesImageWidget(channelStackImages, windowId));
                             } else
                             {
                                 container.add(new Text(NO_IMAGES_AVAILABLE_MSG));
@@ -167,7 +166,7 @@ public class LogicalImageViewer
         return container;
     }
 
-    private Widget createSeriesImageWidget(final List<ImageChannelStack> channelStackImages)
+    private Widget createSeriesImageWidget(final List<ImageChannelStack> channelStackImages, String windowId)
     {
         final Button adjustColorsButton = createAdjustColorsButton();
         final IChanneledViewerFactory viewerFactory = new IChanneledViewerFactory()
@@ -205,7 +204,7 @@ public class LogicalImageViewer
                     return new LogicalImageSeriesGrid(initializer);
                 }
             };
-        return createViewerWithChannelChooser(viewerFactory, adjustColorsButton);
+        return createViewerWithChannelChooser(viewerFactory, adjustColorsButton, windowId);
     }
 
     private List<ImageChannelStack> filterChannelStackImages(
@@ -233,7 +232,7 @@ public class LogicalImageViewer
     }
 
     private LayoutContainer createViewerWithChannelChooser(
-            final IChanneledViewerFactory viewerFactory, final Button adjustColorsButton)
+            final IChanneledViewerFactory viewerFactory, final Button adjustColorsButton, final String windowId)
     {
         final LayoutContainer container = createMainEmptyContainer();
 
@@ -244,7 +243,7 @@ public class LogicalImageViewer
         }
 
         final ChannelChooser channelChooser =
-                new ChannelChooser(logicalImageReference, viewerFactory, channelState);
+                new ChannelChooser(logicalImageReference, viewerFactory, channelState, windowId);
         channelChooser.addViewerTo(container, viewContext, new AsyncCallback<Void>()
             {
                 @Override
@@ -256,7 +255,8 @@ public class LogicalImageViewer
                         buttonToolbar.setLayout(new ColumnLayout());
                         buttonToolbar.add(adjustColorsButton);
                         Button refreshButton =
-                                new Button(viewContext.getMessage(ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict.BUTTON_REFRESH),
+                                new Button(
+                                        viewContext.getMessage(ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict.BUTTON_REFRESH),
                                         new SelectionListener<ButtonEvent>()
                                             {
                                                 @Override
@@ -333,7 +333,7 @@ public class LogicalImageViewer
     }
 
     /** Creates a widget which displays images which has no series. */
-    private Widget getStaticImageWidget()
+    private Widget getStaticImageWidget(String windowId)
     {
 
         final Button adjustColorsButton = createAdjustColorsButton();
@@ -366,7 +366,7 @@ public class LogicalImageViewer
                 }
 
             };
-        return createViewerWithChannelChooser(viewerFactory, adjustColorsButton);
+        return createViewerWithChannelChooser(viewerFactory, adjustColorsButton, windowId);
     }
 
     private String createDisplayTypeId()
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/TileContentDialog.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/TileContentDialog.java
index f7aa8cf9837..65d290f4d13 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/TileContentDialog.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/TileContentDialog.java
@@ -51,7 +51,7 @@ public class TileContentDialog extends ImageDialog
                         experimentPermId, false);
 
         final Grid grid = new Grid(1, 1);
-        grid.setWidget(0, 0, imageViewer.getViewerWidget());
+        grid.setWidget(0, 0, imageViewer.getViewerWidget("TileContentDialog"));
         add(grid);
 
         imageViewer.setLogicalImageRefreshHandler(new LogicalImageRefreshHandler()
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java
index 875a0a465d3..d0bef3c994c 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java
@@ -114,7 +114,7 @@ public class WellContentDialog extends ImageDialog
             LogicalImageViewer viewer = contentDialog.createImageViewer();
 
             final Grid grid = new Grid(1, 1);
-            grid.setWidget(0, 0, viewer.getViewerWidget());
+            grid.setWidget(0, 0, viewer.getViewerWidget("WellContentDialog"));
             contentDialog.add(grid);
 
             viewer.setLogicalImageRefreshHandler(new LogicalImageRefreshHandler()
-- 
GitLab