Author: drobiazko Date: Sun Jul 26 22:32:06 2009 New Revision: 797996 URL: http://svn.apache.org/viewvc?rev=797996&view=rev Log: TAP5-789: Provide bean and display blocks for java.util.Calendar
Added: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/BeanEditCalendarDemo.tml tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ShowCalendarHolder.tml tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/CalendarHolder.java (with props) tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditCalendarDemo.java (with props) tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowCalendarHolder.java (with props) Modified: tapestry/tapestry5/trunk/src/site/apt/guide/beaneditform.apt tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyDisplayBlocks.java tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PropertyDisplayBlocks.tml tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.tml tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/IntegrationTests.java tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java Modified: tapestry/tapestry5/trunk/src/site/apt/guide/beaneditform.apt URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/src/site/apt/guide/beaneditform.apt?rev=797996&r1=797995&r2=797996&view=diff ============================================================================== --- tapestry/tapestry5/trunk/src/site/apt/guide/beaneditform.apt (original) +++ tapestry/tapestry5/trunk/src/site/apt/guide/beaneditform.apt Sun Jul 26 22:32:06 2009 @@ -25,6 +25,8 @@ * Boolean: as a checkbox * Date: as a JavaScript calendar + + * Calendar: as a JavaScript calendar [] Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyDisplayBlocks.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyDisplayBlocks.java?rev=797996&r1=797995&r2=797996&view=diff ============================================================================== --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyDisplayBlocks.java (original) +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyDisplayBlocks.java Sun Jul 26 22:32:06 2009 @@ -22,6 +22,8 @@ import org.apache.tapestry5.services.PropertyOutputContext; import java.text.DateFormat; +import java.util.Calendar; +import java.util.Date; import java.util.Locale; public class PropertyDisplayBlocks @@ -47,6 +49,13 @@ { return dateFormat; } + + public Date getCalendarDate() + { + Calendar calendar = (Calendar) context.getPropertyValue(); + return calendar.getTime(); + } + public PropertyOutputContext getContext() { Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java?rev=797996&r1=797995&r2=797996&view=diff ============================================================================== --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java (original) +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java Sun Jul 26 22:32:06 2009 @@ -69,6 +69,12 @@ parameters = {"value=context.propertyValue", "label=prop:context.label", "clientId=prop:context.propertyid", "validate=prop:dateFieldValidator"}) private DateField dateField; + + @SuppressWarnings("unused") + @Component( + parameters = {"value=context.propertyValue", "label=prop:context.label", "clientId=prop:context.propertyid", + "validate=prop:calendarFieldValidator"}) + private DateField calendarField; @Component( parameters = {"value=context.propertyValue", "label=prop:context.label", @@ -136,6 +142,11 @@ return context.getValidator(dateField); } + public FieldValidator getCalendarFieldValidator() + { + return context.getValidator(calendarField); + } + public FieldValidator getSelectValidator() { return context.getValidator(select); Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=797996&r1=797995&r2=797996&view=diff ============================================================================== --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java (original) +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java Sun Jul 26 22:32:06 2009 @@ -570,6 +570,7 @@ configuration.add(Enum.class, "enum"); configuration.add(Boolean.class, "boolean"); configuration.add(Date.class, "date"); + configuration.add(Calendar.class, "calendar"); } public static void contributeBeanBlockSource(Configuration<BeanBlockContribution> configuration) @@ -580,6 +581,7 @@ addEditBlock(configuration, "boolean"); addEditBlock(configuration, "date"); addEditBlock(configuration, "password"); + addEditBlock(configuration, "calendar"); // longtext uses a text area, not a text field @@ -587,6 +589,7 @@ addDisplayBlock(configuration, "enum"); addDisplayBlock(configuration, "date"); + addDisplayBlock(configuration, "calendar"); // Password and long text have special output needs. addDisplayBlock(configuration, "password"); @@ -1000,6 +1003,16 @@ }); add(configuration, PrimaryKeyEncoder.class, ValueEncoder.class, new PrimaryKeyEncoder2ValueEncoder(coercer)); + + add(configuration, Date.class, Calendar.class, new Coercion<Date, Calendar>() + { + public Calendar coerce(Date input) + { + Calendar calendar = Calendar.getInstance(threadLocale.getLocale()); + calendar.setTime(input); + return calendar; + } + }); } /** Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PropertyDisplayBlocks.tml URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PropertyDisplayBlocks.tml?rev=797996&r1=797995&r2=797996&view=diff ============================================================================== --- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PropertyDisplayBlocks.tml (original) +++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PropertyDisplayBlocks.tml Sun Jul 26 22:32:06 2009 @@ -6,6 +6,10 @@ <t:block id="date"> <t:output value="context.propertyValue" format="dateFormat"/> + </t:block> + + <t:block id="calendar"> + <t:output value="calendarDate" format="dateFormat"/> </t:block> <t:block id="password"> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.tml URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.tml?rev=797996&r1=797995&r2=797996&view=diff ============================================================================== --- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.tml (original) +++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.tml Sun Jul 26 22:32:06 2009 @@ -24,6 +24,11 @@ <t:block id="date"> <t:label for="dateField"/> <input t:id="dateField"/> + </t:block> + + <t:block id="calendar"> + <t:label for="calendarField"/> + <input t:id="calendarField"/> </t:block> <t:block id="password"> Added: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/BeanEditCalendarDemo.tml URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/BeanEditCalendarDemo.tml?rev=797996&view=auto ============================================================================== --- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/BeanEditCalendarDemo.tml (added) +++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/BeanEditCalendarDemo.tml Sun Jul 26 22:32:06 2009 @@ -0,0 +1,13 @@ +<html t:type="Border" + xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"> + + <h1>BeanEditor Calendar Demo</h1> + + <t:beaneditform t:id="holder" /> + + <hr /> + + <t:actionlink t:id="clear">clear</t:actionlink> + + +</html> Added: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ShowCalendarHolder.tml URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ShowCalendarHolder.tml?rev=797996&view=auto ============================================================================== --- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ShowCalendarHolder.tml (added) +++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ShowCalendarHolder.tml Sun Jul 26 22:32:06 2009 @@ -0,0 +1,8 @@ +<html t:type="Border" + xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"> + + <h1>BeanEditor Calendar Demo</h1> + + <t:beandisplay object="holder" /> + +</html> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/IntegrationTests.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/IntegrationTests.java?rev=797996&r1=797995&r2=797996&view=diff ============================================================================== --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/IntegrationTests.java (original) +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/IntegrationTests.java Sun Jul 26 22:32:06 2009 @@ -3120,4 +3120,16 @@ assertTextPresent("read Foo"); assertTextPresent("read Bar"); } + + @Test + public void calendar_field_inside_bean_editor() + { + start("BeanEditor / Calendar Demo", "clear"); + + type("calendar", "04/06/1978"); + + clickAndWait(SUBMIT); + + assertTextPresent("Apr 6, 1978"); + } } Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/CalendarHolder.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/CalendarHolder.java?rev=797996&view=auto ============================================================================== --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/CalendarHolder.java (added) +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/CalendarHolder.java Sun Jul 26 22:32:06 2009 @@ -0,0 +1,35 @@ +// Copyright 2009 The Apache Software Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package org.apache.tapestry5.integration.app1.data; + +import java.util.Calendar; + +import org.apache.tapestry5.beaneditor.Validate; + +public class CalendarHolder +{ + private Calendar calendar; + + @Validate("required") + public Calendar getCalendar() + { + return calendar; + } + + public void setCalendar(Calendar calendar) + { + this.calendar = calendar; + } +} Propchange: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/CalendarHolder.java ------------------------------------------------------------------------------ svn:eol-style = native Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditCalendarDemo.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditCalendarDemo.java?rev=797996&view=auto ============================================================================== --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditCalendarDemo.java (added) +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditCalendarDemo.java Sun Jul 26 22:32:06 2009 @@ -0,0 +1,36 @@ +// Copyright 2009 The Apache Software Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package org.apache.tapestry5.integration.app1.pages; + +import org.apache.tapestry5.annotations.Property; +import org.apache.tapestry5.annotations.SessionState; +import org.apache.tapestry5.integration.app1.data.CalendarHolder; + +public class BeanEditCalendarDemo +{ + @SessionState + @Property + private CalendarHolder holder; + + void onActionFromClear() + { + holder = null; + } + + Object onSuccess() + { + return ShowCalendarHolder.class; + } +} Propchange: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditCalendarDemo.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java?rev=797996&r1=797995&r2=797996&view=diff ============================================================================== --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java (original) +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java Sun Jul 26 22:32:06 2009 @@ -379,7 +379,10 @@ new Item("SessionAttributeDemo", "SessionAttribute Demo", - "Annotation to map a field to a specific session attribute") + "Annotation to map a field to a specific session attribute"), + + new Item("BeanEditCalendarDemo", "BeanEditor / Calendar Demo", + "Use of calendar properties inside BeanEditor and BeanDisplay") ); Added: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowCalendarHolder.java URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowCalendarHolder.java?rev=797996&view=auto ============================================================================== --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowCalendarHolder.java (added) +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowCalendarHolder.java Sun Jul 26 22:32:06 2009 @@ -0,0 +1,27 @@ +// Copyright 2009 The Apache Software Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package org.apache.tapestry5.integration.app1.pages; + +import org.apache.tapestry5.annotations.Property; +import org.apache.tapestry5.annotations.SessionState; +import org.apache.tapestry5.integration.app1.data.CalendarHolder; + +public class ShowCalendarHolder +{ + @SessionState + @Property + private CalendarHolder holder; + +} Propchange: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowCalendarHolder.java ------------------------------------------------------------------------------ svn:eol-style = native