/* * Copyright (c) 2011 PonySDK * Owners: * Luciano Broussal <luciano.broussal AT gmail.com> * Mathieu Barbier <mathieu.barbier AT gmail.com> * Nicolas Ciaravola <nicolas.ciaravola.pro AT gmail.com> * * WebSite: * http://code.google.com/p/pony-sdk/ * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.ponysdk.impl.webapplication.login; import com.ponysdk.core.ui.basic.*; import com.ponysdk.core.ui.basic.event.PClickHandler; import com.ponysdk.core.ui.basic.event.PKeyUpHandler; import com.ponysdk.core.ui.i18n.PString; public class DefaultLoginPageView extends PSimplePanel implements LoginPageView { private final PButton loginButton; private final PCheckBox rememberMe; private final PTextBox loginTextBox = Element.newPTextBox(); private final PPasswordTextBox passwordTextBox = Element.newPPasswordTextBox(); private final PFlowPanel messagePanel = Element.newPFlowPanel(); private final PLabel versionInformation = Element.newPLabel(); private int messageIndex = 1; public DefaultLoginPageView(final String title) { loginButton = Element.newPButton(PString.get("activity.login.signin")); rememberMe = Element.newPCheckBox(PString.get("activity.login.rememberme")); loginTextBox.setStyleName("pony-LoginPage-LoginTextBox"); passwordTextBox.setStyleName("pony-LoginPage-PasswordTextBox"); loginButton.addStyleName("pony-LoginPage-SubmitButton"); versionInformation.addStyleName("pony-LoginPage-VersionInformation"); final PFlowPanel panel = Element.newPFlowPanel(); panel.setStyleName("pony-LoginPage"); // logo final PLabel logo = Element.newPLabel(title); logo.addStyleName("pony-LoginPage-Logo"); panel.add(logo); // input final PFlowPanel inputPanel = Element.newPFlowPanel(); inputPanel.add(buildLoginInput()); inputPanel.add(buildPasswordInput()); panel.add(inputPanel); final PFlowPanel buttonAndCheckbox = Element.newPFlowPanel(); panel.add(buttonAndCheckbox); buttonAndCheckbox.add(loginButton); buttonAndCheckbox.add(rememberMe); // messages panel.add(messagePanel); panel.add(versionInformation); setWidget(panel); } private PWidget buildLoginInput() { final PFlowPanel panel = Element.newPFlowPanel(); panel.add(Element.newPLabel(PString.get("activity.login.login"))); panel.add(loginTextBox); return panel; } private PWidget buildPasswordInput() { final PFlowPanel panel = Element.newPFlowPanel(); panel.add(Element.newPLabel(PString.get("activity.login.password"))); panel.add(passwordTextBox); return panel; } @Override public void addLoginShortcutListener(final PKeyUpHandler handler) { loginTextBox.addKeyUpHandler(handler); } @Override public void addLoginClickHandler(final PClickHandler handler) { loginButton.addClickHandler(handler); } @Override public void addPasswordShortcutListener(final PKeyUpHandler handler) { passwordTextBox.addKeyUpHandler(handler); } @Override public void addVersionInformation(final String version) { versionInformation.setText(version); } @Override public void addMessage(final String message) { final PLabel messageLabel = Element.newPLabel(message); messageLabel.ensureDebugId("login_page_message_" + messageIndex); messageIndex++; messagePanel.add(messageLabel); } @Override public String getLogin() { return loginTextBox.getText(); } @Override public String getPassword() { return passwordTextBox.getText(); } @Override public Boolean isRememberMe() { return rememberMe.getValue(); } @Override public void clearMessages() { messagePanel.clear(); messageIndex = 1; } @Override public void setFocusOnLogin(final boolean focused) { loginTextBox.setFocus(focused); } public PButton getLoginButton() { return loginButton; } public PTextBox getLoginTextBox() { return loginTextBox; } public PPasswordTextBox getPasswordTextBox() { return passwordTextBox; } public PCheckBox getRememberMe() { return rememberMe; } }