Form Validation and Pattern

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