Package lv.odylab.evemanage.client.presenter

Source Code of lv.odylab.evemanage.client.presenter.LoginPresenter

package lv.odylab.evemanage.client.presenter;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.i18n.client.LocaleInfo;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
import lv.odylab.evemanage.client.EveManageConstants;
import lv.odylab.evemanage.client.EveManageErrorConstants;
import lv.odylab.evemanage.client.EveManageMessages;
import lv.odylab.evemanage.client.event.LoginActionCallback;
import lv.odylab.evemanage.client.event.error.AsyncLoadingErrorEvent;
import lv.odylab.evemanage.client.event.error.AsyncLoadingErrorEventHandler;
import lv.odylab.evemanage.client.event.error.LoginErrorEvent;
import lv.odylab.evemanage.client.event.error.LoginErrorEventHandler;
import lv.odylab.evemanage.client.event.login.LoginEvent;
import lv.odylab.evemanage.client.event.login.LoginEventHandler;
import lv.odylab.evemanage.client.rpc.EveManageRemoteServiceAsync;
import lv.odylab.evemanage.client.rpc.action.login.LoginAction;
import lv.odylab.evemanage.client.rpc.action.login.LoginActionResponse;
import lv.odylab.evemanage.client.rpc.dto.user.LoginDto;
import lv.odylab.evemanage.client.tracking.TrackingManager;

public class LoginPresenter implements Presenter, LoginErrorEventHandler, AsyncLoadingErrorEventHandler, LoginEventHandler {

    public interface Display extends AttachableDisplay {

        Widget getSpinnerImage();

        HasText getUserLoginLabel();

        HasText getBannerLabel();

        Anchor getSignInSignOutAnchor();

        Anchor getRussianAnchor();

        Anchor getEnglishAnchor();

        void displayMenu();

        void displayBanner();

    }

    private EventBus eventBus;
    private TrackingManager trackingManager;
    private EveManageRemoteServiceAsync rpcService;
    private EveManageConstants constants;
    private EveManageMessages messages;
    private EveManageErrorConstants errorConstants;
    private Display display;

    @Inject
    public LoginPresenter(EventBus eventBus, TrackingManager trackingManager, EveManageRemoteServiceAsync rpcService, EveManageConstants constants, EveManageMessages messages, EveManageErrorConstants errorConstants, Display display) {
        this.eventBus = eventBus;
        this.trackingManager = trackingManager;
        this.rpcService = rpcService;
        this.constants = constants;
        this.errorConstants = errorConstants;
        this.messages = messages;
        this.display = display;

        eventBus.addHandler(LoginEvent.TYPE, this);
        eventBus.addHandler(LoginErrorEvent.TYPE, this);
        eventBus.addHandler(AsyncLoadingErrorEvent.TYPE, this);
    }

    @Override
    public void onLoginError(LoginErrorEvent event) {
        display.getBannerLabel().setText(errorConstants.loginFailed());
        display.displayBanner();
        display.getSpinnerImage().setVisible(false);
    }

    @Override
    public void onAsyncLoadingError(AsyncLoadingErrorEvent event) {
        display.getBannerLabel().setText(errorConstants.failedLoading());
        display.displayBanner();
        display.getSpinnerImage().setVisible(false);
    }

    @Override
    public void go(HasWidgets container) {
        container.clear();
        display.attach(container);
        doLogin();
    }

    @Override
    public void onLogin(LoginEvent event) {
        LoginDto loginDto = event.getLoginDto();
        if (loginDto.isLoggedIn()) {
            display.getUserLoginLabel().setText(loginDto.getEmailAddress());
            display.getSignInSignOutAnchor().setHref(loginDto.getLogoutUrl());
            display.getSignInSignOutAnchor().setText(messages.signOut());
        } else {
            display.getUserLoginLabel().setText(messages.notLoggedIn());
            display.getSignInSignOutAnchor().setHref(loginDto.getLoginUrl());
            display.getSignInSignOutAnchor().setText(messages.signIn());
        }
        LocaleInfo currentLocale = LocaleInfo.getCurrentLocale();
        if ("ru".equals(currentLocale.getLocaleName())) {
            display.getEnglishAnchor().setHref(loginDto.getEnglishUrl());
            display.getEnglishAnchor().setVisible(true);
        } else {
            display.getRussianAnchor().setHref(loginDto.getRussianUrl());
            display.getRussianAnchor().setVisible(true);
        }
        display.displayMenu();
        if (loginDto.getBannerMessage() != null) {
            display.getBannerLabel().setText(loginDto.getBannerMessage());
            display.displayBanner();
        }
        display.getSpinnerImage().setVisible(false);
    }

    private void doLogin() {
        LoginAction action = new LoginAction();
        action.setRequestUri(GWT.getHostPageBaseURL());
        action.setLocale(LocaleInfo.getCurrentLocale().getLocaleName());
        display.getSpinnerImage().setVisible(true);
        rpcService.execute(action, new LoginActionCallback<LoginActionResponse>(eventBus, trackingManager, constants) {
            @Override
            public void onSuccess(LoginActionResponse response) {
                eventBus.fireEvent(new LoginEvent(response));
            }

            @Override
            public void onFailure(Throwable throwable) {
                display.getSpinnerImage().setVisible(false);
                super.onFailure(throwable);
            }
        });
    }
}
TOP

Related Classes of lv.odylab.evemanage.client.presenter.LoginPresenter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.