com.konakart.client.LoginBody.java Source code

Java tutorial

Introduction

Here is the source code for com.konakart.client.LoginBody.java

Source

//
// (c) 2006 DS Data Systems UK Ltd, All rights reserved.
//
// DS Data Systems and KonaKart and their respective logos, are 
// trademarks of DS Data Systems UK Ltd. All rights reserved.
//
// The information in this document is free software; you can redistribute 
// it and/or modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
// 
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
//
package com.konakart.client;

import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.TextBoxBase;
import com.google.gwt.user.client.ui.Widget;
import com.konakart.client.util.GWT_Validation;

/**
 * Login window
 */
public class LoginBody extends KKBaseWin {

    /*
     * Objects
     */

    /*
     * Widgets
     */
    private TextBox userTB;

    private PasswordTextBox passwordTB;

    private HTML forgotPasswordLink;

    /*
     * Labels
     */
    private String login_body_email = "login.body.email";

    private String login_body_password = "login.body.password";

    private String login_body_forgotten_password = "login.body.forgotten.password";

    private String login_body_login_error = "login.body.login.error";

    private String login_body_invalid_email = "login.body.invalid.email";

    private String forgotten_password_body_explanation1 = "forgotten.password.body.explanation1";

    private String forgotten_password_body_sentpw = "forgotten.password.body.sentpw";

    private String login_body_welcome_email = "login.body.welcome.email";

    private String login_body_welcome = "login.body.welcome";

    private String forgotten_password_body_forgotten = "forgotten.password.body.forgotten";

    private String one_page_checkout_enter_email = "one.page.checkout.enter.email";

    private String one_page_checkout_enter_password_login = "one.page.checkout.enter.password.login";

    private String email_welcome_subject = "email.welcome.subject";

    /*
     * Validation
     */

    // Mins
    private int ENTRY_EMAIL_ADDRESS_MIN_LENGTH = 1;

    // Max
    private int ENTRY_EMAIL_ADDRESS_MAX_LENGTH = 96;

    /**
     * Constructor
     * 
     * @param kk
     */
    public LoginBody(Konakart kk) {
        setKK(kk);

        // Get the parameters from the JSP
        getParameters("kkLabelForm2");

        // Initialise the widgets
        initWidgets();

    }

    /*
     * ----- Callbacks
     */

    AsyncCallback<?> isEmailValidCallback = new KKCallback(this) {
        public void onSuccess(Object result) {

            Boolean isValid = (Boolean) result;

            if (isValid.booleanValue()) {
                getKK().controller(Konakart.EMAIL_VALID);
            } else {
                getKK().controller(Konakart.EMAIL_NOT_VALID);
            }
        }
    };

    /*
     * ----- End of Callbacks
     */

    /**
     * Creates the panel to ask for the email
     */
    protected void renderGetEmail() {
        // Remove the current panel
        removeFromDom();

        // Get the container panel
        HTMLPanel containerPanel = getContainerPanel(1);

        // Get the header
        Widget header = renderHeader(login_body_welcome_email, "table_background_login.gif",
                login_body_welcome_email);

        // Add the header to the container panel
        containerPanel.add(header, HEADER_ID);

        // Create the body
        FlexTable ft0 = getTable(0, "100%", 0, 0, "body-content-tab");

        int row = 0;

        ft0.getFlexCellFormatter().setColSpan(row, 0, 2);
        ft0.setWidget(row++, 0, getVSpacer());

        ft0.getFlexCellFormatter().setColSpan(row, 0, 2);
        ft0.setHTML(row++, 0, "<b>" + one_page_checkout_enter_email + ":</b>");

        ft0.getFlexCellFormatter().setColSpan(row, 0, 2);
        ft0.setWidget(row++, 0, getVSpacer());

        ft0.setHTML(row, 0, "<b>" + login_body_email + ":</b>");
        ft0.setWidget(row++, 1, userTB);

        ft0.getFlexCellFormatter().setColSpan(row, 0, 2);
        ft0.setWidget(row++, 0, getVSpacer());

        ft0.getFlexCellFormatter().setColSpan(row, 0, 2);
        ft0.setWidget(row++, 0, errorFT);

        ft0.getFlexCellFormatter().setColSpan(row, 0, 2);
        ft0.setWidget(row++, 0, getVSpacer());

        containerPanel.add(ft0, BODY_ID);
        containerPanel.add(getButtons(2), BUTTON_ID);

        // Finally, add the outer panel to the RootPanel, so that it will be
        // displayed.
        addToDom(containerPanel);

    }

