You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2015/04/06 21:51:00 UTC

tapestry-5 git commit: TAP5-1862: DateField component: allow 'type' attribute to be specified

Repository: tapestry-5
Updated Branches:
  refs/heads/master 840533975 -> dcd31d68a


TAP5-1862: DateField component: allow 'type' attribute to be specified


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/dcd31d68
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/dcd31d68
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/dcd31d68

Branch: refs/heads/master
Commit: dcd31d68a7bf755fe0e5a8bf922646a4f86553f5
Parents: 8405339
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Mon Apr 6 12:50:54 2015 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Mon Apr 6 12:50:54 2015 -0700

----------------------------------------------------------------------
 .../tapestry5/corelib/components/DateField.java | 37 ++++++++++++++------
 1 file changed, 27 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/dcd31d68/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.java
index 2e47739..94a9a1f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.java
@@ -18,6 +18,7 @@ import org.apache.tapestry5.annotations.Import;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.RequestParameter;
 import org.apache.tapestry5.corelib.base.AbstractField;
+import org.apache.tapestry5.dom.Element;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Symbol;
@@ -35,11 +36,11 @@ import java.util.Locale;
 /**
  * A component used to collect a provided date from the user using a client-side JavaScript calendar. Non-JavaScript
  * clients can simply type into a text field.
- *
+ * <p/>
  * One aspect here is that, because client-side JavaScript formatting and parsing is so limited, we (currently)
  * use Ajax to send the user's input to the server for parsing (before raising the popup) and formatting (after closing
  * the popup). Weird and inefficient, but easier than writing client-side JavaScript for that purpose.
- *
+ * <p/>
  * Tapestry's DateField component is a wrapper around <a
  * href="http://webfx.eae.net/dhtml/datepicker/datepicker.html">WebFX DatePicker</a>.
  *
@@ -66,12 +67,22 @@ public class DateField extends AbstractField
      */
     @Parameter(required = true, allowNull = false, defaultPrefix = BindingConstants.LITERAL)
     private DateFormat format;
-    
+
+    /**
+     * Allows the type of field to be output; normally this is "text", but can be updated to "date" or "datetime"
+     * as per the HTML 5 specification.
+     *
+     * @since 5.4
+     */
+    @Parameter(allowNull = false, defaultPrefix = BindingConstants.LITERAL, value = "text")
+    private String type;
+
     /**
      * When the <code>format</code> parameter isn't used, this parameter defines whether the
      * <code>DateFormat</code> created by this component will be lenient or not.
      * The default value of this parameter is the value of the {@link SymbolConstants#LENIENT_DATE_FORMAT}
      * symbol.
+     *
      * @see DateFormat#setLenient(boolean)
      * @see SymbolConstants#LENIENT_DATE_FORMAT
      * @since 5.4
@@ -93,7 +104,7 @@ public class DateField extends AbstractField
     @Parameter(defaultPrefix = BindingConstants.VALIDATE)
     @SuppressWarnings("unchecked")
     private FieldValidator<Object> validate;
-    
+
     /**
      * Icon used for the date field trigger button. This was used in Tapestry 5.3 and earlier and is now ignored.
      *
@@ -116,7 +127,7 @@ public class DateField extends AbstractField
 
     @Inject
     private DeprecationWarning deprecationWarning;
-    
+
     @Inject
     @Symbol(SymbolConstants.LENIENT_DATE_FORMAT)
     private boolean lenientDateFormatSymbolValue;
@@ -142,7 +153,7 @@ public class DateField extends AbstractField
             String pattern = simpleDateFormat.toPattern();
 
             String revised = pattern.replaceAll("([^y])yy$", "$1yyyy");
-            
+
             final SimpleDateFormat revisedDateFormat = new SimpleDateFormat(revised);
             revisedDateFormat.setLenient(lenient);
             return revisedDateFormat;
@@ -158,8 +169,9 @@ public class DateField extends AbstractField
     {
         return defaultProvider.defaultValidatorBinding("value", resources);
     }
-    
-    final boolean defaultLenient() {
+
+    final boolean defaultLenient()
+    {
         return lenientDateFormatSymbolValue;
     }
 
@@ -233,9 +245,9 @@ public class DateField extends AbstractField
             writer.attributes("class", "input-group");
         }
 
-        writer.element("input",
+        Element field = writer.element("input",
 
-                "type", hideTextField ? "hidden" : "text",
+                "type", type,
 
                 "class", cssClass,
 
@@ -245,6 +257,11 @@ public class DateField extends AbstractField
 
                 "value", value);
 
+        if (hideTextField)
+        {
+            field.attribute("class", "hide");
+        }
+
         writeDisabled(writer);
 
         putPropertyNameIntoBeanValidationContext("value");