Hi, I have got two problems. First I am in a trouble about validation.
In my code the validation is doing ok, but when I add a Listener the validation is not done, the code runs to
Main oMain = new Main();
oApplicationInitialization.getMainWindow().setContent(oMain);
Without validation. Am I doing it right?
My code is that and the problem is in access.
package com.eximia.rh.ui;
import com.eximia.rh.ApplicationInitialization;
import com.eximia.rh.i18n.Bundle;
import com.vaadin.data.validator.StringLengthValidator;
import com.vaadin.terminal.ErrorMessage;
import com.vaadin.terminal.UserError;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Form;
import com.vaadin.ui.Panel;
import com.vaadin.ui.TextField;
import com.vaadin.ui.themes.BaseTheme;
/**
*
* @author Leonardo
*/
public class Access extends VerticalLayout {
public Access(final ApplicationInitialization oApplicationInitialization) {
setSizeFull();
HorizontalLayout languageBar = new HorizontalLayout();
addComponent(languageBar);
setComponentAlignment(languageBar, Alignment.TOP_RIGHT);
Button portuguese = new Button(Bundle.getFromBundle("LanguageBarPortuguese"));
portuguese.addListener(new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
oApplicationInitialization.getMainWindow().setContent(new Access(oApplicationInitialization));
}
});
Button english = new Button(Bundle.getFromBundle("LanguageBarEnglish"));
english.addListener(new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
oApplicationInitialization.getMainWindow().setContent(new Access(oApplicationInitialization));
}
});
portuguese.setEnabled(!oApplicationInitialization.getLocale().getLanguage().equals("pt"));
english.setEnabled(!oApplicationInitialization.getLocale().getLanguage().equals("en"));
languageBar.addComponent(portuguese);
languageBar.addComponent(english);
Panel AccessPanel = new Panel(Bundle.getFromBundle("AccessWindow"));
AccessPanel.setWidth("23%");
addComponent(AccessPanel);
setComponentAlignment(AccessPanel, Alignment.TOP_CENTER);
Form AccessForm = new Form();
final TextField user = new TextField(Bundle.getFromBundle("AccessWindowUser"));
user.setRequired(true);
user.setRequiredError(Bundle.getFromBundle("AccessWindowUserRequired"));
user.addValidator(new StringLengthValidator(Bundle.getFromBundle("AccessWindowUserLength"), 5, 10, false));
user.setWidth("100%");
final TextField password = new TextField(Bundle.getFromBundle("AccessWindowPassword"));
password.setSecret(true);
password.setRequired(true);
password.setRequiredError(Bundle.getFromBundle("AccessWindowPasswordRequired"));
password.addValidator(new StringLengthValidator(Bundle.getFromBundle("AccessWindowPasswordLength"), 5, 10, false));
password.setWidth("100%");
final Button forget = new Button(Bundle.getFromBundle("AccessWindowForgetButton"));
forget.setStyleName(BaseTheme.BUTTON_LINK);
forget.addListener(new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
Main oMain = new Main();
oApplicationInitialization.getMainWindow().setContent(oMain);
}
});
AccessForm.getLayout().addComponent(user);
AccessForm.getLayout().addComponent(password);
AccessForm.getLayout().addComponent(forget);
AccessPanel.addComponent(AccessForm);
HorizontalLayout buttons = new HorizontalLayout();
buttons.setWidth("100%");
[b]
Button access = new Button(Bundle.getFromBundle("AccessWindowAccessButton"));
access.addListener(new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
Main oMain = new Main();
oApplicationInitialization.getMainWindow().setContent(oMain);
}
});
[/b]
buttons.addComponent(access);
AccessForm.getLayout().addComponent(buttons);
buttons.setComponentAlignment(access, Alignment.MIDDLE_CENTER);
}
}
The second thing is a question. Is the pattern I adopted ok?
I am used of develop in JSF and MVC, and doing like addListener looks like Delphi 7 for me. Is that really the best way?
Thank you