package org.aplikator.client.local.command; import javax.inject.Inject; import org.aplikator.client.local.Aplikator; import org.aplikator.client.shared.rpc.AplikatorErrorCallback; import org.aplikator.client.shared.rpc.AplikatorService; import org.gwtbootstrap3.client.ui.Button; import org.gwtbootstrap3.client.ui.Container; import org.gwtbootstrap3.client.ui.FormLabel; import org.gwtbootstrap3.client.ui.Input; import org.gwtbootstrap3.client.ui.Legend; import org.gwtbootstrap3.client.ui.TextBox; import org.jboss.errai.common.client.api.RemoteCallback; import org.jboss.errai.enterprise.client.jaxrs.api.RestClient; import org.jboss.errai.ui.nav.client.local.Page; import org.jboss.errai.ui.nav.client.local.PageHidden; import org.jboss.errai.ui.nav.client.local.PageShowing; import org.jboss.errai.ui.nav.client.local.PageShown; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.event.dom.client.KeyUpEvent; import com.google.gwt.event.dom.client.KeyUpHandler; 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.Composite; @Page(path = "login") public class Login extends Composite { private static LoginUiBinder loginUiBinder = GWT.create(LoginUiBinder.class); interface LoginUiBinder extends UiBinder<Container, Login> { } @Inject private Aplikator aplikator; @UiField Legend title; @UiField TextBox username; @UiField FormLabel usernameLabel; @UiField Input password; @UiField FormLabel passwordLabel; @UiField Button submit; public Login() { initWidget(loginUiBinder.createAndBindUi(this)); title.setText(Aplikator.application.getConfigString("aplikator.login.title")); usernameLabel.setText(Aplikator.application.getConfigString("aplikator.login.username")); passwordLabel.setText(Aplikator.application.getConfigString("aplikator.login.password")); submit.setText(Aplikator.application.getConfigString("aplikator.login.submit")); KeyUpHandler onEnter = new KeyUpHandler() { @Override public void onKeyUp(KeyUpEvent event) { event.stopPropagation(); if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) { submit(); } } }; username.addKeyUpHandler(onEnter); password.addKeyUpHandler(onEnter); } @PageShowing public void enterLoginPage() { aplikator.displayLoginButton(false); } @PageShown public void grabFocus() { username.setFocus(true); username.setSelectionRange(0, username.getText().length()); } @UiHandler("submit") public void submit(ClickEvent event) { submit(); } private void submit() { RestClient.create(AplikatorService.class, new RemoteCallback<Void>() { @Override public void callback(Void response) { aplikator.reloadApplication(true); } }, new AplikatorErrorCallback() ).login(username.getText(), password.getText()); } @PageHidden public void leaveLoginPage() { aplikator.displayLoginButton(true); } }