    /**
     * Creates the panel to ask for the password
     */
    protected void renderGetPassword() {
        // Remove the current panel
        removeFromDom();

        // Clear the password entry field
        passwordTB.setText("");

        // Get the container panel
        HTMLPanel containerPanel = getContainerPanel(1);

        // Get the header
        Widget header = renderHeader(login_body_welcome, "table_background_login.gif", login_body_welcome);

        // Add the header to the container panel
        containerPanel.add(header, HEADER_ID);

        // Create the body
        FlexTable ft0 = getTable(0, "100%", 0, 0, "body-content-tab");

        int row = 0;

        ft0.getFlexCellFormatter().setColSpan(row, 0, 2);
        ft0.setWidget(row++, 0, getVSpacer());

        ft0.getFlexCellFormatter().setColSpan(row, 0, 2);
        ft0.setWidget(row++, 0, successFT);

        ft0.getFlexCellFormatter().setColSpan(row, 0, 2);
        ft0.setHTML(row++, 0, "<b>" + email_welcome_subject + " \"" + userTB.getText() + "\", "
                + one_page_checkout_enter_password_login + ":</b>");

        ft0.getFlexCellFormatter().setColSpan(row, 0, 2);
        ft0.setWidget(row++, 0, getVSpacer());

        ft0.setHTML(row, 0, "<b>" + login_body_password + ":</b>");
        ft0.setWidget(row++, 1, passwordTB);

        ft0.getFlexCellFormatter().setColSpan(row, 0, 2);
        ft0.setWidget(row++, 0, getVSpacer());

        ft0.getFlexCellFormatter().setColSpan(row, 0, 2);
        ft0.setWidget(row++, 0, errorFT);

        ft0.getFlexCellFormatter().setColSpan(row, 0, 2);
        formatCell(ft0, row, 0, "smallText", null, "bottom", null);
        ft0.setWidget(row++, 0, forgotPasswordLink);

        containerPanel.add(ft0, BODY_ID);
        containerPanel.add(getButtons(2), BUTTON_ID);

        // Finally, add the outer panel to the RootPanel, so that it will be
        // displayed.
        addToDom(containerPanel);
    }

    /**
     * Creates the panel to ask to send the forgotten password
     */
    protected void renderForgotPassword() {
        // Remove the current panel
        removeFromDom();

        // Get the container panel
        HTMLPanel containerPanel = getContainerPanel(1);

        // Get the header
        Widget header = renderHeader(forgotten_password_body_forgotten, "table_background_password_forgotten.gif",
                forgotten_password_body_forgotten);

        // Add the header to the container panel
        containerPanel.add(header, HEADER_ID);

        // Create the body
        FlexTable ft0 = getTable(0, "100%", 0, 0, "body-content-tab");

        int row = 0;

        ft0.setWidget(row++, 0, getVSpacer());

        ft0.setHTML(row++, 0, forgotten_password_body_explanation1 + " <b>" + getUserName() + "</b>");

        ft0.getFlexCellFormatter().setColSpan(row, 0, 2);
        ft0.setWidget(row++, 0, getVSpacer());

        containerPanel.add(ft0, BODY_ID);
        containerPanel.add(getButtons(2), BUTTON_ID);

        // Finally, add the outer panel to the RootPanel, so that it will be
        // displayed.
        addToDom(containerPanel);
    }

    /**
     * Validate the user's email address *
     */
    protected void validateEmail() {

        String email = userTB.getText();

        if (email == null || email.length() == 0) {
            getKK().controller(Konakart.EMAIL_NOT_VALID);
            return;
        }

        if (GWT_Validation.validateText(userTB, new Integer(ENTRY_EMAIL_ADDRESS_MIN_LENGTH),
                new Integer(ENTRY_EMAIL_ADDRESS_MAX_LENGTH), login_body_email) == false) {
            getKK().controller(Konakart.EMAIL_NOT_VALID);
            return;
        }

        getKK().getMyKKGWTService().isEmailValid(email, isEmailValidCallback);

    }

