Author: musachy
Date: Tue Mar 10 19:07:20 2009
New Revision: 752217

URL: http://svn.apache.org/viewvc?rev=752217&view=rev
Log:
add dynamic options

Modified:
    
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/components/JQueryDatepicker.java
    
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/views/jsp/ui/JQueryDatepickerTag.java
    
struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/template/jquery-simple/datepicker.ftl
    struts/sandbox/trunk/struts2-jquery-plugin/src/site/docs/datepicker.html

Modified: 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/components/JQueryDatepicker.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/components/JQueryDatepicker.java?rev=752217&r1=752216&r2=752217&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/components/JQueryDatepicker.java
 (original)
+++ 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/components/JQueryDatepicker.java
 Tue Mar 10 19:07:20 2009
@@ -22,6 +22,7 @@
 
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ValueStack;
+import com.opensymphony.xwork2.util.TextUtils;
 import com.opensymphony.xwork2.util.logging.Logger;
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
 import org.apache.struts2.jquery.JQueryPluginConstants;
@@ -37,6 +38,7 @@
 import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 @StrutsTag(
         name = "datepicker",
@@ -54,6 +56,7 @@
     private String displayFormat;
     private String imageUrl;
     private String imageTooltip;
+    private String options;
 
     public JQueryDatepicker(ValueStack stack, HttpServletRequest request, 
HttpServletResponse response) {
         super(stack, request, response);
@@ -76,6 +79,12 @@
         else
             addParameter("imageTooltip", "Pick a date");
 
+        if (this.options != null) {
+            String ops = findString(this.options);
+            if (TextUtils.stringSet(ops))
+                addParameter("options", TextUtils.escapeJavaScript(ops));
+        }
+
         Object currentValue = null;
         if (parameters.containsKey("nameValue")) {
             currentValue = parameters.get("nameValue");
@@ -93,12 +102,19 @@
                 addParameter("year", calendar.get(Calendar.YEAR));
                 addParameter("day", calendar.get(Calendar.DAY_OF_MONTH));
                 addParameter("month", calendar.get(Calendar.MONTH));
+            } else {
+                //the value could not be parsed into a Date, display as is
+                addParameter("displayValue", currentValue.toString());
             }
         }
     }
 
+    @Override
+    protected Class getValueClassType() {
+        return Object.class;
+    }
+
     private Date getDate(Object obj) {
-        SimpleDateFormat simpleDisplayFormat = new 
SimpleDateFormat(displayFormat);
         if (obj == null)
             return null;
 
@@ -113,8 +129,6 @@
                 return new Date();
             }
 
-
-            Date date = null;
             //formats used to parse the date
             List<DateFormat> formats = new ArrayList<DateFormat>();
             formats.add(new SimpleDateFormat(RFC3339_FORMAT));
@@ -134,7 +148,7 @@
 
             for (DateFormat format : formats) {
                 try {
-                    date = format.parse(dateStr);
+                    Date date = format.parse(dateStr);
                     if (date != null)
                         return date;
                 } catch (Exception e) {
@@ -149,6 +163,9 @@
         }
     }
 
+    public static void main(String[] s) {
+        
System.out.print(SimpleDateFormat.getDateInstance(DateFormat.SHORT).format(new 
Date()));
+    }
     protected String getDefaultTemplate() {
         return TEMPLATE;
     }
@@ -174,4 +191,9 @@
         this.imageUrl = imageUrl;
     }
 
+    @StrutsTagAttribute(description = "The name of a variable(or a javascript 
map) that contains additional options to be passed to JQuery" +
+            " Datepicker")
+    public void setOptions(String options) {
+        this.options = options;
+    }
 }

Modified: 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/views/jsp/ui/JQueryDatepickerTag.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/views/jsp/ui/JQueryDatepickerTag.java?rev=752217&r1=752216&r2=752217&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/views/jsp/ui/JQueryDatepickerTag.java
 (original)
+++ 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/java/org/apache/struts2/jquery/views/jsp/ui/JQueryDatepickerTag.java
 Tue Mar 10 19:07:20 2009
@@ -32,6 +32,7 @@
     private String displayFormat;
     private String imageUrl;
     private String imageTooltip;
+    private String options;
 
     public Component getBean(ValueStack stack, HttpServletRequest req, 
HttpServletResponse res) {
         return new JQueryDatepicker(stack, req, res);
@@ -43,6 +44,7 @@
         picker.setDisplayFormat(displayFormat);
         picker.setImageTooltip(imageTooltip);
         picker.setImageUrl(imageUrl);
+        picker.setOptions(options);
     }
 
     public void setDisplayFormat(String displayFormat) {
@@ -56,4 +58,8 @@
     public void setImageUrl(String imageUrl) {
         this.imageUrl = imageUrl;
     }
+
+    public void setOptions(String options) {
+        this.options = options;
+    }
 }

Modified: 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/template/jquery-simple/datepicker.ftl
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/template/jquery-simple/datepicker.ftl?rev=752217&r1=752216&r2=752217&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/template/jquery-simple/datepicker.ftl
 (original)
+++ 
struts/sandbox/trunk/struts2-jquery-plugin/src/main/resources/template/jquery-simple/datepicker.ftl
 Tue Mar 10 19:07:20 2009
@@ -60,7 +60,7 @@
 />
 <script type="text/javascript">
     $(function() {
-        $("#${parameters.id?html}").datepicker({
+        var ops = {
             altField: "#${parameters.id?html}_hidden",
             altFormat: "yy-mm-dd'T'00:00:00",
             dateFormat : "${parameters.displayFormat?html}",
@@ -72,7 +72,17 @@
             buttonImageOnly: true,
             showOn: "both",
             buttonText: "${parameters.imageTooltip}"
-        });
+        };
+
+        <#if parameters.options??>
+            var ops2 = window["${parameters.options}"];
+            if (!ops2) {
+                ops2 = eval ("( ${parameters.options} )" );
+            }
+            $.extend(ops, ops2);
+        </#if>
+
+        $("#${parameters.id?html}").datepicker(ops);
         <#if parameters.year?? && parameters.month?? && parameters.day??>
         
$("#${parameters.id?html}").val($.datepicker.formatDate("${parameters.displayFormat?html}",
 new Date(${parameters.year?c}, ${parameters.month}, ${parameters.day})));
         </#if>

Modified: 
struts/sandbox/trunk/struts2-jquery-plugin/src/site/docs/datepicker.html
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-jquery-plugin/src/site/docs/datepicker.html?rev=752217&r1=752216&r2=752217&view=diff
==============================================================================
--- struts/sandbox/trunk/struts2-jquery-plugin/src/site/docs/datepicker.html 
(original)
+++ struts/sandbox/trunk/struts2-jquery-plugin/src/site/docs/datepicker.html 
Tue Mar 10 19:07:20 2009
@@ -290,6 +290,14 @@
                                        <td align="left" valign="top">Set the 
html onselect attribute on rendered html element</td>
                                </tr>
                                <tr>
+                                       <td align="left" 
valign="top">options</td>
+                                       <td align="left" valign="top">false</td>
+                                       <td align="left" valign="top"></td>
+                                       <td align="left" valign="top">false</td>
+                                       <td align="left" 
valign="top">String</td>
+                                       <td align="left" valign="top">The name 
of a variable(or a javascript map) that contains additional options to be 
passed to JQuery Datepicker</td>
+                               </tr>
+                               <tr>
                                        <td align="left" 
valign="top">readonly</td>
                                        <td align="left" valign="top">false</td>
                                        <td align="left" valign="top">false</td>


Reply via email to