You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2014/07/10 09:41:22 UTC
[2/3] WW-3764 WW-1832 Adds small demo app to demonstrate possible
usage of struts.ui.templateDir
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/head.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/head.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/head.ftl
new file mode 100644
index 0000000..03c3940
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/head.ftl
@@ -0,0 +1,23 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<script src="${base}/struts/utils.js" type="text/javascript"></script>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/hidden.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/hidden.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/hidden.ftl
new file mode 100644
index 0000000..4f91237
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/hidden.ftl
@@ -0,0 +1,41 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<input type="hidden"<#rt/>
+ name="${parameters.name?default("")?html}"<#rt/>
+<#if parameters.nameValue??>
+ value="<@s.property value="parameters.nameValue"/>"<#rt/>
+</#if>
+<#if parameters.id??>
+ id="${parameters.id?html}"<#rt/>
+</#if>
+<#if parameters.cssClass??>
+ class="${parameters.cssClass?html}"<#rt/>
+</#if>
+<#if parameters.cssStyle??>
+ style="${parameters.cssStyle?html}"<#rt/>
+</#if>
+<#if parameters.disabled?default(false)>
+ disabled="disabled"<#rt/>
+</#if>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
+/>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/inputtransferselect.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/inputtransferselect.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/inputtransferselect.ftl
new file mode 100644
index 0000000..610eeb2
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/inputtransferselect.ftl
@@ -0,0 +1,124 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<#if !stack.findValue("#inputtransferselect_js_included")??><#t/>
+ <script type="text/javascript" src="<@s.url value="/struts/inputtransferselect.js" encode='false' includeParams='none'/>"></script>
+ <#assign temporaryVariable = stack.setValue("#inputtransferselect_js_included", "true") /><#t/>
+</#if><#t/>
+<table border="0">
+<tr>
+<td>
+<#if parameters.leftTitle??><#t/>
+ <label for="leftTitle">${parameters.leftTitle}</label><br />
+</#if><#t/>
+
+
+<input type="text"<#rt/>
+ name="${parameters.name?default("")?html}_input"<#rt/>
+<#if parameters.disabled?default(false)>
+ disabled="disabled"<#rt/>
+</#if>
+<#if parameters.readonly?default(false)>
+ readonly="readonly"<#rt/>
+</#if>
+<#if parameters.tabindex??>
+ tabindex="${parameters.tabindex?html}"<#rt/>
+</#if>
+<#if parameters.id??>
+ id="${parameters.id?html}_input"<#rt/>
+</#if>
+<#if parameters.cssClass??>
+ class="${parameters.cssClass?html}"<#rt/>
+</#if>
+<#if parameters.cssStyle??>
+ style="${parameters.cssStyle?html}"<#rt/>
+</#if>
+<#if parameters.title??>
+ title="${parameters.title?html}"<#rt/>
+</#if>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
+/>
+
+
+</td>
+<td valign="middle" align="center">
+ <#assign addLabel=parameters.addLabel?default("->")?html /><#t/>
+ <input type="button"
+ <#if parameters.buttonCssClass??><#t/>
+ class="${parameters.buttonCssClass?html}"
+ </#if><#t/>
+ <#if parameters.buttonCssStyle??>
+ style="${parameters.buttonCssStyle?html}"
+ </#if><#t/>
+ value="${addLabel}" onclick="addOption(document.getElementById('${parameters.id?html}_input'), document.getElementById('${parameters.id?html}'))" /><br /><br />
+ <#t/>
+ <#assign removeLabel=parameters.removeLabel?default("<-")?html /><#t/>
+ <input type="button"
+ <#if parameters.buttonCssClass??><#t/>
+ class="${parameters.buttonCssClass?html}"
+ </#if><#t/>
+ <#if parameters.buttonCssStyle??>
+ style="${parameters.buttonCssStyle?html}"
+ </#if><#t/>
+ value="${removeLabel}" onclick="removeOptions(document.getElementById('${parameters.id?html}'))" /><br /><br />
+ <#t/>
+ <#assign removeAllLabel=parameters.removeAllLabel?default("<<--")?html /><#t/>
+ <input type="button"
+ <#if parameters.buttonCssClass??><#t/>
+ class="${parameters.buttonCssClass?html}"
+ </#if><#t/>
+ <#if parameters.buttonCssStyle??>
+ style="${parameters.buttonCssStyle?html}"
+ </#if><#t/>
+ value="${removeAllLabel}" onclick="removeAllOptions(document.getElementById('${parameters.id?html}'))" /><br /><br />
+</td>
+<td>
+<#if parameters.rightTitle??><#t/>
+ <label for="rightTitle">${parameters.rightTitle}</label><br />
+</#if><#t/>
+<#include "/${parameters.templateDir}/simple/select.ftl" />
+<#if parameters.allowUpDown?default(true)>
+<input type="button"
+<#if parameters.headerKey??>
+ onclick="moveOptionDown(document.getElementById('${parameters.id}'), 'key', '${parameters.headerKey}');"
+<#else>
+ onclick="moveOptionDown(document.getElementById('${parameters.id}'), 'key', '');"
+</#if>
+<#if parameters.downLabel??>
+ value="${parameters.downLabel?html}"
+</#if>
+/>
+<input type="button"
+<#if parameters.headerKey??>
+ onclick="moveOptionUp(document.getElementById('${parameters.id}'), 'key', '${parameters.headerKey}');"
+<#else>
+ onclick="moveOptionUp(document.getElementById('${parameters.id}'), 'key', '');"
+</#if>
+<#if parameters.upLabel??>
+ value="${parameters.upLabel?html}"
+</#if>
+/>
+</#if>
+</td>
+</tr>
+</table>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/label.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/label.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/label.ftl
new file mode 100644
index 0000000..53524d4
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/label.ftl
@@ -0,0 +1,45 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<label<#rt/>
+<#if parameters.id??>
+ id="${parameters.id?html}"<#rt/>
+</#if>
+<#if parameters.cssClass??>
+ class="${parameters.cssClass?html}"<#rt/>
+</#if>
+<#if parameters.cssStyle??>
+ style="${parameters.cssStyle?html}"<#rt/>
+</#if>
+<#if parameters.title??>
+ title="${parameters.title?html}"<#rt/>
+</#if>
+<#if parameters.for??>
+ for="${parameters.for?html}"<#rt/>
+</#if>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
+><#rt/>
+<#if parameters.nameValue??>
+<@s.property value="parameters.nameValue"/><#t/>
+</#if>
+</label>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/optgroup.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/optgroup.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/optgroup.ftl
new file mode 100644
index 0000000..6d503b7
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/optgroup.ftl
@@ -0,0 +1,51 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<#if parameters.optGroupInternalListUiBeanList??>
+<#assign optGroupInternalListUiBeans=parameters.optGroupInternalListUiBeanList />
+<#list optGroupInternalListUiBeans as optGroupInternalListUiBean>
+<optgroup
+ <#if optGroupInternalListUiBean.parameters.label??>
+ label="${optGroupInternalListUiBean.parameters.label}"
+ </#if>
+ <#if optGroupInternalListUiBean.parameters.disabled?default(false)>
+ disabled="disabled"
+ </#if>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
+>
+
+<#list optGroupInternalListUiBean.parameters.list as optGroupBean>
+<#assign trash=stack.push(optGroupBean) />
+ <#assign tmpKey=stack.findValue(optGroupInternalListUiBean.parameters.listKey) />
+ <#assign tmpValue=stack.findValue(optGroupInternalListUiBean.parameters.listValue) />
+ <#assign tmpKeyStr = tmpKey.toString() />
+ <option value="${tmpKeyStr?html}"
+ <#if tag.contains(parameters.nameValue, tmpKeyStr) == true>
+ selected="selected"
+ </#if>
+ >${tmpValue?html}
+ </option>
+<#assign trash=stack.pop() />
+</#list>
+</optgroup>
+</#list>
+</#if>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/optiontransferselect.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/optiontransferselect.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/optiontransferselect.ftl
new file mode 100644
index 0000000..62136f7
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/optiontransferselect.ftl
@@ -0,0 +1,301 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<#if !stack.findValue("#optiontransferselect_js_included")??><#t/>
+ <script type="text/javascript" src="<@s.url value="/struts/optiontransferselect.js" encode='false' includeParams='none'/>"></script>
+ <#assign temporaryVariable = stack.setValue("#optiontransferselect_js_included", "true") /><#t/>
+</#if><#t/>
+<table border="0">
+<tr>
+<td>
+<#if parameters.leftTitle??><#t/>
+ <label for="leftTitle">${parameters.leftTitle}</label><br />
+</#if><#t/>
+<#include "/${parameters.templateDir}/simple/select.ftl" />
+<#if parameters.allowUpDownOnLeft?default(true)>
+<input type="button"
+ onclick="moveOptionDown(document.getElementById('${parameters.id}'), 'key', <#if parameters.headerKey??>'${parameters.headerKey}'<#else>''</#if>);<#if parameters.upDownOnLeftOnclick?has_content>${parameters.upDownOnLeftOnclick};</#if>"
+<#if parameters.leftDownLabel??>
+ value="${parameters.leftDownLabel?html}"
+</#if>
+/>
+<input type="button"
+ onclick="moveOptionUp(document.getElementById('${parameters.id}'), 'key', <#if parameters.headerKey??>'${parameters.headerKey}'<#else>''</#if>);<#if parameters.upDownOnLeftOnclick?has_content>${parameters.upDownOnLeftOnclick};</#if>"
+<#if parameters.leftUpLabel??>
+ value="${parameters.leftUpLabel?html}"
+</#if>
+/>
+</#if>
+
+</td>
+<td valign="middle" align="center">
+ <#if parameters.allowAddToLeft?default(true)><#t/>
+ <#assign addToLeftLabel = parameters.addToLeftLabel?default("<-")?html/><#t/>
+ <#if parameters.doubleHeaderKey??><#t/>
+ <input type="button"
+ <#if parameters.buttonCssClass??><#t/>
+ class="${parameters.buttonCssClass?html}"
+ </#if><#t/>
+ <#if parameters.buttonCssStyle??><#t/>
+ style="${parameters.buttonCssStyle?html}"
+ </#if><#t/>
+ value="${addToLeftLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.doubleId?html}'), document.getElementById('${parameters.id?html}'), false, '${parameters.doubleHeaderKey}', '');<#if parameters.addToLeftOnclick?has_content>${parameters.addToLeftOnclick};</#if>" /><br /><br />
+ <#else><#t/>
+ <input type="button"
+ <#if parameters.buttonCssClass??><#t/>
+ class="${parameters.buttonCssClass?html}"
+ </#if><#t/>
+ <#if parameters.buttonCssStyle??><#t/>
+ style="${parameters.buttonCssStyle?html}"
+ </#if><#t/>
+ value="${addToLeftLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.doubleId?html}'), document.getElementById('${parameters.id?html}'), false, '');<#if parameters.addToLeftOnclick?has_content>${parameters.addToLeftOnclick};</#if>" /><br /><br />
+ </#if><#t/>
+ </#if><#t/>
+ <#if parameters.allowAddToRight?default(true)><#t/>
+ <#assign addToRightLabel=parameters.addToRightLabel?default("->")?html /><#t/>
+ <#if parameters.headerKey??><#t/>
+ <input type="button"
+ <#if parameters.buttonCssClass??><#t/>
+ class="${parameters.buttonCssClass?html}"
+ </#if><#t/>
+ <#if parameters.buttonCssStyle??><#t/>
+ style="${parameters.buttonCssStyle?html}"
+ </#if><#t/>
+ value="${addToRightLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.id?html}'), document.getElementById('${parameters.doubleId?html}'), false, '${parameters.headerKey}', '');<#if parameters.addToRightOnclick?has_content>${parameters.addToRightOnclick};</#if>" /><br /><br />
+ <#else><#t/>
+ <input type="button"
+ <#if parameters.buttonCssClass??><#t/>
+ class="${parameters.buttonCssClass?html}"
+ </#if><#t/>
+ <#if parameters.buttonCssStyle??>
+ style="${parameters.buttonCssStyle?html}"
+ </#if><#t/>
+ value="${addToRightLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.id?html}'), document.getElementById('${parameters.doubleId?html}'), false, '');<#if parameters.addToRightOnclick?has_content>${parameters.addToRightOnclick};</#if>" /><br /><br />
+ </#if><#t/>
+ </#if><#t/>
+ <#if parameters.allowAddAllToLeft?default(true)><#t/>
+ <#assign addAllToLeftLabel=parameters.addAllToLeftLabel?default("<<--")?html /><#t/>
+ <#if parameters.doubleHeaderKey??><#t/>
+ <input type="button"
+ <#if parameters.buttonCssClass??><#t/>
+ class="${parameters.buttonCssClass}"
+ </#if><#t/>
+ <#if parameters.buttonCssStyle??><#t/>
+ style="${parameters.buttonCssStyle}"
+ </#if><#t/>
+ value="${addAllToLeftLabel}" onclick="moveAllOptions(document.getElementById('${parameters.doubleId?html}'), document.getElementById('${parameters.id?html}'), false, '${parameters.doubleHeaderKey}', '');<#if parameters.addAllToLeftOnclick?has_content>${parameters.addAllToLeftOnclick};</#if>" /><br /><br />
+ <#else><#t/>
+ <input type="button"
+ <#if parameters.buttonCssClass??><#t/>
+ class="${parameters.buttonCssClass?html}"
+ </#if><#t/>
+ <#if parameters.buttonCssStyle??><#t/>
+ style="${parameters.buttonCssStyle?html}"
+ </#if><#t/>
+ value="${addAllToLeftLabel}" onclick="moveAllOptions(document.getElementById('${parameters.doubleId?html}'), document.getElementById('${parameters.id?html}'), false, '');<#if parameters.addAllToLeftOnclick?has_content>${parameters.addAllToLeftOnclick};</#if>" /><br /><br />
+ </#if><#t/>
+ </#if><#t/>
+ <#if parameters.allowAddAllToRight?default(true)><#t/>
+ <#assign addAllToRightLabel=parameters.addAllToRightLabel?default("-->>")?html /><#t/>
+ <#if parameters.headerKey??><#t/>
+ <input type="button"
+ <#if parameters.buttonCssClass??><#t/>
+ class="${parameters.buttonCssClass?html}"
+ </#if><#t/>
+ <#if parameters.buttonCssStyle??><#t/>
+ style="${parameters.buttonCssStyle?html}"
+ </#if><#t/>
+ value="${addAllToRightLabel}" onclick="moveAllOptions(document.getElementById('${parameters.id?html}'), document.getElementById('${parameters.doubleId?html}'), false, '${parameters.headerKey}', '');<#if parameters.addAllToRightOnclick?has_content>${parameters.addAllToRightOnclick};</#if>" /><br /><br />
+ <#else><#t/>
+ <input type="button"
+ <#if parameters.buttonCssClass??><#t/>
+ class="${parameters.buttonCssClass?html}"
+ </#if><#t/>
+ <#if parameters.buttonCssStyle??><#t/>
+ style="${parameters.buttonCssStyle?html}"
+ </#if><#t/>
+ value="${addAllToRightLabel}" onclick="moveAllOptions(document.getElementById('${parameters.id?html}'), document.getElementById('${parameters.doubleId?html}'), false, '');<#if parameters.addAllToRightOnclick?has_content>${parameters.addAllToRightOnclick};</#if>" /><br /><br />
+ </#if><#t/>
+ </#if><#t/>
+ <#if parameters.allowSelectAll?default(true)><#t/>
+ <#assign selectAllLabel=parameters.selectAllLabel?default("<*>")?html /><#t/>
+ <#if parameters.headerKey?? && parameters.doubleHeaderKey??><#t/>
+ <input type="button"
+ <#if parameters.buttonCssClass??><#t/>
+ class="${parameters.buttonCssClass?html}"
+ </#if><#t/>
+ <#if parameters.buttonCssStyle??><#t/>
+ style="${parameters.buttonCssStyle?html}"
+ </#if><#t/>
+ value="${selectAllLabel}" onclick="selectAllOptionsExceptSome(document.getElementById('${parameters.id?html}'), 'key', '${parameters.headerKey}');selectAllOptionsExceptSome(document.getElementById('${parameters.doubleId?html}'), 'key', '${parameters.doubleHeaderKey}');<#if parameters.selectAllOnclick?has_content>${parameters.selectAllOnclick};</#if>" /><br /><br />
+ <#elseif parameters.headerKey??><#t/>
+ <input type="button"
+ <#if parameters.buttonCssClass??><#t/>
+ class="${parameters.buttonCssClass?html}"
+ </#if><#t/>
+ <#if parameters.buttonCssStyle??><#t/>
+ style="${parameters.buttonCssStyle?html}"
+ </#if><#t/>
+ value="${selectAllLabel}" onclick="selectAllOptionsExceptSome(document.getElementById('${parameters.id?html}'), 'key', '${parameters.headerKey}');selectAllOptions(document.getElementById('${parameters.doubleId?html}'));<#if parameters.selectAllOnclick?has_content>${parameters.selectAllOnclick};</#if>" /><br /><br />
+ <#elseif parameters.doubleHeaderKey??><#t/>
+ <input type="button"
+ <#if parameters.buttonCssClass??><#t/>
+ class="${parameters.buttonCssClass?html}"
+ </#if><#t/>
+ <#if parameters.buttonCssStyle??><#t/>
+ style="${parameters.buttonCssStyle?html}"
+ </#if><#t/>
+ value="${selectAllLabel}" onclick="selectAllOptions(document.getElementById('${parameters.id?html}'));selectAllOptionsExceptSome(document.getElementById('${parameters.doubleId?html}'), 'key', '${parameters.doubleHeaderKey}');<#if parameters.selectAllOnclick?has_content>${parameters.selectAllOnclick};</#if>" /><br /><br />
+ <#else><#t/>
+ <input type="button"
+ <#if parameters.buttonCssClass??><#t/>
+ class="${parameters.buttonCssClass?html}"
+ </#if><#t/>
+ <#if parameters.buttonCssStyle??><#t/>
+ style="${parameters.buttonCssStyle?html}"
+ </#if><#t/>
+ value="${selectAllLabel}" onclick="selectAllOptions(document.getElementById('${parameters.id?html}'));selectAllOptions(document.getElementById('${parameters.doubleId?html}'));<#if parameters.selectAllOnclick?has_content>${parameters.selectAllOnclick};</#if>" /><br /><br />
+ </#if><#t/>
+ </#if><#t/>
+</td>
+<td>
+<#if parameters.rightTitle??><#t/>
+ <label for="rightTitle">${parameters.rightTitle}</label><br />
+</#if><#t/>
+<select
+ name="${parameters.doubleName?default("")?html}"
+ <#if parameters.get("doubleSize")??><#t/>
+ size="${parameters.get("doubleSize")?html}"
+ </#if><#t/>
+ <#if parameters.doubleDisabled?default(false)><#t/>
+ disabled="disabled"
+ </#if><#t/>
+ <#if parameters.doubleMultiple?default(false)><#t/>
+ multiple="multiple"
+ </#if><#t/>
+ <#if parameters.doubleTabindex??><#t/>
+ tabindex="${parameters.tabindex?html}"
+ </#if><#t/>
+ <#if parameters.doubleId??><#t/>
+ id="${parameters.doubleId?html}"
+ </#if><#t/>
+ <#if parameters.doubleCss??><#t/>
+ class="${parameters.doubleCss?html}"
+ </#if><#t/>
+ <#if parameters.doubleStyle??><#t/>
+ style="${parameters.doubleStyle?html}"
+ </#if><#t/>
+ <#if parameters.doubleOnclick??><#t/>
+ onclick="${parameters.doubleOnclick?html}"
+ </#if><#t/>
+ <#if parameters.doubleOndblclick??><#t/>
+ ondblclick="${parameters.doubleOndblclick?html}"
+ </#if><#t/>
+ <#if parameters.doubleOnmousedown??><#t/>
+ onmousedown="${parameters.doubleOnmousedown?html}"
+ </#if><#t/>
+ <#if parameters.doubleOnmouseup??><#t/>
+ onmouseup="${parameters.doubleOnmouseup?html}"
+ </#if><#t/>
+ <#if parameters.doubleOnmousemove??><#t/>
+ onmousemove="${parameters.doubleOnmousemove?html}"
+ </#if><#t/>
+ <#if parameters.doubleOnmouseover??><#t/>
+ onmouseover="${parameters.doubleOnmouseover?html}"
+ </#if><#t/>
+ <#if parameters.doubleOnmouseout??><#t/>
+ onmouseout="${parameters.doubleOnmouseout?html}"
+ </#if><#t/>
+ <#if parameters.doubleOnfocus??><#t/>
+ onfocus="${parameters.doubleOnfocus?html}"
+ </#if><#t/>
+ <#if parameters.doubleOnblur??><#t/>
+ onblur="${parameters.doubleOnblur?html}"
+ </#if><#t/>
+ <#if parameters.doubleOnkeypress??><#t/>
+ onkeypress="${parameters.doubleOnkeypress?html}"
+ </#if><#t/>
+ <#if parameters.doubleOnKeydown??><#t/>
+ onkeydown="${parameters.doubleOnkeydown?html}"
+ </#if><#t/>
+ <#if parameters.doubleOnkeyup??><#t/>
+ onkeyup="${parameters.doubleOnkeyup?html}"
+ </#if><#t/>
+ <#if parameters.doubleOnselect??><#t/>
+ onselect="${parameters.doubleOnselect?html}"
+ </#if><#t/>
+ <#if parameters.doubleOnchange??><#t/>
+ onchange="${parameters.doubleOnchange?html}"
+ </#if><#t/>
+ <#if parameters.doubleAccesskey??><#t/>
+ accesskey="${parameters.doubleAccesskey?html}"
+ </#if>
+>
+ <#if parameters.doubleHeaderKey?? && parameters.doubleHeaderValue??><#t/>
+ <option value="${parameters.doubleHeaderKey?html}">${parameters.doubleHeaderValue?html}</option>
+ </#if><#t/>
+ <#if parameters.doubleEmptyOption?default(false)><#t/>
+ <option value=""></option>
+ </#if><#t/>
+ <@s.iterator value="parameters.doubleList"><#t/>
+ <#if parameters.doubleListKey??><#t/>
+ <#assign doubleItemKey = stack.findValue(parameters.doubleListKey) /><#t/>
+ <#else><#t/>
+ <#assign doubleItemKey = stack.findValue('top') /><#t/>
+ </#if><#t/>
+ <#assign doubleItemKeyStr = doubleItemKey.toString() /><#t/>
+ <#if parameters.doubleListValue??><#t/>
+ <#assign doubleItemValue = stack.findString(parameters.doubleListValue)!"" /><#t/>
+ <#else><#t/>
+ <#assign doubleItemValue = stack.findString('top') /><#t/>
+ </#if><#t/>
+ <option value="${doubleItemKeyStr?html}"<#rt/>
+ <#if tag.contains(parameters.doubleNameValue, doubleItemKey)><#t/>
+ selected="selected"<#rt/>
+ </#if><#t/>
+ >${doubleItemValue?html}</option><#lt/>
+ </...@s.iterator><#t/>
+</select>
+<#if parameters.doubleMultiple?default(false)>
+<input type="hidden" id="__multiselect_${parameters.doubleId?html}" name="__multiselect_${parameters.doubleName?default("")?html}" value=""<#rt/>
+<#if parameters.doubleDisabled?default(false)>
+ disabled="disabled"<#rt/>
+</#if>
+ />
+</#if>
+<#if parameters.allowUpDownOnRight?default(true)>
+<input type="button"
+ onclick="moveOptionDown(document.getElementById('${parameters.doubleId}'), 'key', <#if parameters.doubleHeaderKey??>'${parameters.doubleHeaderKey}'<#else>''</#if>);<#if parameters.upDownOnRightOnclick?has_content>${parameters.upDownOnRightOnclick};</#if>"
+<#if parameters.rightDownLabel??>
+ value="${parameters.rightDownLabel?html}"
+</#if>
+/>
+<input type="button"
+ onclick="moveOptionUp(document.getElementById('${parameters.doubleId}'), 'key', <#if parameters.doubleHeaderKey??>'${parameters.doubleHeaderKey}'<#else>''</#if>);<#if parameters.upDownOnRightOnclick?has_content>${parameters.upDownOnRightOnclick};</#if>"
+<#if parameters.rightUpLabel??>
+ value="${parameters.rightUpLabel?html}"
+</#if>
+/>
+</#if>
+</td>
+</tr>
+</table>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/password.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/password.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/password.ftl
new file mode 100644
index 0000000..b036b92
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/password.ftl
@@ -0,0 +1,53 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<input type="password"<#rt/>
+ name="${parameters.name?default("")?html}"<#rt/>
+<#if parameters.get("size")??>
+ size="${parameters.get("size")?html}"<#rt/>
+</#if>
+<#if parameters.maxlength??>
+ maxlength="${parameters.maxlength?html}"<#rt/>
+</#if>
+<#if parameters.nameValue?? && parameters.showPassword?default(false)>
+ value="<@s.property value="parameters.nameValue"/>"<#rt/>
+</#if>
+<#if parameters.disabled?default(false)>
+ disabled="disabled"<#rt/>
+</#if>
+<#if parameters.readonly?default(false)>
+ readonly="readonly"<#rt/>
+</#if>
+<#if parameters.tabindex??>
+ tabindex="${parameters.tabindex?html}"<#rt/>
+</#if>
+<#if parameters.id??>
+ id="${parameters.id?html}"<#rt/>
+</#if>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
+<#if parameters.title??>
+ title="${parameters.title?html}"<#rt/>
+</#if>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
+/>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/radiomap.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/radiomap.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/radiomap.ftl
new file mode 100644
index 0000000..34cf1b1
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/radiomap.ftl
@@ -0,0 +1,94 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<@s.iterator value="parameters.list">
+ <#if parameters.listKey??>
+ <#assign itemKey = stack.findValue(parameters.listKey)/>
+ <#else>
+ <#assign itemKey = stack.findValue('top')/>
+ </#if>
+ <#assign itemKeyStr = itemKey.toString() />
+ <#if parameters.listValue??>
+ <#assign itemValue = stack.findString(parameters.listValue)/>
+ <#else>
+ <#assign itemValue = stack.findString('top')/>
+ </#if>
+ <#if parameters.listCssClass??>
+ <#if stack.findString(parameters.listCssClass)??>
+ <#assign itemCssClass= stack.findString(parameters.listCssClass)/>
+ <#else>
+ <#assign itemCssClass = ''/>
+ </#if>
+ </#if>
+ <#if parameters.listCssStyle??>
+ <#if stack.findString(parameters.listCssStyle)??>
+ <#assign itemCssStyle= stack.findString(parameters.listCssStyle)/>
+ <#else>
+ <#assign itemCssStyle = ''/>
+ </#if>
+ </#if>
+ <#if parameters.listTitle??>
+ <#if stack.findString(parameters.listTitle)??>
+ <#assign itemTitle= stack.findString(parameters.listTitle)/>
+ <#else>
+ <#assign itemTitle = ''/>
+ </#if>
+ </#if>
+<input type="radio"<#rt/>
+<#if parameters.name??>
+ name="${parameters.name?html}"<#rt/>
+</#if>
+ id="${parameters.id?html}${itemKeyStr?html}"<#rt/>
+<#if tag.contains(parameters.nameValue?default(''), itemKeyStr)>
+ checked="checked"<#rt/>
+</#if>
+<#if itemKey??>
+ value="${itemKeyStr?html}"<#rt/>
+</#if>
+<#if parameters.disabled?default(false)>
+ disabled="disabled"<#rt/>
+</#if>
+<#if parameters.tabindex??>
+ tabindex="${parameters.tabindex?html}"<#rt/>
+</#if>
+<#if itemCssClass?if_exists != "">
+ class="${itemCssClass?html}"<#rt/>
+</#if>
+<#if itemCssStyle?if_exists != "">
+ style="${itemCssStyle?html}"<#rt/>
+</#if>
+<#if itemTitle?if_exists != "">
+ title="${itemTitle?html}"<#rt/>
+<#else>
+ <#if parameters.title??>
+ title="${parameters.title?html}"<#rt/>
+ </#if>
+</#if>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
+/><#rt/>
+<label for="${parameters.id?html}${itemKeyStr?html}"<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl"/>><#rt/>
+ ${itemValue}<#t/>
+</label>
+</...@s.iterator>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/reset.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/reset.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/reset.ftl
new file mode 100644
index 0000000..0ddba57
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/reset.ftl
@@ -0,0 +1,76 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<#if parameters.type?? && parameters.type=="button">
+<button type="reset"<#rt/>
+<#if parameters.name??>
+ name="${parameters.name?html}"<#rt/>
+</#if>
+<#if parameters.nameValue??>
+ value="<@s.property value="parameters.nameValue"/>"<#rt/>
+</#if>
+<#if parameters.cssClass??>
+ class="${parameters.cssClass?html}"<#rt/>
+</#if>
+<#if parameters.cssStyle??>
+ style="${parameters.cssStyle?html}"<#rt/>
+</#if>
+<#if parameters.disabled?default(false)>
+ disabled="disabled"<#rt/>
+</#if>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl"/>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
+><#if parameters.src??>
+<img<#rt/>
+<#if parameters.label??>
+ alt="${parameters.label?html}"<#rt/>
+</#if>
+<#if parameters.src??>
+ src="${parameters.src?html}"<#rt/>
+</#if>
+/><#else><#if parameters.label??><@s.property value="parameters.label"/><#rt/></#if></#if></button>
+<#else>
+<input type="reset"<#rt/>
+<#if parameters.name??>
+ name="${parameters.name?html}"<#rt/>
+</#if>
+<#if parameters.nameValue??>
+ value="<@s.property value="parameters.nameValue"/>"<#rt/>
+</#if>
+<#if parameters.cssClass??>
+ class="${parameters.cssClass?html}"<#rt/>
+</#if>
+<#if parameters.cssStyle??>
+ style="${parameters.cssStyle?html}"<#rt/>
+</#if>
+<#if parameters.title??>
+ title="${parameters.title?html}"<#rt/>
+</#if>
+<#if parameters.disabled?default(false)>
+ disabled="disabled"<#rt/>
+</#if>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
+/>
+</#if>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/scripting-events.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/scripting-events.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/scripting-events.ftl
new file mode 100644
index 0000000..c998e61
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/scripting-events.ftl
@@ -0,0 +1,64 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<#if parameters.onclick??>
+ onclick="${parameters.onclick?html}"<#rt/>
+</#if>
+<#if parameters.ondblclick??>
+ ondblclick="${parameters.ondblclick?html}"<#rt/>
+</#if>
+<#if parameters.onmousedown??>
+ onmousedown="${parameters.onmousedown?html}"<#rt/>
+</#if>
+<#if parameters.onmouseup??>
+ onmouseup="${parameters.onmouseup?html}"<#rt/>
+</#if>
+<#if parameters.onmouseover??>
+ onmouseover="${parameters.onmouseover?html}"<#rt/>
+</#if>
+<#if parameters.onmousemove??>
+ onmousemove="${parameters.onmousemove?html}"<#rt/>
+</#if>
+<#if parameters.onmouseout??>
+ onmouseout="${parameters.onmouseout?html}"<#rt/>
+</#if>
+<#if parameters.onfocus??>
+ onfocus="${parameters.onfocus?html}"<#rt/>
+</#if>
+<#if parameters.onblur??>
+ onblur="${parameters.onblur?html}"<#rt/>
+</#if>
+<#if parameters.onkeypress??>
+ onkeypress="${parameters.onkeypress?html}"<#rt/>
+</#if>
+<#if parameters.onkeydown??>
+ onkeydown="${parameters.onkeydown?html}"<#rt/>
+</#if>
+<#if parameters.onkeyup??>
+ onkeyup="${parameters.onkeyup?html}"<#rt/>
+</#if>
+<#if parameters.onselect??>
+ onselect="${parameters.onselect?html}"<#rt/>
+</#if>
+<#if parameters.onchange??>
+ onchange="${parameters.onchange?html}"<#rt/>
+</#if>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/select.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/select.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/select.ftl
new file mode 100644
index 0000000..74277e6
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/select.ftl
@@ -0,0 +1,140 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<#setting number_format="#.#####">
+<select<#rt/>
+ name="${parameters.name?default("")?html}"<#rt/>
+<#if parameters.get("size")??>
+ size="${parameters.get("size")?html}"<#rt/>
+</#if>
+<#if parameters.disabled?default(false)>
+ disabled="disabled"<#rt/>
+</#if>
+<#if parameters.tabindex??>
+ tabindex="${parameters.tabindex?html}"<#rt/>
+</#if>
+<#if parameters.id??>
+ id="${parameters.id?html}"<#rt/>
+</#if>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
+<#if parameters.title??>
+ title="${parameters.title?html}"<#rt/>
+</#if>
+<#if parameters.multiple?default(false)>
+ multiple="multiple"<#rt/>
+</#if>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
+>
+<#if parameters.headerKey?? && parameters.headerValue??>
+ <option value="${parameters.headerKey?html}"
+ <#if tag.contains(parameters.nameValue, parameters.headerKey) == true>
+ selected="selected"
+ </#if>
+ >${parameters.headerValue?html}</option>
+</#if>
+<#if parameters.emptyOption?default(false)>
+ <option value=""></option>
+</#if>
+<@s.iterator value="parameters.list">
+ <#if parameters.listKey??>
+ <#if stack.findValue(parameters.listKey)??>
+ <#assign itemKey = stack.findValue(parameters.listKey)/>
+ <#assign itemKeyStr = stack.findString(parameters.listKey)/>
+ <#else>
+ <#assign itemKey = ''/>
+ <#assign itemKeyStr = ''/>
+ </#if>
+ <#else>
+ <#assign itemKey = stack.findValue('top')/>
+ <#assign itemKeyStr = stack.findString('top')>
+ </#if>
+ <#if parameters.listValue??>
+ <#if stack.findString(parameters.listValue)??>
+ <#assign itemValue = stack.findString(parameters.listValue)/>
+ <#else>
+ <#assign itemValue = ''/>
+ </#if>
+ <#else>
+ <#assign itemValue = stack.findString('top')/>
+ </#if>
+ <#if parameters.listCssClass??>
+ <#if stack.findString(parameters.listCssClass)??>
+ <#assign itemCssClass= stack.findString(parameters.listCssClass)/>
+ <#else>
+ <#assign itemCssClass = ''/>
+ </#if>
+ </#if>
+ <#if parameters.listCssStyle??>
+ <#if stack.findString(parameters.listCssStyle)??>
+ <#assign itemCssStyle= stack.findString(parameters.listCssStyle)/>
+ <#else>
+ <#assign itemCssStyle = ''/>
+ </#if>
+ </#if>
+ <#if parameters.listTitle??>
+ <#if stack.findString(parameters.listTitle)??>
+ <#assign itemTitle= stack.findString(parameters.listTitle)/>
+ <#else>
+ <#assign itemTitle = ''/>
+ </#if>
+ </#if>
+ <option value="${itemKeyStr?html}"<#rt/>
+ <#if tag.contains(parameters.nameValue, itemKey) == true>
+ selected="selected"<#rt/>
+ </#if>
+ <#if itemCssClass?if_exists != "">
+ class="${itemCssClass?html}"<#rt/>
+ </#if>
+ <#if itemCssStyle?if_exists != "">
+ style="${itemCssStyle?html}"<#rt/>
+ </#if>
+ <#if itemTitle?if_exists != "">
+ title="${itemTitle?html}"<#rt/>
+ </#if>
+ >${itemValue?html}</option><#lt/>
+</...@s.iterator>
+
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/optgroup.ftl" />
+
+</select>
+
+<#if parameters.multiple?default(false)>
+ <#if (parameters.id?? && parameters.name??)>
+ <input type="hidden" id="__multiselect_${parameters.id?html}" name="__multiselect_${parameters.name?html}" value=""<#rt/>
+ </#if>
+ <#if (parameters.id?? && !parameters.name??)>
+ <input type="hidden" id="__multiselect_${parameters.id?html}" name="__multiselect_${parameters.id?html}" value=""<#rt/>
+ </#if>
+ <#if ( !parameters.id?? && parameters.name??)>
+ <input type="hidden" id="__multiselect_${parameters.id?html}" name="__multiselect_${parameters.id?html}" value=""<#rt/>
+ </#if>
+ <#if ( !parameters.id?? && !parameters.name??)>
+ <input type="hidden" id="" name="" value="" <#rt/>
+ </#if>
+
+<#if parameters.disabled?default(false)>
+ disabled="disabled"<#rt/>
+</#if>
+ />
+</#if>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/submit-close.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/submit-close.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/submit-close.ftl
new file mode 100644
index 0000000..2bb7347
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/submit-close.ftl
@@ -0,0 +1,6 @@
+<#if parameters.type?? && parameters.type=="button">
+<#if (parameters.body)?default("")?length gt 0>${parameters.body}<#elseif parameters.label??><@s.property value="parameters.label"/><#rt/></#if>
+</button>
+<#else>
+${parameters.body}<#rt/>
+</#if>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/submit.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/submit.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/submit.ftl
new file mode 100644
index 0000000..95315ef
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/submit.ftl
@@ -0,0 +1,93 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<#if parameters.type?? && parameters.type=="button">
+<button type="submit"<#rt/>
+<#if parameters.id??>
+ id="${parameters.id?html}"<#rt/>
+</#if>
+<#if parameters.name??>
+ name="${parameters.name?html}"<#rt/>
+</#if>
+<#if parameters.nameValue??>
+ value="<@s.property value="parameters.nameValue"/>"<#rt/>
+</#if>
+<#if parameters.disabled?default(false)>
+ disabled="disabled"<#rt/>
+</#if>
+<#if parameters.cssClass??>
+ class="${parameters.cssClass?html}"<#rt/>
+</#if>
+<#if parameters.cssStyle??>
+ style="${parameters.cssStyle?html}"<#rt/>
+</#if>
+<#if parameters.title??>
+ title="${parameters.title?html}"<#rt/>
+</#if>
+<#if parameters.tabindex??>
+ tabindex="${parameters.tabindex?html}"<#rt/>
+</#if>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl"/>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
+>
+<#else>
+<#if parameters.type?? && parameters.type=="image">
+<input type="image"<#rt/>
+<#if parameters.label??>
+ alt="${parameters.label?html}"<#rt/>
+</#if>
+<#if parameters.src??>
+ src="${parameters.src?html}"<#rt/>
+</#if>
+<#else>
+<input type="submit"<#rt/>
+</#if>
+<#if parameters.id??>
+ id="${parameters.id?html}"<#rt/>
+</#if>
+<#if parameters.name??>
+ name="${parameters.name?html}"<#rt/>
+</#if>
+<#if parameters.nameValue??>
+ value="<@s.property value="parameters.nameValue"/>"<#rt/>
+</#if>
+<#if parameters.disabled?default(false)>
+ disabled="disabled"<#rt/>
+</#if>
+<#if parameters.cssClass??>
+ class="${parameters.cssClass?html}"<#rt/>
+</#if>
+<#if parameters.cssStyle??>
+ style="${parameters.cssStyle?html}"<#rt/>
+</#if>
+<#if parameters.title??>
+ title="${parameters.title?html}"<#rt/>
+</#if>
+<#if parameters.tabindex??>
+ tabindex="${parameters.tabindex?html}"<#rt/>
+</#if>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
+/>
+</#if>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/table.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/table.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/table.ftl
new file mode 100644
index 0000000..d7efb06
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/table.ftl
@@ -0,0 +1,76 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<#assign webTable = tag/>
+<#assign tableModel = webTable.model/>
+
+<#if tableModel??>
+<p align="center">
+<table bgcolor="white" border="0" cellpadding="1" cellspacing="0" >
+ <tr>
+ <td>
+ <table border="0" cellpadding="2" cellspacing="1">
+ <tr bgcolor="yellow">
+<#list webTable.columns as curColumn>
+<#if curColumn.visible>
+ <th>
+<#if webTable.sortable>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td>${curColumn.displayName}</td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td align="bottom">
+<#if false>
+ <img src="images/sorted_asc.gif" border="0" align="bottom" />
+<#else>
+ <a href="<@s.url><@s.param name="${webTable.sortColumnLinkName}" value="${curColumn.offset}"/><@s.param name="${webTable.sortOrderLinkName}" value="ASC"/></...@s.url>"><img src="images/unsorted_asc.gif" border="0" align="bottom"/></a>
+</#if>
+ </td>
+ </tr>
+ <tr>
+ <td align="top"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+<#else>
+ ${curColumn.displayName}
+</#if>
+ </th>
+</#if>
+</#list>
+ </tr>
+<#list webTable.rowIterator as curRow>
+ <tr>
+<#list curRow as curColumn>
+ <td>${curColumn}</td>
+</#list>
+ </tr>
+</#list>
+ </table>
+ </td>
+ </tr>
+</table>
+</#if>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/text.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/text.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/text.ftl
new file mode 100644
index 0000000..1caf3aa
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/text.ftl
@@ -0,0 +1,54 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<input<#rt/>
+ type="${parameters.type?default("text")?html}"<#rt/>
+ name="${parameters.name?default("")?html}"<#rt/>
+<#if parameters.get("size")??>
+ size="${parameters.get("size")?html}"<#rt/>
+</#if>
+<#if parameters.maxlength??>
+ maxlength="${parameters.maxlength?html}"<#rt/>
+</#if>
+<#if parameters.nameValue??>
+ value="${parameters.nameValue?html}"<#rt/>
+</#if>
+<#if parameters.disabled?default(false)>
+ disabled="disabled"<#rt/>
+</#if>
+<#if parameters.readonly?default(false)>
+ readonly="readonly"<#rt/>
+</#if>
+<#if parameters.tabindex??>
+ tabindex="${parameters.tabindex?html}"<#rt/>
+</#if>
+<#if parameters.id??>
+ id="${parameters.id?html}"<#rt/>
+</#if>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
+<#if parameters.title??>
+ title="${parameters.title?html}"<#rt/>
+</#if>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
+/>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/textarea.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/textarea.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/textarea.ftl
new file mode 100644
index 0000000..6cf1e9b
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/textarea.ftl
@@ -0,0 +1,53 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<textarea<#rt/>
+ name="${parameters.name?default("")?html}"<#rt/>
+ cols="${parameters.cols?default("")?html}"<#rt/>
+ rows="${parameters.rows?default("")?html}"<#rt/>
+<#if parameters.wrap??>
+ wrap="${parameters.wrap?html}"<#rt/>
+</#if>
+<#if parameters.disabled?default(false)>
+ disabled="disabled"<#rt/>
+</#if>
+<#if parameters.readonly?default(false)>
+ readonly="readonly"<#rt/>
+</#if>
+<#if parameters.tabindex??>
+ tabindex="${parameters.tabindex?html}"<#rt/>
+</#if>
+<#if parameters.id??>
+ id="${parameters.id?html}"<#rt/>
+</#if>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/css.ftl" />
+<#if parameters.title??>
+ title="${parameters.title?html}"<#rt/>
+</#if>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/scripting-events.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/common-attributes.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/dynamic-attributes.ftl" />
+><#rt/>
+<#if parameters.nameValue??>
+<@s.property value="parameters.nameValue"/><#t/>
+</#if>
+</textarea>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/token.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/token.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/token.ftl
new file mode 100644
index 0000000..cabfa9c
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/token.ftl
@@ -0,0 +1,24 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<input type="hidden" name="${parameters.tokenNameField?default("")}" value="${parameters.name?default("")?html}" />
+<input type="hidden" name="${parameters.name?default("")}" value="${parameters.token?default("")?html}" />
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/simple/updownselect.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/simple/updownselect.ftl b/themes_override/src/main/webapp/WEB-INF/template/simple/updownselect.ftl
new file mode 100644
index 0000000..30128ef
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/simple/updownselect.ftl
@@ -0,0 +1,57 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<#if !stack.findValue("#optiontransferselect_js_included")??><#t/>
+ <script type="text/javascript" src="<@s.url value="/struts/optiontransferselect.js" encode='false' includeParams='none'/>"></script>
+ <#assign temporaryVariable = stack.setValue("#optiontransferselect_js_included", "true") /><#t/>
+</#if><#t/>
+<table>
+<tr><td>
+<#include "/${templateDir}/simple/select.ftl" /><#t/>
+</td></tr>
+<tr><td>
+<#if parameters.allowMoveUp?default(true)><#t/>
+ <#assign defMoveUpLabel="${parameters.moveUpLabel?default('^')}" /><#t/>
+ <#if parameters.headerKey??><#t/>
+ <input type="button" value="${defMoveUpLabel}" onclick="moveOptionUp(document.getElementById('${parameters.id}'), 'key', '${parameters.headerKey}');" />
+ <#else><#t/>
+ <input type="button" value="${defMoveUpLabel}" onclick="moveOptionUp(document.getElementById('${parameters.id}'), 'key', '');" />
+ </#if><#t/>
+</#if><#t/>
+<#if parameters.allowMoveDown?default(true)><#t/>
+ <#assign defMoveDownLabel="${parameters.moveDownLabel?default('v')}" /><#t/>
+ <#if parameters.headerKey??><#t/>
+ <input type="button" value="${defMoveDownLabel}" onclick="moveOptionDown(document.getElementById('${parameters.id}'), 'key', '${parameters.headerKey}');" />
+ <#else><#t/>
+ <input type="button" value="${defMoveDownLabel}" onclick="moveOptionDown(document.getElementById('${parameters.id}'), 'key', '');" />
+ </#if><#t/>
+</#if><#t/>
+<#if parameters.allowSelectAll?default(true)><#t/>
+ <#assign defSelectAllLabel="${parameters.selectAllLabel?default('*')}" /><#t/>
+ <#if parameters.headerKey??><#t/>
+ <input type="button" value="${defSelectAllLabel}" onclick="selectAllOptionsExceptSome(document.getElementById('${parameters.id}'), 'key', '${parameters.headerKey}');" />
+ <#else><#t/>
+ <input type="button" value="${defSelectAllLabel}" onclick="selectAllOptions(document.getElementById('${parameters.id}'), 'key', '');" />
+ </#if><#t/>
+</#if><#t/>
+</td></tr>
+</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/xhtml/checkbox.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/xhtml/checkbox.ftl b/themes_override/src/main/webapp/WEB-INF/template/xhtml/checkbox.ftl
new file mode 100644
index 0000000..4504b3f
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/xhtml/checkbox.ftl
@@ -0,0 +1,129 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<#assign hasFieldErrors = fieldErrors?? && fieldErrors[parameters.name]??/>
+<#if hasFieldErrors>
+<#list fieldErrors[parameters.name] as error>
+<tr<#rt/>
+<#if parameters.id??>
+ errorFor="${parameters.id}"<#rt/>
+</#if>
+>
+ <td align="left" valign="top" colspan="2"><#rt/>
+ <span class="errorMessage">${error?html}</span><#t/>
+ </td><#lt/>
+</tr>
+</#list>
+</#if>
+<#if !parameters.labelposition?? && (parameters.form.labelposition)??>
+<#assign labelpos = parameters.form.labelposition/>
+<#elseif parameters.labelposition??>
+<#assign labelpos = parameters.labelposition/>
+</#if>
+<#if labelpos?default("") == 'top'>
+<tr>
+ <td colspan="2">
+<#if parameters.label??> <label<#t/>
+<#if parameters.id??>
+ for="${parameters.id?html}"<#rt/>
+</#if>
+<#if hasFieldErrors>
+ class="checkboxErrorLabel"<#rt/>
+<#else>
+ class="checkboxLabel"<#rt/>
+</#if>
+>
+<#if parameters.required?default(false) && parameters.requiredPosition?default("right") != 'right'>
+ <span class="required">*</span><#t/>
+</#if>
+${parameters.label?html}<#t/>
+<#if parameters.required?default(false) && parameters.requiredPosition?default("right") == 'right'>
+ <span class="required">*</span><#t/>
+</#if>
+:<#t/>
+<#if parameters.tooltip??>
+ <#include "/${parameters.templateDir}/${parameters.expandTheme}/tooltip.ftl" />
+</#if>
+</label><#t/>
+</#if>
+ </td>
+</tr>
+<tr>
+ <td colspan="2">
+ <#include "/${parameters.templateDir}/simple/checkbox.ftl" />
+<#else>
+<tr>
+ <td valign="top" align="right">
+<#if labelpos?default("") == 'left'>
+<#if parameters.label??> <label<#t/>
+<#if parameters.id??>
+ for="${parameters.id?html}"<#rt/>
+</#if>
+<#if hasFieldErrors>
+ class="checkboxErrorLabel"<#rt/>
+<#else>
+ class="checkboxLabel"<#rt/>
+</#if>
+>
+<#if parameters.required?default(false) && parameters.requiredPosition?default("right") != 'right'>
+ <span class="required">*</span><#t/>
+</#if>
+${parameters.label?html}<#t/>
+<#if parameters.required?default(false) && parameters.requiredPosition?default("right") == 'right'>
+ <span class="required">*</span><#t/>
+</#if>
+:<#t/>
+<#if parameters.tooltip??>
+ <#include "/${parameters.templateDir}/${parameters.expandTheme}/tooltip.ftl" />
+</#if>
+</label><#t/>
+</#if>
+</#if>
+<#if labelpos?default("") == 'right'>
+ <#if parameters.required?default(false)>
+ <span class="required">*</span><#t/>
+ </#if>
+ <#if parameters.tooltip??>
+ <#include "/${parameters.templateDir}/${parameters.expandTheme}/tooltip.ftl" />
+ </#if>
+</#if>
+ </td>
+ <td valign="top" align="left">
+
+<#if labelpos?default("") != 'top'>
+ <#include "/${parameters.templateDir}/simple/checkbox.ftl" />
+</#if>
+<#if labelpos?default("") != 'top' && labelpos?default("") != 'left'>
+<#if parameters.label??> <label<#t/>
+<#if parameters.id??>
+ for="${parameters.id?html}"<#rt/>
+</#if>
+<#if hasFieldErrors>
+ class="checkboxErrorLabel"<#rt/>
+<#else>
+ class="checkboxLabel"<#rt/>
+</#if>
+>${parameters.label?html}</label><#rt/>
+</#if>
+</#if>
+</#if>
+ <#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" /><#nt/>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/xhtml/checkboxlist.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/xhtml/checkboxlist.ftl b/themes_override/src/main/webapp/WEB-INF/template/xhtml/checkboxlist.ftl
new file mode 100644
index 0000000..8cc0dd8
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/xhtml/checkboxlist.ftl
@@ -0,0 +1,25 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader.ftl" />
+<#include "/${parameters.templateDir}/simple/checkboxlist.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" /><#nt/>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/xhtml/combobox.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/xhtml/combobox.ftl b/themes_override/src/main/webapp/WEB-INF/template/xhtml/combobox.ftl
new file mode 100644
index 0000000..a1a85f1
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/xhtml/combobox.ftl
@@ -0,0 +1,25 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader.ftl" />
+<#include "/${parameters.templateDir}/simple/combobox.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" /><#nt/>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/xhtml/control-close.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/xhtml/control-close.ftl b/themes_override/src/main/webapp/WEB-INF/template/xhtml/control-close.ftl
new file mode 100644
index 0000000..a89de7e
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/xhtml/control-close.ftl
@@ -0,0 +1,23 @@
+<#--
+/*
+ * $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.
+ */
+-->
+</table>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/xhtml/control.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/xhtml/control.ftl b/themes_override/src/main/webapp/WEB-INF/template/xhtml/control.ftl
new file mode 100644
index 0000000..2761ac3
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/xhtml/control.ftl
@@ -0,0 +1,26 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<table class="${parameters.cssClass?default('wwFormTable')?html}"<#rt/>
+<#if parameters.cssStyle??> style="${parameters.cssStyle?html}"<#rt/>
+</#if>
+>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/xhtml/controlfooter.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/xhtml/controlfooter.ftl b/themes_override/src/main/webapp/WEB-INF/template/xhtml/controlfooter.ftl
new file mode 100644
index 0000000..37da2f8
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/xhtml/controlfooter.ftl
@@ -0,0 +1,38 @@
+<#--
+/*
+ * $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.
+ */
+-->
+${parameters.after?if_exists}<#t/>
+ </td><#lt/>
+</tr>
+<#if parameters.errorposition?default("top") == 'bottom'>
+<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors[parameters.name]??/>
+<#if hasFieldErrors>
+<#list fieldErrors[parameters.name] as error>
+<tr errorFor="${parameters.id}">
+ <td align="center" valign="top" colspan="2"><#rt/>
+ <span class="errorMessage">${error?html}</span><#t/>
+ </td><#lt/>
+</tr>
+</#list>
+</#if>
+</#if>
+
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/xhtml/controlheader-core.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/xhtml/controlheader-core.ftl b/themes_override/src/main/webapp/WEB-INF/template/xhtml/controlheader-core.ftl
new file mode 100644
index 0000000..7330270
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/xhtml/controlheader-core.ftl
@@ -0,0 +1,81 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<#--
+ Only show message if errors are available.
+ This will be done if ActionSupport is used.
+-->
+<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors[parameters.name]??/>
+<#if parameters.errorposition?default("top") == 'top'>
+<#if hasFieldErrors>
+<#list fieldErrors[parameters.name] as error>
+<tr errorFor="${parameters.id}">
+ <td align="center" valign="top" colspan="2"><#rt/>
+ <span class="errorMessage">${error?html}</span><#t/>
+ </td><#lt/>
+</tr>
+</#list>
+</#if>
+</#if>
+<#if !parameters.labelposition?? && (parameters.form.labelposition)??>
+<#assign labelpos = parameters.form.labelposition/>
+<#elseif parameters.labelposition??>
+<#assign labelpos = parameters.labelposition/>
+</#if>
+<#--
+ if the label position is top,
+ then give the label it's own row in the table
+-->
+<tr>
+<#if labelpos?default("") == 'top'>
+ <td align="left" valign="top" colspan="2"><#rt/>
+<#else>
+ <td class="tdLabel"><#rt/>
+</#if>
+<#if parameters.label??>
+ <label <#t/>
+<#if parameters.id??>
+ for="${parameters.id?html}" <#t/>
+</#if>
+<#if hasFieldErrors>
+ class="errorLabel"<#t/>
+<#else>
+ class="label"<#t/>
+</#if>
+ ><#t/>
+<#if parameters.required?default(false) && parameters.requiredPosition?default("right") != 'right'>
+ <span class="required">*</span><#t/>
+</#if>
+${parameters.label?html}<#t/>
+<#if parameters.required?default(false) && parameters.requiredPosition?default("right") == 'right'>
+ <span class="required">*</span><#t/>
+</#if>
+${parameters.labelseparator?default(":")?html}<#t/>
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/tooltip.ftl" />
+</label><#t/>
+</#if>
+ </td><#lt/>
+<#-- add the extra row -->
+<#if labelpos?default("") == 'top'>
+</tr>
+<tr>
+</#if>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/xhtml/controlheader.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/xhtml/controlheader.ftl b/themes_override/src/main/webapp/WEB-INF/template/xhtml/controlheader.ftl
new file mode 100644
index 0000000..4a15058
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/xhtml/controlheader.ftl
@@ -0,0 +1,28 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader-core.ftl" />
+ <td
+<#if parameters.align??>
+ align="${parameters.align?html}"<#t/>
+</#if>
+><#t/>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/xhtml/doubleselect.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/xhtml/doubleselect.ftl b/themes_override/src/main/webapp/WEB-INF/template/xhtml/doubleselect.ftl
new file mode 100644
index 0000000..f923462
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/xhtml/doubleselect.ftl
@@ -0,0 +1,25 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader.ftl" />
+<#include "/${parameters.templateDir}/simple/doubleselect.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" /><#nt/>
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/111b1a7c/themes_override/src/main/webapp/WEB-INF/template/xhtml/file.ftl
----------------------------------------------------------------------
diff --git a/themes_override/src/main/webapp/WEB-INF/template/xhtml/file.ftl b/themes_override/src/main/webapp/WEB-INF/template/xhtml/file.ftl
new file mode 100644
index 0000000..cae4a2e
--- /dev/null
+++ b/themes_override/src/main/webapp/WEB-INF/template/xhtml/file.ftl
@@ -0,0 +1,25 @@
+<#--
+/*
+ * $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.
+ */
+-->
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader.ftl" />
+<#include "/${parameters.templateDir}/simple/file.ftl" />
+<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" />