From fc329235d794b93328f68c135fc0969f37d3b5f6 Mon Sep 17 00:00:00 2001 From: vovasty Date: Sun, 22 Feb 2009 21:17:27 +0300 Subject: [PATCH] DataCheckbox component --- .../components/components/DataCheckbox.java | 53 ++++++++++++++++++++++ .../components/services/ComponentsModule.java | 9 ++++ 2 files changed, 62 insertions(+) create mode 100644 aramzamzam-commons/commons-components/src/main/java/net/aramzamzam/commons/components/components/DataCheckbox.java diff --git a/aramzamzam-commons/commons-components/src/main/java/net/aramzamzam/commons/components/components/DataCheckbox.java b/aramzamzam-commons/commons-components/src/main/java/net/aramzamzam/commons/components/components/DataCheckbox.java new file mode 100644 index 0000000..4e2bf27 --- /dev/null +++ b/aramzamzam-commons/commons-components/src/main/java/net/aramzamzam/commons/components/components/DataCheckbox.java @@ -0,0 +1,53 @@ +package net.aramzamzam.commons.components.components; + +import org.apache.tapestry5.ComponentResources; +import org.apache.tapestry5.MarkupWriter; +import org.apache.tapestry5.ValueEncoder; +import org.apache.tapestry5.annotations.Parameter; +import org.apache.tapestry5.corelib.components.Checkbox; +import org.apache.tapestry5.ioc.annotations.Inject; +import org.apache.tapestry5.services.ComponentDefaultProvider; + +/** + * http://markmail.org/search/?q=list%3Aorg.apache.tapestry.users+t5+checkbox#query:list%3Aorg.apache.tapestry.users%20t5%20checkbox+page:1+mid:s7xn4o7aeuduezp2+state:results + * + */ +public class DataCheckbox extends Checkbox { + + @Parameter(required = true, allowNull = false) + private Object _data; + + @SuppressWarnings("unchecked") + @Parameter(required = true, allowNull = false) + private ValueEncoder encoder; + + @Inject + private ComponentDefaultProvider defaultProvider; + + @Inject + private ComponentResources resources; + + @Inject + private org.apache.tapestry5.services.Request _request; + + @SuppressWarnings("unchecked") + final ValueEncoder defaultEncoder() + { + return defaultProvider.defaultValueEncoder("value", resources); + } + + + @SuppressWarnings("unchecked") + protected void beforeRenderTemplate(MarkupWriter writer) { + writer.attributes("value", encoder.toClient(_data)); + } + + @Override + protected void processSubmission(String elementName) { + super.processSubmission(elementName); + String value = _request.getParameter(elementName); + if ( value != null ) { + _data = encoder.toValue(value); + } + } +} \ No newline at end of file diff --git a/aramzamzam-commons/commons-components/src/main/java/net/aramzamzam/commons/components/services/ComponentsModule.java b/aramzamzam-commons/commons-components/src/main/java/net/aramzamzam/commons/components/services/ComponentsModule.java index a3737e5..e2bd836 100644 --- a/aramzamzam-commons/commons-components/src/main/java/net/aramzamzam/commons/components/services/ComponentsModule.java +++ b/aramzamzam-commons/commons-components/src/main/java/net/aramzamzam/commons/components/services/ComponentsModule.java @@ -1,9 +1,11 @@ package net.aramzamzam.commons.components.services; +import org.apache.tapestry5.ioc.Configuration; import org.apache.tapestry5.ioc.ObjectLocator; import org.apache.tapestry5.ioc.OrderedConfiguration; import org.apache.tapestry5.ioc.services.PropertyAccess; import org.apache.tapestry5.services.ComponentClassTransformWorker; +import org.apache.tapestry5.services.LibraryMapping; public class ComponentsModule { /** @@ -24,4 +26,11 @@ public class ComponentsModule { configuration.add("InjectSelectionModel", new InjectSelectionModelWorker(propertyAccess), "after:Inject*"); } + + public static void contributeComponentClassResolver( + final Configuration configuration) { + configuration.add(new LibraryMapping("aramzamzam", + "net.aramzamzam.commons.components")); + } + } -- 2.11.4.GIT