Author: mcucchiara
Date: Sun Mar 13 18:58:08 2011
New Revision: 1081194
URL: http://svn.apache.org/viewvc?rev=1081194&view=rev
Log:
WW-3587 - Enhanced Java Template features (thanks Dustin Digmann)
Added:
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/CheckboxListHandler.java
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/RadioHandler.java
Modified:
struts/struts2/trunk/plugins/javatemplates/ (props changed)
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/HeadHandler.java
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/SubmitHandler.java
Propchange: struts/struts2/trunk/plugins/javatemplates/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Sun Mar 13 18:58:08 2011
@@ -1,5 +1,8 @@
target
-*.iml
.classpath
.settings
.project
+*.ipr
+*.iml
+*.iws
+target
Added:
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/CheckboxListHandler.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/CheckboxListHandler.java?rev=1081194&view=auto
==============================================================================
---
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/CheckboxListHandler.java
(added)
+++
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/CheckboxListHandler.java
Sun Mar 13 18:58:08 2011
@@ -0,0 +1,104 @@
+/*
+ * $Id: $
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.struts2.views.java.simple;
+
+import com.opensymphony.xwork2.util.ValueStack;
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.struts2.util.MakeIterator;
+import org.apache.struts2.views.java.Attributes;
+import org.apache.struts2.views.java.TagGenerator;
+
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.Map;
+
+public class CheckboxListHandler extends AbstractTagHandler implements
TagGenerator {
+ public void generate() throws IOException {
+
+ Map<String, Object> params = context.getParameters();
+
+ //Get parameters
+ Object listObj = params.get("list");
+ String listKey = (String) params.get("listKey");
+ String listValue = (String) params.get("listValue");
+ String name = (String) params.get("name");
+ Object disabled = params.get("disabled");
+ String id = (String) params.get("id");
+
+ int cnt = 1;
+
+ //This will interate through all lists
+ ValueStack stack = this.context.getStack();
+ if (listObj != null) {
+ Iterator itt = MakeIterator.convert(listObj);
+ while (itt.hasNext()) {
+ Object item = itt.next();
+ stack.push(item);
+
+ //key
+ Object itemKey = findValue(listKey != null ? listKey : "top");
+ String itemKeyStr = StringUtils.defaultString(itemKey == null
? null : itemKey.toString());
+
+ //value
+ Object itemValue = findValue(listValue != null ? listValue :
"top");
+ String itemValueStr = StringUtils.defaultString(itemValue ==
null ? null : itemValue.toString());
+
+ //Checkbox button section
+ Attributes a = new Attributes();
+ a.add("type", "checkbox")
+ .add("name", name)
+ .add("value", itemKeyStr)
+ .addIfTrue("checked", params.get("nameValue"))
+ .addIfTrue("readonly", params.get("readonly"))
+ .addIfTrue("disabled", disabled)
+ .addIfExists("tabindex", params.get("tabindex"))
+ .addIfExists("id", name + "-" +
Integer.toString(cnt++));
+ start("input", a);
+ end("input");
+
+ //Label section
+ a = new Attributes();
+ a.add("for",id)
+ .addIfExists("class", params.get("cssClass"))
+ .addIfExists("style", params.get("cssStyle"));
+ super.start("label", a);
+ if (StringUtils.isNotEmpty(itemValueStr))
+ characters(itemValueStr);
+ super.end("label");
+
+ //Hidden input section
+ a = new Attributes();
+ a.add("type", "hidden")
+ .add("id", "__multiselect_" +
StringUtils.defaultString(StringEscapeUtils.escapeHtml(id)))
+ .add("name", "__multiselect_" +
StringUtils.defaultString(StringEscapeUtils.escapeHtml(name)))
+ .add("value", "")
+ .addIfTrue("disabled", disabled);
+ start("input", a);
+ end("input");
+
+ stack.pop();
+
+ }
+ }
+ }
+}
Modified:
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/HeadHandler.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/HeadHandler.java?rev=1081194&r1=1081193&r2=1081194&view=diff
==============================================================================
---
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/HeadHandler.java
(original)
+++
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/HeadHandler.java
Sun Mar 13 18:58:08 2011
@@ -1,5 +1,5 @@
/*
- * $Id$
+ * $Id: $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -18,21 +18,18 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.struts2.views.java.simple;
+import org.apache.struts2.ServletActionContext;
import org.apache.struts2.views.java.Attributes;
import org.apache.struts2.views.java.TagGenerator;
-import org.apache.struts2.ServletActionContext;
import java.io.IOException;
-import java.util.Map;
-
-import com.opensymphony.xwork2.ActionContext;
public class HeadHandler extends AbstractTagHandler implements TagGenerator {
public void generate() throws IOException {
- Map<String, Object> params = context.getParameters();
Attributes attrs = new Attributes();
attrs.put("type", "text/javascript");
Added:
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/RadioHandler.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/RadioHandler.java?rev=1081194&view=auto
==============================================================================
---
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/RadioHandler.java
(added)
+++
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/RadioHandler.java
Sun Mar 13 18:58:08 2011
@@ -0,0 +1,103 @@
+/*
+ * $Id: $
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.struts2.views.java.simple;
+
+import com.opensymphony.xwork2.util.ValueStack;
+
+import org.apache.struts2.util.MakeIterator;
+import org.apache.struts2.views.java.Attributes;
+import org.apache.struts2.views.java.TagGenerator;
+import org.apache.commons.lang.StringUtils;
+
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.Map;
+
+public class RadioHandler extends AbstractTagHandler implements TagGenerator {
+ public void generate() throws IOException {
+
+ Map<String, Object> params = context.getParameters();
+
+ Object listObj = params.get("list");
+ String listKey = (String) params.get("listKey");
+ String listValue = (String) params.get("listValue");
+ // NameValue is the value that is provided by the name property in the
action
+ Object nameValue = params.get("nameValue");
+ int cnt = 0;
+
+ ValueStack stack = this.context.getStack();
+ if (listObj != null) {
+ Iterator itt = MakeIterator.convert(listObj);
+ while (itt.hasNext()) {
+ Object item = itt.next();
+ stack.push(item);
+
+ //key
+ Object itemKey = findValue(listKey != null ? listKey : "top");
+ String itemKeyStr = StringUtils.defaultString(itemKey == null
? null : itemKey.toString());
+
+ //value
+ Object itemValue = findValue(listValue != null ? listValue :
"top");
+ String itemValueStr = StringUtils.defaultString(itemValue ==
null ? null : itemValue.toString());
+
+ //Namevalue needs to cast to a string from object. It's object
because the
+ //Property can be defined as String or as Integer
+ String itemNameValueStr;
+ if (nameValue instanceof java.lang.Integer || nameValue
instanceof java.lang.String)
+ itemNameValueStr = nameValue.toString();
+ else
+ itemNameValueStr = null;
+
+ //Checked value. It's set to true if the nameValue (the value
associated with the name which is typically set in
+ //the action is equal to the current key value.
+ Boolean checked = itemKeyStr != null &&
+ itemNameValueStr != null &&
+ itemNameValueStr.equals(itemKeyStr);
+
+ //Radio button section
+ String id = params.get("id") + Integer.toString(cnt++);
+ Attributes a = new Attributes();
+ a.add("type", "radio")
+ .addDefaultToEmpty("name", params.get("name"))
+ .addIfTrue("checked", checked)
+ .addIfExists("value", itemKeyStr, false)
+ .addIfTrue("disabled", params.get("disabled"))
+ .addIfExists("tabindex", params.get("tabindex"))
+ .addIfExists("id", id);
+ super.start("input", a);
+ super.end("input");
+
+ //Label section
+ a = new Attributes();
+ a.addIfExists("for", id)
+ .addIfExists("class", params.get("cssClass"))
+ .addIfExists("style", params.get("cssStyle"))
+ .addIfExists("title", params.get("title"));
+ super.start("label", a);
+ if (StringUtils.isNotEmpty(itemValueStr))
+ characters(itemValueStr);
+ super.end("label");
+ stack.pop();
+ }
+ }
+ }
+}
Modified:
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java?rev=1081194&r1=1081193&r2=1081194&view=diff
==============================================================================
---
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java
(original)
+++
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java
Sun Mar 13 18:58:08 2011
@@ -49,6 +49,8 @@ public class SimpleTheme extends Default
put("submit", new FactoryList(SubmitHandler.class,
ScriptingEventsHandler.class, CommonAttributesHandler.class,
DynamicAttributesHandler.class));
put("submit-close", new
FactoryList(SubmitHandler.CloseHandler.class));
put("textarea", new FactoryList(TextAreaHandler.class,
ScriptingEventsHandler.class, CommonAttributesHandler.class,
DynamicAttributesHandler.class));
+ put("radiomap", new FactoryList(RadioHandler.class,
ScriptingEventsHandler.class, CommonAttributesHandler.class,
DynamicAttributesHandler.class));
+ put("checkboxlist", new FactoryList(CheckboxListHandler.class,
ScriptingEventsHandler.class, CommonAttributesHandler.class,
DynamicAttributesHandler.class));
put("actionerror", new FactoryList(ActionErrorHandler.class));
put("token", new FactoryList(TokenHandler.class));
put("actionmessage", new
FactoryList(ActionMessageHandler.class));
@@ -65,7 +67,7 @@ public class SimpleTheme extends Default
private class FactoryList extends ArrayList<TagHandlerFactory> {
- private static final long serialVersionUID = -1551895041394434032L;
+ private static final long serialVersionUID = -1551895041394434032L;
public FactoryList(Class... classes) {
super();
Modified:
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/SubmitHandler.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/SubmitHandler.java?rev=1081194&r1=1081193&r2=1081194&view=diff
==============================================================================
---
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/SubmitHandler.java
(original)
+++
struts/struts2/trunk/plugins/javatemplates/src/main/java/org/apache/struts2/views/java/simple/SubmitHandler.java
Sun Mar 13 18:58:08 2011
@@ -1,5 +1,5 @@
/*
- * $Id$
+ * $Id: $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -49,9 +49,11 @@ public class SubmitHandler extends Abstr
} else if ("image".equals(type)) {
attrs.addIfExists("src", params.get("src"), false)
.add("type", "image")
- .addIfExists("alt", params.get("label"));
-
- start("input", attrs);
+ .addIfExists("alt", params.get("label"))
+ .addIfExists("id", params.get("id"))
+ .addIfExists("class", params.get("cssClass"))
+ .addIfExists("style", params.get("cssStyle"));
+ start("input", attrs);
} else {
attrs.addIfExists("name", params.get("name"))
.add("type", "submit")
@@ -69,7 +71,6 @@ public class SubmitHandler extends Abstr
public static class CloseHandler extends AbstractTagHandler implements
TagGenerator {
public void generate() throws IOException {
Map<String, Object> params = context.getParameters();
- Attributes attrs = new Attributes();
String body = (String) params.get("body");
String type = StringUtils.defaultString((String)
params.get("type"), "input");