Author: musachy Date: Mon Dec 15 11:17:26 2008 New Revision: 726775 URL: http://svn.apache.org/viewvc?rev=726775&view=rev Log: Add Checkbox handler
Added: struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/CheckboxHandler.java struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/CheckboxTest.java Modified: struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SelectHandler.java struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java Added: struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/CheckboxHandler.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/CheckboxHandler.java?rev=726775&view=auto ============================================================================== --- struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/CheckboxHandler.java (added) +++ struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/CheckboxHandler.java Mon Dec 15 11:17:26 2008 @@ -0,0 +1,46 @@ +package org.apache.struts2.views.java.simple; + +import org.apache.struts2.views.java.TagGenerator; +import org.apache.struts2.views.java.Attributes; + +import java.io.IOException; +import java.util.Map; + +import com.opensymphony.xwork2.util.TextUtils; + +public class CheckboxHandler extends AbstractTagHandler implements TagGenerator { + @Override + public void generate() throws IOException { + Map<String, Object> params = context.getParameters(); + Attributes attrs = new Attributes(); + + String fieldValue = (String) params.get("fieldValue"); + String id = (String) params.get("id"); + String name = (String) params.get("name"); + Object disabled = params.get("disabled"); + + attrs.add("type", "checkbox") + .add("name", name) + .add("value", fieldValue) + .addIfTrue("checked", params.get("nameValue")) + .addIfTrue("readonly", params.get("readonly")) + .addIfTrue("disabled", disabled) + .addIfExists("tabindex", params.get("tabindex")) + .addIfExists("id", id) + .addIfExists("class", params.get("cssClass")) + .addIfExists("style", params.get("cssStyle")) + .addIfExists("title", params.get("title")); + start("input", attrs); + end("input"); + + //hidden input + attrs = new Attributes(); + attrs.add("type", "hidden") + .add("id", "__checkbox_" + TextUtils.htmlEncode(id)) + .add("name", "__checkbox_" + TextUtils.htmlEncode(name)) + .add("value", "__checkbox_" + TextUtils.htmlEncode(fieldValue)) + .addIfTrue("disabled", disabled); + start("input", attrs); + end("input"); + } +} Modified: struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SelectHandler.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SelectHandler.java?rev=726775&r1=726774&r2=726775&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SelectHandler.java (original) +++ struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SelectHandler.java Mon Dec 15 11:17:26 2008 @@ -39,14 +39,6 @@ import com.opensymphony.xwork2.util.TextUtils; public class SelectHandler extends AbstractTagHandler implements TagGenerator { - private Writer writer; - - @Override - public void setup(TemplateRenderingContext context) { - super.setup(context); - this.writer = context.getWriter(); - } - public void generate() throws IOException { Map<String, Object> params = context.getParameters(); Attributes a = new Attributes(); Modified: struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java?rev=726775&r1=726774&r2=726775&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java (original) +++ struts/sandbox/trunk/struts2-javatemplates-plugin/src/main/java/org/apache/struts2/views/java/simple/SimpleTheme.java Mon Dec 15 11:17:26 2008 @@ -38,6 +38,7 @@ put("select", new FactoryList(SelectHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class)); put("form", new FactoryList(FormHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class)); put("a", new FactoryList(AnchorHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class)); + put("checkbox", new FactoryList(CheckboxHandler.class, ScriptingEventsHandler.class, CommonAttributesHandler.class)); put("actionerror", new FactoryList(ActionErrorHandler.class)); put("empty", new FactoryList(EmptyHandler.class)); }}); Added: struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/CheckboxTest.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/CheckboxTest.java?rev=726775&view=auto ============================================================================== --- struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/CheckboxTest.java (added) +++ struts/sandbox/trunk/struts2-javatemplates-plugin/src/test/java/org/apache/struts2/views/java/simple/CheckboxTest.java Mon Dec 15 11:17:26 2008 @@ -0,0 +1,82 @@ +/* + * $Id: Bean.java 726216 2008-12-13 14:58:16Z musachy $ + * + * 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 org.apache.struts2.components.Checkbox; +import org.apache.struts2.components.UIBean; + +public class CheckboxTest extends AbstractCommonAttributesTest { + private Checkbox tag; + + public void testRenderCheckbox() { + tag.setName("name_"); + tag.setDisabled("true"); + tag.setTabindex("1"); + tag.setId("id_"); + tag.setCssClass("class"); + tag.setCssStyle("style"); + tag.setTitle("title"); + tag.setFieldValue("xyz"); + + tag.evaluateParams(); + map.putAll(tag.getParameters()); + theme.renderTag(getTagName(), context); + String output = writer.getBuffer().toString(); + String expected = s("<input type='checkbox' name='name_' value='xyz' tabindex='1' id='id_' class='class' style='style' title='title'></input><input type='hidden' id='__checkbox_id_' name='__checkbox_name_' value='__checkbox_xyz'></input>"); + assertEquals(expected, output); + } + + public void testRenderCheckboxWithNameValue() { + tag.setName("name_"); + tag.setValue("%{someValue}"); + tag.setDisabled("true"); + + tag.evaluateParams(); + map.putAll(tag.getParameters()); + theme.renderTag(getTagName(), context); + String output = writer.getBuffer().toString(); + String expected = s("<input type='checkbox' name='name_' value='true' checked='checked' id='name_'></input><input type='hidden' id='__checkbox_name_' name='__checkbox_name_' value='__checkbox_true'></input>"); + assertEquals(expected, output); + } + + @Override + protected void setUpStack() { + super.setUpStack(); + + expectFind("someValue", Boolean.class, true); + } + + @Override + protected void setUp() throws Exception { + super.setUp(); + tag = new Checkbox(stack, request, response); + } + + @Override + protected UIBean getUIBean() { + return tag; + } + + @Override + protected String getTagName() { + return "checkbox"; + } +}