package cz.nkp.differ.gui.windows; import com.vaadin.data.validator.NullValidator; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Layout; import com.vaadin.ui.PasswordField; import com.vaadin.ui.TextField; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; import cz.nkp.differ.DifferApplication; import cz.nkp.differ.gui.components.CaptchaComponent; import cz.nkp.differ.model.User; import cz.nkp.differ.user.UserManager; import cz.nkp.differ.util.GUIMacros; @SuppressWarnings("serial") public class RegisterUserWindow extends Window implements ClickListener { public RegisterUserWindow() { setCaption("Register User"); setModal(true); setDraggable(false); setResizable(false); center(); setWidth("25%"); addComponent(createRegisterUserWindow()); HorizontalLayout buttonLayout = new HorizontalLayout(); Button register = new Button("Register"); register.addListener(this); buttonLayout.addComponent(register); Button close = new Button("Close"); close.addListener(GUIMacros.createWindowCloseButtonListener(this)); buttonLayout.addComponent(close); addComponent(buttonLayout); } TextField nameField; PasswordField passField; CaptchaComponent captcha; /** * * @return */ private Layout createRegisterUserWindow() { VerticalLayout layout = new VerticalLayout(); nameField = new TextField("Username"); nameField.addValidator(new NullValidator("You must provide a username!", false)); layout.addComponent(nameField); passField = new PasswordField("Password"); passField.addValidator(new NullValidator("You must provide a password!", false)); layout.addComponent(passField); captcha = new CaptchaComponent(); layout.addComponent(captcha); return layout; } @Override public void buttonClick(ClickEvent event) { if (!captcha.passedValidation()) { DifferApplication.getCurrentApplication().getMainWindow().showNotification("Captcha Problem", "<br/>You did not enter the correct captcha.", Window.Notification.TYPE_WARNING_MESSAGE); return; } String nameValue = (String) nameField.getValue(); String passValue = (String) passField.getValue(); User user = new User(); user.setUserName(nameValue); if (nameValue != null && passValue != null) { try { user = UserManager.getInstance().registerUser(user, passValue); } catch (Exception ex) { DifferApplication.getCurrentApplication().getMainWindow().showNotification("Error when registering user", "<br/>Error when registering user.", Window.Notification.TYPE_ERROR_MESSAGE); captcha.reset(); } }//TODO:password strength checking etc } }