diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractAsyncCallback.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractAsyncCallback.java index 5efa26acd8825ca5d415a383ce35dcb90c9b6a7f..08512daae4407a7783a7c957aa1464b3841a8363 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractAsyncCallback.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractAsyncCallback.java @@ -230,7 +230,7 @@ public abstract class AbstractAsyncCallback<T> implements AsyncCallback<T> } if (caught instanceof InvalidSessionException) { - showSessionTerminated(msg); + handleSessionTerminated(msg); } else { callbackListener.onFailureOf(viewContext, this, msg, caught); @@ -253,6 +253,25 @@ public abstract class AbstractAsyncCallback<T> implements AsyncCallback<T> } } + private void refreshPageInBrowser() + { + if (viewContext != null) + { + viewContext.getPageController().reload(true); + } + } + + private void handleSessionTerminated(String msg) + { + if (viewContext.isSimpleOrEmbeddedMode()) + { + refreshPageInBrowser(); + } else + { + showSessionTerminated(msg); + } + } + private void showSessionTerminated(String msg) { Dialog dialog = new Dialog(); @@ -269,10 +288,9 @@ public abstract class AbstractAsyncCallback<T> implements AsyncCallback<T> @Override public void windowHide(WindowEvent we) { - if (viewContext != null && reloadWhenSessionTerminated) + if (reloadWhenSessionTerminated) { - final IPageController pageController = viewContext.getPageController(); - pageController.reload(true); + refreshPageInBrowser(); } } }); 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 d2c0ccfea3ffd1ebd39c7f03512f2d523d6cfa22..ee9b77ecfadf53a0ce257c8422c3cc4ca6d2ff1a 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 @@ -96,14 +96,16 @@ public class Client implements EntryPoint, ValueChangeHandler<String> // // IPageController // - public final void reload(final boolean logout) { if (logout) { - initializeControllers(openUrlController); + // refresh the entire page + Window.Location.reload(); + } else + { + onModuleLoad(); } - onModuleLoad(); } }; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/user/action/LogoutCallback.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/user/action/LogoutCallback.java index d9b0944b78680409c87b6087f115d3225650081d..e6c5ff87425e927f323466fb9d1b8a6220128b31 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/user/action/LogoutCallback.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/menu/user/action/LogoutCallback.java @@ -17,7 +17,6 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.menu.user.action; import com.google.gwt.user.client.History; -import com.google.gwt.user.client.Window; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; @@ -42,6 +41,6 @@ final class LogoutCallback extends AbstractAsyncCallback<Void> { History.newItem(""); // clears history token in URL GWTUtils.removeConfirmExitMessage(); - Window.Location.reload(); + viewContext.getPageController().reload(true); } } \ No newline at end of file