From a8c3332dba3d925e0a4c63931d604e372f2fe5aa Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 17 Aug 2017 14:21:29 +0200 Subject: [PATCH] Bug 4228: Refactored LoginHintPopup for better recycling and implemented a specific subclass for Home desktop --- .../desktop/app/DesktopLoginHintPopup.java | 16 ++++++++++++++++ ...bletAndDesktopApplicationClientFactory.java | 16 +--------------- .../authentication/login/LoginHintPopup.java | 18 ++++++++++++------ 3 files changed, 29 insertions(+), 21 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopLoginHintPopup.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopLoginHintPopup.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopLoginHintPopup.java new file mode 100644 index 00000000000..4340f3bba9a --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopLoginHintPopup.java @@ -0,0 +1,16 @@ +package com.sap.sailing.gwt.home.desktop.app; + +import com.sap.sse.security.ui.authentication.AuthenticationManager; +import com.sap.sse.security.ui.authentication.UserManagementResources; +import com.sap.sse.security.ui.authentication.UserManagementResources.LocalCss; +import com.sap.sse.security.ui.authentication.login.LoginHintPopup; + +public class DesktopLoginHintPopup extends LoginHintPopup { + private static final LocalCss LOCAL_CSS = UserManagementResources.INSTANCE.css(); + + public DesktopLoginHintPopup(AuthenticationManager authenticationManager, DesktopPlacesNavigator placesNavigator) { + super(authenticationManager, () -> placesNavigator.goToPlace(placesNavigator.getMoreLoginInfo())); + this.addStyleName(LOCAL_CSS.flyover_small_hidden()); + this.addStyleName(LOCAL_CSS.flyover_position_grid()); + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java index a2ca7d86af1..88c9af0a6dc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java @@ -37,7 +37,6 @@ import com.sap.sse.security.ui.authentication.AuthenticationManagerImpl; import com.sap.sse.security.ui.authentication.AuthenticationPlaceManagementController; import com.sap.sse.security.ui.authentication.WrappedPlaceManagementController; import com.sap.sse.security.ui.authentication.info.LoggedInUserInfoPlace; -import com.sap.sse.security.ui.authentication.login.LoginHintPopup; import com.sap.sse.security.ui.authentication.view.FlyoutAuthenticationPresenter; import com.sap.sse.security.ui.client.i18n.StringMessages; @@ -46,7 +45,6 @@ public class TabletAndDesktopApplicationClientFactory extends AbstractApplicatio private final SailingDispatchSystem dispatch = new SailingDispatchSystemImpl(); private final WrappedPlaceManagementController userManagementWizardController; private final AuthenticationManager authenticationManager; - private LoginHintPopup loginPopup; public TabletAndDesktopApplicationClientFactory(boolean isStandaloneServer) { this(new SimpleEventBus(), isStandaloneServer); @@ -81,19 +79,7 @@ public class TabletAndDesktopApplicationClientFactory extends AbstractApplicatio new FlyoutAuthenticationPresenter(userManagementDisplay, getTopLevelView().getAuthenticationMenuView(), userManagementWizardController, eventBus, authenticationManager.getAuthenticationContext()); - authenticationManager.checkNewUserPopup(() -> { - if (loginPopup != null) { - loginPopup.hide(); - } - }, dismissCallback -> { - loginPopup = new LoginHintPopup(() -> { - dismissCallback.run(); - }, () -> { - dismissCallback.run(); - placesNavigator.goToPlace(placesNavigator.getMoreLoginInfo()); - }); - loginPopup.show(); - }); + new DesktopLoginHintPopup(authenticationManager, placesNavigator); } @Override diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/authentication/login/LoginHintPopup.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/authentication/login/LoginHintPopup.java index bdc076495b9..4c94cce30ee 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/authentication/login/LoginHintPopup.java +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/authentication/login/LoginHintPopup.java @@ -2,26 +2,27 @@ package com.sap.sse.security.ui.authentication.login; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.SimplePanel; +import com.sap.sse.security.ui.authentication.AuthenticationManager; import com.sap.sse.security.ui.authentication.UserManagementResources; import com.sap.sse.security.ui.authentication.UserManagementResources.LocalCss; public class LoginHintPopup extends PopupPanel { private static final LocalCss LOCAL_CSS = UserManagementResources.INSTANCE.css(); private LoginHintContent lpop; + private Runnable dismissCallback; - public LoginHintPopup(final Runnable onDismiss, final Runnable onMoreInfo) { + public LoginHintPopup(AuthenticationManager authenticationManager, Runnable moreInfoCallback) { LOCAL_CSS.ensureInjected(); - this.addStyleName(LOCAL_CSS.flyover()); - this.addStyleName(LOCAL_CSS.flyover_small_hidden()); - this.addStyleName(LOCAL_CSS.flyover_position_grid()); + this.setStyleName(LOCAL_CSS.flyover()); ensureDebugId("loginHintPopup"); setAutoHideEnabled(true); lpop = new LoginHintContent(() -> { hide(); - onDismiss.run(); + dismissCallback.run(); }, () -> { hide(); - onMoreInfo.run(); + dismissCallback.run(); + moreInfoCallback.run(); }); lpop.addStyleName(LOCAL_CSS.flyover_content()); @@ -29,6 +30,11 @@ public class LoginHintPopup extends PopupPanel { wrapper.addStyleName(LOCAL_CSS.flyover_content_wrapper()); wrapper.add(lpop); add(wrapper); + + authenticationManager.checkNewUserPopup(this::hide, dismissCallback -> { + this.dismissCallback = dismissCallback; + show(); + }); } @Override