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