/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.web.organizer.ui; import java.util.Arrays; import com.vaadin.data.Validator; import com.vaadin.data.util.BeanItem; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Form; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.themes.BaseTheme; import com.web.organizer.data.Person; import com.web.organizer.data.PersonFieldFactory; import com.web.organizer.events.BaseEvent.EventType; import com.web.organizer.events.ButtonChangePageListener; import com.web.organizer.events.EventBus; /** * * @author Gery */ public class SignUpContent extends BaseContent { // the 'POJO' we're editing Person person; private Button btnApply; public SignUpContent() { person = new Person(); // a person POJO BeanItem<Person> personItem = new BeanItem<Person>(person); // item from // POJO // Create the Form final Form personForm = new Form(); personForm.setCaption("Personal details"); personForm.setWriteThrough(false); // we want explicit 'apply' personForm.setInvalidCommitted(false); // no invalid values in datamodel // FieldFactory for customizing the fields and adding validators personForm.setFormFieldFactory(new PersonFieldFactory()); personForm.setItemDataSource(personItem); // bind to POJO via BeanItem // Determines which properties are shown, and in which order: personForm.setVisibleItemProperties(Arrays.asList(new String[]{ "firstName", "lastName", "username", "password", "email","email2","mobile","mobile2", "birthdate", "countryCode", "timeZone"})); // Add form to layout addComponent(personForm); // The cancel / apply buttons HorizontalLayout buttons = new HorizontalLayout(); buttons.setSpacing(true); Button discardChanges = new Button("Discard changes", new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { personForm.discard(); } }); discardChanges.setStyleName(BaseTheme.BUTTON_LINK); buttons.addComponent(discardChanges); buttons.setComponentAlignment(discardChanges, Alignment.MIDDLE_LEFT); btnApply = new Button("Apply", new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { try { personForm.commit(); } catch (Exception e) { // Ignored, we'll let the Form handle the errors } } }); buttons.addComponent(btnApply); personForm.getFooter().addComponent(buttons); personForm.getFooter().setMargin(false, false, true, true); } @Override public void setEventBus(EventBus eventBus) { // Set up event bus super.setEventBus(eventBus); btnApply.addListener(new ButtonChangePageListener(EventType.CHANGE_PAGE_TO_MAINVIEW, (MainWindow) getWindow())); } }