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);
}
}