    /**
     * Clears the success msg
     * 
     */
    protected void clearSuccessMsg() {
        clearTable(successFT);
    }

    /**
     * Initialise widgets to ensure that they are there for when the data arrives
     */
    protected void initWidgets() {

        super.initWidgets();

        userTB = new TextBox();
        initTextBox(userTB);

        passwordTB = new PasswordTextBox();
        initPasswordTextBox(passwordTB);

        forgotPasswordLink = new HTML("<a href='javascript:;'>" + login_body_forgotten_password + "</a>");
        forgotPasswordLink.setStyleName("smallText");
        initLink(forgotPasswordLink);
    }

    /**
     * Initialises the text box
     * 
     * @param textBox
     */
    private void initTextBox(TextBox textBox) {
        textBox.setTextAlignment(TextBoxBase.ALIGN_LEFT);
        textBox.setWidth("30em");
        textBox.addChangeHandler(new ChangeHandler() {
            public void onChange(ChangeEvent event) {
            }
        });
    }

    /**
     * Initialises the password text box
     * 
     * @param textBox
     */
    private void initPasswordTextBox(PasswordTextBox textBox) {
        textBox.setTextAlignment(TextBoxBase.ALIGN_LEFT);
        textBox.setWidth("30em");
        textBox.addChangeHandler(new ChangeHandler() {
            public void onChange(ChangeEvent event) {
            }
        });
    }

    /**
     * Initialises the link
     * 
     * @param button
     */
    private void initLink(HTML link) {
        link.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                Widget sender = (Widget) event.getSource();

                if (sender == forgotPasswordLink) {
                    getKK().controller(Konakart.FORGOT_PASSWORD);
                }
            }
        });
    }

    /**
     * Set attributes from hidden parameters in JSP
     */
    protected void setAttr(String name, String value) {
        if (name.equals("login.body.email")) {
            login_body_email = value;
        } else if (name.equals("login.body.password")) {
            login_body_password = value;
        } else if (name.equals("login.body.forgotten.password")) {
            login_body_forgotten_password = value;
        } else if (name.equals("login.body.login.error")) {
            login_body_login_error = value;
        } else if (name.equals("login.body.invalid.email")) {
            login_body_invalid_email = value;
        } else if (name.equals("forgotten.password.body.explanation1")) {
            forgotten_password_body_explanation1 = value;
        } else if (name.equals("forgotten.password.body.sentpw")) {
            forgotten_password_body_sentpw = value;
        } else if (name.equals("login.body.welcome.email")) {
            login_body_welcome_email = value;
        } else if (name.equals("login.body.welcome")) {
            login_body_welcome = value;
        } else if (name.equals("forgotten.password.body.forgotten")) {
            forgotten_password_body_forgotten = value;
        } else if (name.equals("one.page.checkout.enter.email")) {
            one_page_checkout_enter_email = value;
        } else if (name.equals("one.page.checkout.enter.password.login")) {
            one_page_checkout_enter_password_login = value;
        } else if (name.equals("email.welcome.subject")) {
            email_welcome_subject = value;
        } else if (name.equals("ENTRY_EMAIL_ADDRESS_MIN_LENGTH")) {
            ENTRY_EMAIL_ADDRESS_MIN_LENGTH = new Integer(value).intValue();
        }
    }

    /**
     * @return Returns the username
     */
    public String getUserName() {
        return userTB.getText();
    }

    /**
     * Sets the username
     * @param userName 
     */
    public void setUserName(String userName) {
        userTB.setText(userName);
    }

    /**
     * @return Returns the password
     */
    public String getPassword() {
        return passwordTB.getText();
    }

    /**
     * @return Returns the login_body_login_error.
     */
    public String getLogin_body_login_error() {
        return login_body_login_error;
    }

    /**
     * @return Returns the login_body_invalid_email.
     */
    public String getLogin_body_invalid_email() {
        return login_body_invalid_email;
    }

    /**
     * @return Returns the forgotten_password_body_sentpw.
     */
    public String getForgotten_password_body_sentpw() {
        return forgotten_password_body_sentpw;
    }

}