package net.sf.gazpachoquest.questionnaires.views.login;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import net.sf.gazpachoquest.dto.auth.RespondentAccount;
import com.vaadin.cdi.CDIView;
import com.vaadin.event.ShortcutAction.KeyCode;
import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.CssLayout;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.themes.Reindeer;
@CDIView(LoginView.NAME)
public class LoginView extends CustomComponent implements View {
private static final long serialVersionUID = -5588579843187115669L;
public static final String NAME = "";
private TextField invitation;
private Button login;
@PostConstruct
public void init() {
setSizeFull();
setCompositionRoot(createCompositionRoot());
}
@Inject
private javax.enterprise.event.Event<LoginEvent> loginEvent;
protected CssLayout createCompositionRoot() {
CssLayout root = new CssLayout();
root.setSizeFull();
root.addStyleName(Reindeer.LAYOUT_BLUE);
VerticalLayout loginLayout = new VerticalLayout();
loginLayout.setSizeFull();
loginLayout.addStyleName("login-layout");
root.addComponent(loginLayout);
final CssLayout loginPanel = new CssLayout();
loginPanel.addStyleName("login-panel");
loginLayout.addComponent(loginPanel);
HorizontalLayout labels = new HorizontalLayout();
labels.setWidth("100%");
labels.setMargin(true);
labels.addStyleName("labels");
loginPanel.addComponent(labels);
Label welcome = new Label("Welcome");
welcome.setSizeUndefined();
welcome.addStyleName(Reindeer.LABEL_H2);
labels.addComponent(welcome);
labels.setComponentAlignment(welcome, Alignment.MIDDLE_LEFT);
Label title = new Label("Gazpacho Quest");
title.setSizeUndefined();
title.addStyleName(Reindeer.LABEL_H1);
labels.addComponent(title);
labels.setComponentAlignment(title, Alignment.MIDDLE_RIGHT);
HorizontalLayout fields = new HorizontalLayout();
fields.setWidth("100%");
fields.setSpacing(true);
fields.setMargin(true);
fields.addStyleName("fields");
invitation = new TextField("Invitation");
invitation.setSizeUndefined();
invitation.focus();
// invitation.setValue("YAS5ICHRBE");
fields.addComponent(invitation);
login = new Button("Start");
login.addClickListener(createLoginButtonListener());
fields.addComponent(login);
fields.setComponentAlignment(login, Alignment.BOTTOM_LEFT);
loginPanel.addComponent(fields);
return root;
}
protected HorizontalLayout createCompositionRootx() {
VerticalLayout loginPanel = new VerticalLayout();
loginPanel.setSpacing(true);
loginPanel.setWidth("400px");
Label header = new Label("Enter your invitation to start the questionnair");
header.addStyleName(Reindeer.LABEL_H1);
loginPanel.addComponent(header);
invitation = new TextField("Invitation");
invitation.setWidth("100%");
invitation.focus();
invitation.setValue("YAS5ICHRBE");
loginPanel.addComponent(invitation);
HorizontalLayout buttons = new HorizontalLayout();
buttons.setSpacing(true);
loginPanel.addComponent(buttons);
loginPanel.setComponentAlignment(buttons, Alignment.MIDDLE_RIGHT);
login = new Button("Start");
login.setClickShortcut(KeyCode.ENTER);
login.addStyleName(Reindeer.BUTTON_DEFAULT);
login.addClickListener(createLoginButtonListener());
buttons.addComponent(login);
HorizontalLayout viewLayout = new HorizontalLayout();
viewLayout.addComponent(loginPanel);
viewLayout.setComponentAlignment(loginPanel, Alignment.MIDDLE_CENTER);
viewLayout.setSizeFull();
viewLayout.addStyleName(Reindeer.LAYOUT_BLUE);
setSizeFull();
return viewLayout;
}
protected Button.ClickListener createLoginButtonListener() {
return new Button.ClickListener() {
private static final long serialVersionUID = 3424514570135131495L;
@Override
public void buttonClick(Button.ClickEvent event) {
loginEvent.fire(new LoginEvent(RespondentAccount.USER_NAME, invitation.getValue()));
}
};
}
@Override
public void enter(ViewChangeEvent event) {
// TODO Auto-generated method stub
}
}