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>