package org.vaadin.viritin.v7; import com.vaadin.annotations.PropertyId; import com.vaadin.annotations.Theme; import com.vaadin.ui.Component; import com.vaadin.ui.Notification; import org.vaadin.addonhelpers.AbstractTest; import org.vaadin.viritin.v7.fields.EnumSelect; import org.vaadin.viritin.v7.fields.LabelField; import org.vaadin.viritin.v7.fields.MTextField; import org.vaadin.viritin.v7.form.AbstractForm; import org.vaadin.viritin.layouts.MHorizontalLayout; import org.vaadin.viritin.layouts.MVerticalLayout; import org.vaadin.viritin.testdomain.Address; import org.vaadin.viritin.testdomain.Dude; /** * An example how to use some "nested properties" in form. * * @author Matti Tahvonen */ @Theme("valo") public class EditDude extends AbstractTest { private static final long serialVersionUID = -1808409887708900997L; public static class DudeForm extends AbstractForm<Dude> { private static final long serialVersionUID = -3578950068291730479L; private final MTextField firstName = new MTextField("Name"); private final MTextField age = new MTextField("Age"); LabelField<Integer> id = new LabelField<>(Integer.class) .withCaption("ID"); @PropertyId("address.type") EnumSelect<Address.AddressType> type = new EnumSelect<>(); @PropertyId("address.street") MTextField street = new MTextField().withInputPrompt("street"); @PropertyId("address.city") MTextField city = new MTextField().withInputPrompt("city"); @PropertyId("address.zipCode") MTextField zipCode = new MTextField().withInputPrompt("zip"); public DudeForm() { setNestedProperties("address.street","address.city", "address.zipCode", "address.type"); } @Override protected Component createContent() { return new MVerticalLayout(id, firstName, age, new MHorizontalLayout(street, city, zipCode).withCaption( "Address"), getToolbar()); } } @Override public Component getTestComponent() { DudeForm form = new DudeForm(); Dude p = new Dude(); p.setFirstName("Jorma"); p.setAge(80); p.getAddress().setStreet("Ruukinkatu"); form.setEntity(p); form.setSavedHandler(new AbstractForm.SavedHandler<Dude>() { private static final long serialVersionUID = 6646955460224852274L; @Override public void onSave(Dude entity) { Notification.show(entity.toString()); } }); return new MVerticalLayout(form); } }