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


Reply via email to