Package org.appfuse.webapp.client.ui.login

Source Code of org.appfuse.webapp.client.ui.login.LoginViewImpl$Binder

/**
*
*/
package org.appfuse.webapp.client.ui.login;

import org.appfuse.webapp.client.application.ApplicationResources;
import org.appfuse.webapp.client.ui.users.signUp.SignUpPlace;

import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.CheckBox;
import com.github.gwtbootstrap.client.ui.PasswordTextBox;
import com.github.gwtbootstrap.client.ui.TextBox;
import com.github.gwtbootstrap.client.ui.base.AlertBase;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.editor.client.Editor;
import com.google.gwt.editor.client.EditorDriver;
import com.google.gwt.editor.client.SimpleBeanEditorDriver;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyDownEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;

/**
* @author ivangsa
*
*/
public class LoginViewImpl extends Composite implements LoginView, Editor<LoginView.LoginDetails> {

    interface Binder extends UiBinder<Widget, LoginViewImpl> {
    }

    private static Binder uiBinder = GWT.create(Binder.class);

    interface Driver extends SimpleBeanEditorDriver<LoginView.LoginDetails, LoginViewImpl> {
    }

    private final Driver driver = GWT.create(Driver.class);

    ApplicationResources i18n = GWT.create(ApplicationResources.class);

    private Delegate delegate;

    @UiField
    SimplePanel messages;

    @UiField
    TextBox username;
    @UiField
    PasswordTextBox password;

    @UiField
    Widget rememberMeControl;
    @UiField
    CheckBox rememberMe;

    @UiField
    Button loginButton;

    @UiField
    Element signupParaElement;
    @UiField
    Element passwordHintParaElement;
    @UiField
    Element requestRecoveryTokenElement;

    /**
     *
     */
    public LoginViewImpl() {
        super();
        initWidget(uiBinder.createAndBindUi(this));
        driver.initialize(this);

        username.getElement().setAttribute("required", "required");
        username.getElement().setAttribute("autofocus", "autofocus");
        password.getElement().setAttribute("required", "required");

        //
        signupParaElement.setInnerHTML(i18n.login_signup("#" + SignUpPlace.PREFIX + ":"));

        final HTMLPanel passwordHintHtml = new HTMLPanel(i18n.login_passwordHint());
        final NodeList<Element> anchors = passwordHintHtml.getElement().getElementsByTagName("a");
        final Element a = anchors.getItem(0);
        final Anchor link = new Anchor(a.getInnerHTML());
        link.getElement().setId("signUpLink");
        link.addClickHandler(new ClickHandler() {

            @Override
            public void onClick(final ClickEvent event) {
                delegate.onPasswordHintClick();
            }
        });
        passwordHintHtml.addAndReplaceElement(link, a);
        try {// fails on dev mode..
            HTMLPanel.wrap(passwordHintParaElement).add(passwordHintHtml);
        } catch (final Throwable e) {
            e.printStackTrace();
        }

        final HTMLPanel passwordRecoveryParaHtml = new HTMLPanel(i18n.updatePassword_requestRecoveryTokenLink());
        final Element passwordRecoveryA = passwordRecoveryParaHtml.getElement().getElementsByTagName("a").getItem(0);
        final Anchor passwordRecoveryLink = new Anchor(passwordRecoveryA.getInnerHTML());
        passwordRecoveryLink.getElement().setId("requestRecoveryTokenLink");
        passwordRecoveryLink.addClickHandler(new ClickHandler() {

            @Override
            public void onClick(final ClickEvent event) {
                delegate.onRequestPasswordRecoveryClick();
            }
        });
        passwordRecoveryParaHtml.addAndReplaceElement(passwordRecoveryLink, passwordRecoveryA);

        try {// fails on dev mode..
            HTMLPanel.wrap(requestRecoveryTokenElement).add(passwordRecoveryParaHtml);
        } catch (final Throwable e) {
            e.printStackTrace();
        }

    }

    @Override
    public void setDelegate(final Delegate delegate) {
        driver.edit(new LoginDetails());
        this.delegate = delegate;
    }

    @Override
    public void setMessage(final AlertBase alert) {
        messages.clear();
        messages.add(alert);
    }

    @UiHandler("loginButton")
    void onLoginClick(final ClickEvent event) {
        delegate.onLoginClick();
    }

    @UiHandler({ "username", "password" })
    void defaultAction(final KeyDownEvent event) {
        if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
            delegate.onLoginClick();
        }
    }

    @Override
    public EditorDriver<LoginView.LoginDetails> getEditorDriver() {
        return driver;
    }

    @Override
    public void setRememberMeEnabled(final boolean rememberMeEnabled) {
        rememberMeControl.setVisible(rememberMeEnabled);
    }

    @Override
    public void setWaiting(final boolean wait) {
        loginButton.setEnabled(!wait);
    }
}

TOP

Related Classes of org.appfuse.webapp.client.ui.login.LoginViewImpl$Binder

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.