From f15108dca46eebd5e626b36dc881c53a3fe96a55 Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Thu, 16 Sep 2010 11:40:08 +0000
Subject: [PATCH] [LMS-1597] change page title when accessing detail view of an
 entity in simple view mode

SVN: 17864
---
 .../client/application/AbstractPluginViewContext.java  |  5 +++++
 .../generic/client/web/client/application/Client.java  |  7 ++++++-
 .../web/client/application/CommonViewContext.java      | 10 +++++++++-
 .../client/web/client/application/IViewContext.java    |  2 ++
 .../ui/listener/OpenEntityDetailsTabAction.java        |  9 +++++++++
 5 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractPluginViewContext.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractPluginViewContext.java
index a951d4fcf51..318f2ee6987 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractPluginViewContext.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractPluginViewContext.java
@@ -102,6 +102,11 @@ public abstract class AbstractPluginViewContext<T extends IClientServiceAsync> i
         return commonViewContext.getPageController();
     }
 
+    public final String getBasicPageTitle()
+    {
+        return commonViewContext.getBasicPageTitle();
+    }
+
     public final IClientPluginFactoryProvider getClientPluginFactoryProvider()
     {
         return commonViewContext.getClientPluginFactoryProvider();
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java
index 59d2b57a9ac..a349fec00a0 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java
@@ -103,12 +103,17 @@ public class Client implements EntryPoint, ValueChangeHandler<String>
 
         CommonViewContext commonContext =
                 new CommonViewContext(service, imageBundle, pageController, isLoggingEnabled(),
-                        isSimpleMode());
+                        isSimpleMode(), getPageTitle());
         commonContext.setClientPluginFactoryProvider(createPluginFactoryProvider(commonContext));
         initializeLocatorHandlerRegistry(commonContext.getLocatorResolverRegistry(), commonContext);
         return commonContext;
     }
 
+    private String getPageTitle()
+    {
+        return Window.getTitle();
+    }
+
     private boolean isSimpleMode()
     {
         String viewModeParameter = Window.Location.getParameter(BasicConstant.VIEW_MODE_KEY);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/CommonViewContext.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/CommonViewContext.java
index 83feafe66f0..b7e179e2013 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/CommonViewContext.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/CommonViewContext.java
@@ -79,14 +79,17 @@ public final class CommonViewContext implements IViewContext<ICommonClientServic
 
     private final IProfilingTable profilingTable;
 
+    private final String basicPageTitle;
+
     CommonViewContext(final ICommonClientServiceAsync service,
             final IGenericImageBundle imageBundle, final IPageController pageController,
-            boolean isLoggingEnabled, boolean isSimpleMode)
+            boolean isLoggingEnabled, boolean isSimpleMode, String basicPageTitle)
     {
         this.service = service;
         this.imageBundle = imageBundle;
         this.pageController = pageController;
         this.profilingTable = ProfilingTable.create(isLoggingEnabled);
+        this.basicPageTitle = basicPageTitle;
         messageProvider = new CompositeMessageProvider();
         messageProvider.add(new DictonaryBasedMessageProvider(TECHNOLOGY_NAME));
         viewModel = new GenericViewModel();
@@ -162,6 +165,11 @@ public final class CommonViewContext implements IViewContext<ICommonClientServic
         return pageController;
     }
 
+    public final String getBasicPageTitle()
+    {
+        return basicPageTitle;
+    }
+
     public final IClientPluginFactoryProvider getClientPluginFactoryProvider()
     {
         return clientPluginFactoryProvider;
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/IViewContext.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/IViewContext.java
index 4eafa948e3b..599de2071c6 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/IViewContext.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/IViewContext.java
@@ -48,6 +48,8 @@ public interface IViewContext<T extends IClientServiceAsync> extends IMessagePro
 
     public IPageController getPageController();
 
+    public String getBasicPageTitle();
+
     public IClientPluginFactoryProvider getClientPluginFactoryProvider();
 
     public ICommonClientServiceAsync getCommonService();
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabAction.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabAction.java
index 8b0167072d9..eb16af2c500 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabAction.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/listener/OpenEntityDetailsTabAction.java
@@ -16,6 +16,8 @@
 
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener;
 
+import com.google.gwt.user.client.Window;
+
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper;
@@ -66,6 +68,13 @@ public final class OpenEntityDetailsTabAction implements IDelegatedAction
         final AbstractTabItemFactory tabView =
                 createClientPlugin.createEntityViewer(entityType, entity);
         tabView.setInBackground(keyPressed);
+
+        if (viewContext.isSimpleMode())
+        {
+            Window.setTitle(entityKind + ": " + entity.getCode() + " [" + entityType + "]" + " - "
+                    + viewContext.getBasicPageTitle());
+        }
+
         DispatcherHelper.dispatchNaviEvent(tabView);
     }
 }
-- 
GitLab