From fee9742d8d241a078ff711b8bc50b5234843c4e9 Mon Sep 17 00:00:00 2001 From: Marc Englund Date: Fri, 6 Feb 2009 15:21:10 +0000 Subject: [PATCH] Sampler; sample modifications and a few icons. svn changeset:6755/svn branch:trunk --- .../toolkit/demo/sampler/FeatureSet.java | 6 ++- .../sampler/features/commons/75-Errors.png | Bin 0 -> 5295 bytes .../features/commons/75-Validation.png | Bin 0 -> 6638 bytes .../sampler/features/commons/Validation.java | 19 +++++-- .../sampler/features/form/75-FormBasic.png | Bin 0 -> 4945 bytes .../sampler/features/form/75-FormPojo.png | Bin 0 -> 8388 bytes .../demo/sampler/features/form/FormBasic.java | 23 +++++---- .../demo/sampler/features/form/FormPojo.java | 47 ++++++++++++++++++ .../features/form/FormPojoExample.java | 23 ++++++--- 9 files changed, 96 insertions(+), 22 deletions(-) create mode 100644 src/com/itmill/toolkit/demo/sampler/features/commons/75-Errors.png create mode 100644 src/com/itmill/toolkit/demo/sampler/features/commons/75-Validation.png create mode 100644 src/com/itmill/toolkit/demo/sampler/features/form/75-FormBasic.png create mode 100644 src/com/itmill/toolkit/demo/sampler/features/form/75-FormPojo.png create mode 100644 src/com/itmill/toolkit/demo/sampler/features/form/FormPojo.java diff --git a/src/com/itmill/toolkit/demo/sampler/FeatureSet.java b/src/com/itmill/toolkit/demo/sampler/FeatureSet.java index 5cd33d56f4..1314921adb 100644 --- a/src/com/itmill/toolkit/demo/sampler/FeatureSet.java +++ b/src/com/itmill/toolkit/demo/sampler/FeatureSet.java @@ -21,6 +21,7 @@ import com.itmill.toolkit.demo.sampler.features.dates.DateLocale; import com.itmill.toolkit.demo.sampler.features.dates.DatePopup; import com.itmill.toolkit.demo.sampler.features.dates.DateResolution; import com.itmill.toolkit.demo.sampler.features.form.FormBasic; +import com.itmill.toolkit.demo.sampler.features.form.FormPojo; import com.itmill.toolkit.demo.sampler.features.layouts.ApplicationLayout; import com.itmill.toolkit.demo.sampler.features.layouts.CustomLayouts; import com.itmill.toolkit.demo.sampler.features.layouts.ExpandingComponent; @@ -127,7 +128,7 @@ public class FeatureSet extends Feature { new Tabsheets(), // new Accordions(), // new Panels(), // - // new Forms(), not done yet + new Forms(), // not done yet new Windows(), // new Tables(),// new Texts(), // @@ -260,7 +261,8 @@ public class FeatureSet extends Feature { super("Forms", new Feature[] { // new FormBasic(), // - }); + new FormPojo(), // + }); } } diff --git a/src/com/itmill/toolkit/demo/sampler/features/commons/75-Errors.png b/src/com/itmill/toolkit/demo/sampler/features/commons/75-Errors.png new file mode 100644 index 0000000000000000000000000000000000000000..26b29ce24f1bee8c0d0da4eef6a602207b1b0af7 GIT binary patch literal 5295 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 BDUARC literal 0 HcmV?d00001 diff --git a/src/com/itmill/toolkit/demo/sampler/features/commons/75-Validation.png b/src/com/itmill/toolkit/demo/sampler/features/commons/75-Validation.png new file mode 100644 index 0000000000000000000000000000000000000000..058ec7db9fe4b2669c77df70f370882693c934ea GIT binary patch literal 6638 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 z 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 aw*EgrFySG~sgq#<0000 It is most useful when connected" + + " to a data source, and provides buffering and customization" + + " features to support that scenario."; } - @Override public APIResource[] getRelatedAPI() { - // TODO Auto-generated method stub - return null; + return new APIResource[] { new APIResource(Validatable.class), + new APIResource(Validator.class), new APIResource(Form.class) }; } - @Override public Class[] getRelatedFeatures() { - // TODO Auto-generated method stub - return null; + return new Class[] { Validation.class, Errors.class, + FeatureSet.Forms.class }; } - @Override public NamedExternalResource[] getRelatedResources() { - // TODO Auto-generated method stub return null; } diff --git a/src/com/itmill/toolkit/demo/sampler/features/form/FormPojo.java b/src/com/itmill/toolkit/demo/sampler/features/form/FormPojo.java new file mode 100644 index 0000000000..cc94464e46 --- /dev/null +++ b/src/com/itmill/toolkit/demo/sampler/features/form/FormPojo.java @@ -0,0 +1,47 @@ +package com.itmill.toolkit.demo.sampler.features.form; + +import com.itmill.toolkit.data.Validatable; +import com.itmill.toolkit.data.Validator; +import com.itmill.toolkit.demo.sampler.APIResource; +import com.itmill.toolkit.demo.sampler.Feature; +import com.itmill.toolkit.demo.sampler.FeatureSet; +import com.itmill.toolkit.demo.sampler.NamedExternalResource; +import com.itmill.toolkit.demo.sampler.features.commons.Errors; +import com.itmill.toolkit.demo.sampler.features.commons.Validation; +import com.itmill.toolkit.ui.Component; +import com.itmill.toolkit.ui.Form; + +public class FormPojo extends Feature { + + @Override + public Component getExample() { + return new FormPojoExample(); + } + + @Override + public String getDescription() { + return "The Form -component provides a convenient way to organize" + + " related fields visually.
It is most useful when connected" + + " to a data source, and provides buffering and customization" + + " features to support that scenario.
It easily be used as" + + " a POJO or Bean editor by wrapping the bean using BeanItem." + + " The basic functionality only requires a couple of lines of" + + " code, then Validators and other customizations can be" + + " applied to taste."; + } + + public APIResource[] getRelatedAPI() { + return new APIResource[] { new APIResource(Validatable.class), + new APIResource(Validator.class), new APIResource(Form.class) }; + } + + public Class[] getRelatedFeatures() { + return new Class[] { Validation.class, Errors.class, + FeatureSet.Forms.class }; + } + + public NamedExternalResource[] getRelatedResources() { + return null; + } + +} diff --git a/src/com/itmill/toolkit/demo/sampler/features/form/FormPojoExample.java b/src/com/itmill/toolkit/demo/sampler/features/form/FormPojoExample.java index 1b4dd9ff52..65ff56da2f 100644 --- a/src/com/itmill/toolkit/demo/sampler/features/form/FormPojoExample.java +++ b/src/com/itmill/toolkit/demo/sampler/features/form/FormPojoExample.java @@ -30,20 +30,24 @@ public class FormPojoExample extends VerticalLayout { person = new Person(); // a person POJO BeanItem personItem = new BeanItem(person); // item from POJO - // create the Form + // Create the Form final Form personForm = new Form(); personForm.setWriteThrough(false); // we want explicit 'apply' personForm.setInvalidCommitted(false); // no invalid values in datamodel + // FieldFactory for customizing the fields and adding validators personForm.setFieldFactory(new PersonFieldFactory()); personForm.setItemDataSource(personItem); // bind to POJO via BeanItem - // determines which properties are shown, and in which order: + + // Determines which properties are shown, and in which order: personForm.setVisibleItemProperties(Arrays.asList(new String[] { "firstName", "lastName", "countryCode", "password", "birthdate", "shoesize", "uuid" })); - addComponent(personForm); // add to layout - // the cancel / apply buttons + // Add form to layout + addComponent(personForm); + + // The cancel / apply buttons HorizontalLayout buttons = new HorizontalLayout(); buttons.setSpacing(true); Button discardChanges = new Button("Discard changes", @@ -54,9 +58,14 @@ public class FormPojoExample extends VerticalLayout { }); discardChanges.setStyleName(Button.STYLE_LINK); buttons.addComponent(discardChanges); + Button apply = new Button("Apply", new Button.ClickListener() { public void buttonClick(ClickEvent event) { - personForm.commit(); + try { + personForm.commit(); + } catch (Exception e) { + // Ingnored, we'll let the Form handle the errors + } } }); buttons.addComponent(apply); @@ -70,7 +79,6 @@ public class FormPojoExample extends VerticalLayout { } }); addComponent(showPojoState); - // showPojoState(); } private void showPojoState() { @@ -110,12 +118,14 @@ public class FormPojoExample extends VerticalLayout { if ("firstName".equals(propertyId)) { TextField tf = (TextField) f; tf.setRequired(true); + tf.setRequiredError("Please enter a First Name"); tf.setWidth("15em"); tf.addValidator(new StringLengthValidator( "First Name must be 3-25 characters", 3, 25, false)); } else if ("lastName".equals(propertyId)) { TextField tf = (TextField) f; tf.setRequired(true); + tf.setRequiredError("Please enter a Last Name"); tf.setWidth("20em"); tf.addValidator(new StringLengthValidator( "Last Name must be 3-50 characters", 3, 50, false)); @@ -123,6 +133,7 @@ public class FormPojoExample extends VerticalLayout { TextField tf = (TextField) f; tf.setSecret(true); tf.setRequired(true); + tf.setRequiredError("Please enter a password"); tf.setWidth("10em"); tf.addValidator(new StringLengthValidator( "Password must be 6-20 characters", 6, 20, false)); -- 2.39.5