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");


Reply via email to