You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by jh...@apache.org on 2007/07/22 06:16:31 UTC

svn commit: r558460 - in /struts/struts2/branches/STRUTS_2_0_X/core/src: main/java/org/apache/struts2/components/ main/java/org/apache/struts2/views/jsp/ui/ main/resources/template/simple/ site/resources/tags/ test/java/org/apache/struts2/views/jsp/ui/...

Author: jholmes
Date: Sat Jul 21 21:16:29 2007
New Revision: 558460

URL: http://svn.apache.org/viewvc?view=rev&rev=558460
Log:
WW-2051 add additional javascript hooks for optiontransferselect

Modified:
    struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java
    struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/views/jsp/ui/OptionTransferSelectTag.java
    struts/struts2/branches/STRUTS_2_0_X/core/src/main/resources/template/simple/optiontransferselect.ftl
    struts/struts2/branches/STRUTS_2_0_X/core/src/site/resources/tags/optiontransferselect.html
    struts/struts2/branches/STRUTS_2_0_X/core/src/test/java/org/apache/struts2/views/jsp/ui/OptionTransferSelectTagTest.java
    struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-1.txt
    struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-2.txt
    struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-3.txt
    struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-4.txt
    struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-5.txt
    struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-6.txt
    struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-7.txt

Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java?view=diff&rev=558460&r1=558459&r2=558460
==============================================================================
--- struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java (original)
+++ struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java Sat Jul 21 21:16:29 2007
@@ -123,6 +123,14 @@
     protected String rightUpLabel;
     protected String rightDownLabel;
 
+    protected String addToLeftOnclick;
+    protected String addToRightOnclick;
+    protected String addAllToLeftOnclick;
+    protected String addAllToRightOnclick;
+    protected String selectAllOnclick;
+    protected String upDownOnLeftOnclick;
+    protected String upDownOnRightOnclick;
+
 
     public OptionTransferSelect(ValueStack stack, HttpServletRequest request, HttpServletResponse response) {
         super(stack, request, response);
@@ -252,6 +260,34 @@
                 rightDownLabel != null ? findValue(rightDownLabel, String.class) : "v");
 
 
+        // selectAllOnclick
+        addParameter("selectAllOnclick",
+                selectAllOnclick != null ? findValue(selectAllOnclick, String.class) : "");
+
+        // addToLeftOnclick
+        addParameter("addToLeftOnclick",
+                addToLeftOnclick != null ? findValue(addToLeftOnclick, String.class) : "");
+
+        // addToRightOnclick
+        addParameter("addToRightOnclick",
+                addToRightOnclick != null ? findValue(addToRightOnclick, String.class) : "");
+
+        // addAllToLeftOnclick
+        addParameter("addAllToLeftOnclick",
+                addAllToLeftOnclick != null ? findValue(addAllToLeftOnclick, String.class) : "");
+
+        // addAllToRightOnclick
+        addParameter("addAllToRightOnclick",
+                addAllToRightOnclick != null ? findValue(addAllToRightOnclick, String.class) : "");
+
+        // upDownOnLeftOnclick
+        addParameter("upDownOnLeftOnclick",
+                upDownOnLeftOnclick != null ? findValue(upDownOnLeftOnclick, String.class) : "");
+
+        // upDownOnRightOnclick
+        addParameter("upDownOnRightOnclick",
+                upDownOnRightOnclick != null ? findValue(upDownOnRightOnclick, String.class) : "");
+
 
         // inform the form component our select tag infos, so they know how to select
         // its elements upon onsubmit
@@ -476,5 +512,66 @@
         return rightDownLabel;
     }
 
+    public String getAddAllToLeftOnclick() {
+        return addAllToLeftOnclick;
+    }
+
+    @StrutsTagAttribute(description="Javascript to run after Add All To Left button pressed")
+    public void setAddAllToLeftOnclick(String addAllToLeftOnclick) {
+        this.addAllToLeftOnclick = addAllToLeftOnclick;
+    }
+
+    public String getAddAllToRightOnclick() {
+        return addAllToRightOnclick;
+    }
+
+    @StrutsTagAttribute(description="Javascript to run after Add All To Right button pressed")
+    public void setAddAllToRightOnclick(String addAllToRightOnclick) {
+        this.addAllToRightOnclick = addAllToRightOnclick;
+    }
+
+    public String getAddToLeftOnclick() {
+        return addToLeftOnclick;
+    }
+
+    @StrutsTagAttribute(description="Javascript to run after Add To Left button pressed")
+    public void setAddToLeftOnclick(String addToLeftOnclick) {
+        this.addToLeftOnclick = addToLeftOnclick;
+    }
+
+    public String getAddToRightOnclick() {
+        return addToRightOnclick;
+    }
+
+    @StrutsTagAttribute(description="Javascript to run after Add To Right button pressed")
+    public void setAddToRightOnclick(String addToRightOnclick) {
+        this.addToRightOnclick = addToRightOnclick;
+    }
+
+    @StrutsTagAttribute(description="Javascript to run after up / down on the left side buttons pressed")
+    public void setUpDownOnLeftOnclick(String upDownOnLeftOnclick) {
+        this.upDownOnLeftOnclick = upDownOnLeftOnclick;
+    }
+
+    public String getUpDownOnLeftOnclick() {
+        return this.upDownOnLeftOnclick;
+    }
 
+    @StrutsTagAttribute(description="Javascript to run after up / down on the right side buttons pressed")
+    public void setUpDownOnRightOnclick(String upDownOnRightOnclick) {
+        this.upDownOnRightOnclick = upDownOnRightOnclick;
+    }
+
+    public String getUpDownOnRightOnclick() {
+        return this.upDownOnRightOnclick;
+    }
+
+    @StrutsTagAttribute(description="Javascript to run after Select All button pressed")
+    public void setSelectAllOnclick(String selectAllOnclick) {
+        this.selectAllOnclick = selectAllOnclick;
+    }
+
+    public String getSelectAllOnclick() {
+        return this.selectAllOnclick;
+    }
 }

Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/views/jsp/ui/OptionTransferSelectTag.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/views/jsp/ui/OptionTransferSelectTag.java?view=diff&rev=558460&r1=558459&r2=558460
==============================================================================
--- struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/views/jsp/ui/OptionTransferSelectTag.java (original)
+++ struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/views/jsp/ui/OptionTransferSelectTag.java Sat Jul 21 21:16:29 2007
@@ -59,6 +59,13 @@
     protected String rightUpLabel;
     protected String rightDownLabel;
 
+    protected String addToLeftOnclick;
+    protected String addToRightOnclick;
+    protected String addAllToLeftOnclick;
+    protected String addAllToRightOnclick;
+    protected String selectAllOnclick;
+    protected String upDownOnLeftOnclick;
+    protected String upDownOnRightOnclick;
 
     public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) {
         return new OptionTransferSelect(stack, req, res);
@@ -91,6 +98,14 @@
 
         optionTransferSelect.setLeftTitle(leftTitle);
         optionTransferSelect.setRightTitle(rightTitle);
+
+        optionTransferSelect.setAddToLeftOnclick(addToLeftOnclick);
+        optionTransferSelect.setAddToRightOnclick(addToRightOnclick);
+        optionTransferSelect.setAddAllToLeftOnclick(addAllToLeftOnclick);
+        optionTransferSelect.setAddAllToRightOnclick(addAllToRightOnclick);
+        optionTransferSelect.setSelectAllOnclick(selectAllOnclick);
+        optionTransferSelect.setUpDownOnLeftOnclick(upDownOnLeftOnclick);
+        optionTransferSelect.setUpDownOnRightOnclick(upDownOnRightOnclick);
     }
 
 
@@ -271,5 +286,61 @@
 
     public String getButtonCssStyle() {
         return this.buttonCssStyle;
+    }
+
+    public String getAddAllToLeftOnclick() {
+        return this.addAllToLeftOnclick;
+    }
+
+    public void setAddAllToLeftOnclick(String addAllToLeftOnclick) {
+        this.addAllToLeftOnclick = addAllToLeftOnclick;
+    }
+
+    public String getAddAllToRightOnclick() {
+        return this.addAllToRightOnclick;
+    }
+
+    public void setAddAllToRightOnclick(String addAllToRightOnclick) {
+        this.addAllToRightOnclick = addAllToRightOnclick;
+    }
+
+    public String getAddToLeftOnclick() {
+        return this.addToLeftOnclick;
+    }
+
+    public void setAddToLeftOnclick(String addToLeftOnclick) {
+        this.addToLeftOnclick = addToLeftOnclick;
+    }
+
+    public String getAddToRightOnclick() {
+        return this.addToRightOnclick;
+    }
+
+    public void setAddToRightOnclick(String addToRightOnclick) {
+        this.addToRightOnclick = addToRightOnclick;
+    }
+
+    public String getUpDownOnLeftOnclick() {
+        return this.upDownOnLeftOnclick;
+    }
+
+    public void setUpDownOnLeftOnclick(String upDownOnLeftOnclick) {
+        this.upDownOnLeftOnclick = upDownOnLeftOnclick;
+    }
+
+    public String getUpDownOnRightOnclick() {
+        return this.upDownOnRightOnclick;
+    }
+
+    public void setUpDownOnRightOnclick(String upDownOnRightOnclick) {
+        this.upDownOnRightOnclick = upDownOnRightOnclick;
+    }
+
+    public void setSelectAllOnclick(String selectAllOnclick) {
+        this.selectAllOnclick = selectAllOnclick;
+    }
+
+    public String getSelectAllOnclick() {
+        return this.selectAllOnclick;
     }
 }

Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/main/resources/template/simple/optiontransferselect.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/main/resources/template/simple/optiontransferselect.ftl?view=diff&rev=558460&r1=558459&r2=558460
==============================================================================
--- struts/struts2/branches/STRUTS_2_0_X/core/src/main/resources/template/simple/optiontransferselect.ftl (original)
+++ struts/struts2/branches/STRUTS_2_0_X/core/src/main/resources/template/simple/optiontransferselect.ftl Sat Jul 21 21:16:29 2007
@@ -11,21 +11,13 @@
 <#include "/${parameters.templateDir}/simple/select.ftl" /> 
 <#if parameters.allowUpDownOnLeft?default(true)>
 <input type="button" 
-<#if parameters.headerKey?exists>
-	onclick="moveOptionDown(document.getElementById('${parameters.id}'), 'key', '${parameters.headerKey}');"
-<#else>
-	onclick="moveOptionDown(document.getElementById('${parameters.id}'), 'key', '');"
-</#if>
+	onclick="moveOptionDown(document.getElementById('${parameters.id}'), 'key', <#if parameters.headerKey?exists>'${parameters.headerKey}'<#else>''</#if>);<#if parameters.upDownOnLeftOnclick?has_content>${parameters.upDownOnLeftOnclick};</#if>"
 <#if parameters.leftDownLabel?exists>
 	value="${parameters.leftDownLabel?html}"
 </#if>
 />
 <input type="button"
-<#if parameters.headerKey?exists>
-	onclick="moveOptionUp(document.getElementById('${parameters.id}'), 'key', '${parameters.headerKey}');"
-<#else>
-	onclick="moveOptionUp(document.getElementById('${parameters.id}'), 'key', '');"
-</#if>	
+	onclick="moveOptionUp(document.getElementById('${parameters.id}'), 'key', <#if parameters.headerKey?exists>'${parameters.headerKey}'<#else>''</#if>);<#if parameters.upDownOnLeftOnclick?has_content>${parameters.upDownOnLeftOnclick};</#if>"
 <#if parameters.leftUpLabel?exists>
 	value="${parameters.leftUpLabel?html}"
 </#if>
@@ -44,7 +36,7 @@
 			<#if parameters.buttonCssStyle?exists><#t/>
 			 style="${parameters.buttonCssStyle?html}"
 			</#if><#t/>
-			 value="${addToLeftLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.doubleId?html}'), document.getElementById('${parameters.id?html}'), false, '${parameters.doubleHeaderKey}', '')" /><br /><br />
+			 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?exists><#t/>
@@ -53,7 +45,7 @@
 			<#if parameters.buttonCssStyle?exists><#t/>
 			 style="${parameters.buttonCssStyle?html}"
 			</#if><#t/>
-			 value="${addToLeftLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.doubleId?html}'), document.getElementById('${parameters.id?html}'), false, '')" /><br /><br />
+			 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/>
@@ -66,7 +58,7 @@
 			<#if parameters.buttonCssStyle?exists><#t/>
 			 style="${parameters.buttonCssStyle?html}"
 			</#if><#t/>
-			 value="${addToRightLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.id?html}'), document.getElementById('${parameters.doubleId?html}'), false, '${parameters.headerKey}', '')" /><br /><br />
+			 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?exists><#t/>
@@ -75,7 +67,7 @@
 			<#if parameters.buttonCssStyle?exists>
 			 style="${parameters.buttonCssStyle?html}"
 			</#if><#t/>
-			 value="${addToRightLabel}" onclick="moveSelectedOptions(document.getElementById('${parameters.id?html}'), document.getElementById('${parameters.doubleId?html}'), false, '')" /><br /><br />
+			 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/>
@@ -88,7 +80,7 @@
 			<#if parameters.buttonCssStyle?exists><#t/>
 			 style="${parameters.buttonCssStyle}"
 			</#if><#t/>
-			 value="${addAllToLeftLabel}" onclick="moveAllOptions(document.getElementById('${parameters.doubleId?html}'), document.getElementById('${parameters.id?html}'), false, '${parameters.doubleHeaderKey}', '')" /><br /><br />
+			 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?exists><#t/>
@@ -97,7 +89,7 @@
 			<#if parameters.buttonCssStyle?exists><#t/>
 			 style="${parameters.buttonCssStyle?html}"
 			</#if><#t/>
-			 value="${addAllToLeftLabel}" onclick="moveAllOptions(document.getElementById('${parameters.doubleId?html}'), document.getElementById('${parameters.id?html}'), false, '')" /><br /><br />
+			 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/>
@@ -110,7 +102,7 @@
 			<#if parameters.buttonCssStyle?exists><#t/>
 			 style="${parameters.buttonCssStyle?html}"
 			</#if><#t/>
-			 value="${addAllToRightLabel}" onclick="moveAllOptions(document.getElementById('${parameters.id?html}'), document.getElementById('${parameters.doubleId?html}'), false, '${parameters.headerKey}', '')" /><br /><br />	
+			 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?exists><#t/>
@@ -119,7 +111,7 @@
 			<#if parameters.buttonCssStyle?exists><#t/>
 			 style="${parameters.buttonCssStyle?html}"
 			</#if><#t/>
-			 value="${addAllToRightLabel}" onclick="moveAllOptions(document.getElementById('${parameters.id?html}'), document.getElementById('${parameters.doubleId?html}'), false, '')" /><br /><br />	
+			 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/>
@@ -132,7 +124,7 @@
 			<#if parameters.buttonCssStyle?exists><#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}');" /><br /><br />
+			 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?exists><#t/>
 			<input type="button" 
 			<#if parameters.buttonCssClass?exists><#t/>
@@ -141,7 +133,7 @@
 			<#if parameters.buttonCssStyle?exists><#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}'));" /><br /><br />
+			 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?exists><#t/>
 			<input type="button" 
 			<#if parameters.buttonCssClass?exists><#t/>
@@ -150,7 +142,7 @@
 			<#if parameters.buttonCssStyle?exists><#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}');" /><br /><br />
+			 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?exists><#t/>
@@ -159,7 +151,7 @@
 			<#if parameters.buttonCssStyle?exists><#t/>
 			 style="${parameters.buttonCssStyle?html}"
 			</#if><#t/>
-			 value="${selectAllLabel}" onclick="selectAllOptions(document.getElementById('${parameters.id?html}'));selectAllOptions(document.getElementById('${parameters.doubleId?html}'));" /><br /><br />
+			 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>
@@ -260,21 +252,13 @@
 </select>
 <#if parameters.allowUpDownOnRight?default(true)>
 <input type="button" 
-<#if parameters.doubleHeaderKey?exists>
-	onclick="moveOptionDown(document.getElementById('${parameters.doubleId}'), 'key', '${parameters.doubleHeaderKey}');"
-<#else>
-	onclick="moveOptionDown(document.getElementById('${parameters.doubleId}'), 'key', '');"
-</#if>
+	onclick="moveOptionDown(document.getElementById('${parameters.doubleId}'), 'key', <#if parameters.doubleHeaderKey?exists>'${parameters.doubleHeaderKey}'<#else>''</#if>);<#if parameters.upDownOnRightOnclick?has_content>${parameters.upDownOnRightOnclick};</#if>"
 <#if parameters.rightDownLabel?exists>
 	value="${parameters.rightDownLabel?html}"
 </#if>
 />
 <input type="button" 
-<#if parameters.doubleHeaderKey?exists>
-	onclick="moveOptionUp(document.getElementById('${parameters.doubleId}'), 'key', '${parameters.doubleHeaderKey}');"
-<#else>
-	onclick="moveOptionUp(document.getElementById('${parameters.doubleId}'), 'key', '');"
-</#if>
+	onclick="moveOptionUp(document.getElementById('${parameters.doubleId}'), 'key', <#if parameters.doubleHeaderKey?exists>'${parameters.doubleHeaderKey}'<#else>''</#if>);<#if parameters.upDownOnRightOnclick?has_content>${parameters.upDownOnRightOnclick};</#if>"
 <#if parameters.rightUpLabel?exists>
 	value="${parameters.rightUpLabel?html}"
 </#if>

Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/site/resources/tags/optiontransferselect.html
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/site/resources/tags/optiontransferselect.html?view=diff&rev=558460&r1=558459&r2=558460
==============================================================================
--- struts/struts2/branches/STRUTS_2_0_X/core/src/site/resources/tags/optiontransferselect.html (original)
+++ struts/struts2/branches/STRUTS_2_0_X/core/src/site/resources/tags/optiontransferselect.html Sat Jul 21 21:16:29 2007
@@ -44,6 +44,14 @@
 					<td align="left" valign="top">Set Add To Left button label</td>
 				</tr>
 				<tr>
+					<td align="left" valign="top">addAllToLeftOnclick</td>
+					<td align="left" valign="top">false</td>
+					<td align="left" valign="top"></td>
+					<td align="left" valign="top">true</td>
+					<td align="left" valign="top">String</td>
+					<td align="left" valign="top">Javascript to run after Add All To Left button pressed</td>
+				</tr>
+				<tr>
 					<td align="left" valign="top">addAllToRightLabel</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>
@@ -52,6 +60,14 @@
 					<td align="left" valign="top">Set Add All To Right button label</td>
 				</tr>
 				<tr>
+					<td align="left" valign="top">addAllToRightOnclick</td>
+					<td align="left" valign="top">false</td>
+					<td align="left" valign="top"></td>
+					<td align="left" valign="top">true</td>
+					<td align="left" valign="top">String</td>
+					<td align="left" valign="top">Javascript to run after Add All To Right button pressed</td>
+				</tr>
+				<tr>
 					<td align="left" valign="top">addToLeftLabel</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>
@@ -60,6 +76,14 @@
 					<td align="left" valign="top">Set Add To Left button label</td>
 				</tr>
 				<tr>
+					<td align="left" valign="top">addToLeftOnclick</td>
+					<td align="left" valign="top">false</td>
+					<td align="left" valign="top"></td>
+					<td align="left" valign="top">true</td>
+					<td align="left" valign="top">String</td>
+					<td align="left" valign="top">Javascript to run after Add To Left button pressed</td>
+				</tr>
+				<tr>
 					<td align="left" valign="top">addToRightLabel</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>
@@ -68,6 +92,14 @@
 					<td align="left" valign="top">Set Add To Right button label</td>
 				</tr>
 				<tr>
+					<td align="left" valign="top">addToRightOnclick</td>
+					<td align="left" valign="top">false</td>
+					<td align="left" valign="top"></td>
+					<td align="left" valign="top">true</td>
+					<td align="left" valign="top">String</td>
+					<td align="left" valign="top">Javascript to run after Add To Right button pressed</td>
+				</tr>
+				<tr>
 					<td align="left" valign="top">allowAddAllToLeft</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>
@@ -684,6 +716,14 @@
 					<td align="left" valign="top">Set Select All button label</td>
 				</tr>
 				<tr>
+					<td align="left" valign="top">selectAllOnclick</td>
+					<td align="left" valign="top">false</td>
+					<td align="left" valign="top"></td>
+					<td align="left" valign="top">true</td>
+					<td align="left" valign="top">String</td>
+					<td align="left" valign="top">Javascript to run after Select All button pressed</td>
+				</tr>
+				<tr>
 					<td align="left" valign="top">size</td>
 					<td align="left" valign="top">false</td>
 					<td align="left" valign="top"></td>
@@ -746,6 +786,22 @@
 					<td align="left" valign="top">true</td>
 					<td align="left" valign="top">String</td>
 					<td align="left" valign="top">Set the tooltip configuration</td>
+				</tr>
+				<tr>
+					<td align="left" valign="top">upDownOnLeftOnclick</td>
+					<td align="left" valign="top">false</td>
+					<td align="left" valign="top"></td>
+					<td align="left" valign="top">true</td>
+					<td align="left" valign="top">String</td>
+					<td align="left" valign="top">Javascript to run after up / down on the left side buttons pressed</td>
+				</tr>
+				<tr>
+					<td align="left" valign="top">upDownOnRightOnclick</td>
+					<td align="left" valign="top">false</td>
+					<td align="left" valign="top"></td>
+					<td align="left" valign="top">true</td>
+					<td align="left" valign="top">String</td>
+					<td align="left" valign="top">Javascript to run after up / down on the right side buttons pressed</td>
 				</tr>
 				<tr>
 					<td align="left" valign="top">value</td>

Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/test/java/org/apache/struts2/views/jsp/ui/OptionTransferSelectTagTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/test/java/org/apache/struts2/views/jsp/ui/OptionTransferSelectTagTest.java?view=diff&rev=558460&r1=558459&r2=558460
==============================================================================
--- struts/struts2/branches/STRUTS_2_0_X/core/src/test/java/org/apache/struts2/views/jsp/ui/OptionTransferSelectTagTest.java (original)
+++ struts/struts2/branches/STRUTS_2_0_X/core/src/test/java/org/apache/struts2/views/jsp/ui/OptionTransferSelectTagTest.java Sat Jul 21 21:16:29 2007
@@ -516,6 +516,9 @@
         tag.setDoubleHeaderKey("Double Header Key");
         tag.setDoubleHeaderValue("Double Header Value");
 
+        tag.setAddToLeftOnclick("alert('Moving Left')");
+        tag.setAddToRightOnclick("alert('Moving Right')");
+
         tag.doStartTag();
         tag.doEndTag();
 

Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-1.txt
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-1.txt?view=diff&rev=558460&r1=558459&r2=558460
==============================================================================
--- struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-1.txt (original)
+++ struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-1.txt Sat Jul 21 21:16:29 2007
@@ -17,13 +17,13 @@
 </td>
 <td valign="middle" align="center">
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="Left" onclick="moveSelectedOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '')" /><br/><br/>
+			value="Left" onclick="moveSelectedOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="Right" onclick="moveSelectedOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '')" /><br/><br/>
+			value="Right" onclick="moveSelectedOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="All Left" onclick="moveAllOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '')" /><br/><br/>
+			value="All Left" onclick="moveAllOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="All Right" onclick="moveAllOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '')" /><br/><br/>	
+			value="All Right" onclick="moveAllOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
 			value="Select All" onclick="selectAllOptionsExceptSome(document.getElementById('id'), 'key', 'Header Key');selectAllOptionsExceptSome(document.getElementById('doubleId'), 'key', 'Double Header Key');" /><br/><br/>
 </td> 

Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-2.txt
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-2.txt?view=diff&rev=558460&r1=558459&r2=558460
==============================================================================
--- struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-2.txt (original)
+++ struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-2.txt Sat Jul 21 21:16:29 2007
@@ -18,13 +18,13 @@
 </td>
 <td valign="middle" align="center">
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="Left" onclick="moveSelectedOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '')" /><br/><br/>
+			value="Left" onclick="moveSelectedOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="Right" onclick="moveSelectedOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '')" /><br/><br/>
+			value="Right" onclick="moveSelectedOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="All Left" onclick="moveAllOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '')" /><br/><br/>
+			value="All Left" onclick="moveAllOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="All Right" onclick="moveAllOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '')" /><br/><br/>	
+			value="All Right" onclick="moveAllOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '');" /><br/><br/>	
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
 			value="Select All" onclick="selectAllOptionsExceptSome(document.getElementById('id'), 'key', 'Header Key');selectAllOptionsExceptSome(document.getElementById('doubleId'), 'key', 'Double Header Key');" /><br/><br/>
 </td> <td>

Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-3.txt
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-3.txt?view=diff&rev=558460&r1=558459&r2=558460
==============================================================================
--- struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-3.txt (original)
+++ struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-3.txt Sat Jul 21 21:16:29 2007
@@ -17,13 +17,13 @@
 </td>
 <td valign="middle" align="center">
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="Left" onclick="moveSelectedOptions(document.getElementById('doubleId'), document.getElementById('id'), false, '')" /><br/><br/>
+			value="Left" onclick="moveSelectedOptions(document.getElementById('doubleId'), document.getElementById('id'), false, '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="Right" onclick="moveSelectedOptions(document.getElementById('id'), document.getElementById('doubleId'), false, '')" /><br/><br/>
+			value="Right" onclick="moveSelectedOptions(document.getElementById('id'), document.getElementById('doubleId'), false, '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="All Left" onclick="moveAllOptions(document.getElementById('doubleId'), document.getElementById('id'), false, '')" /><br/><br/>
+			value="All Left" onclick="moveAllOptions(document.getElementById('doubleId'), document.getElementById('id'), false, '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="All Right" onclick="moveAllOptions(document.getElementById('id'), document.getElementById('doubleId'), false, '')" /><br/><br/>	
+			value="All Right" onclick="moveAllOptions(document.getElementById('id'), document.getElementById('doubleId'), false, '');" /><br/><br/>	
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
 			value="Select All" onclick="selectAllOptions(document.getElementById('id'));selectAllOptions(document.getElementById('doubleId'));" /><br/><br/>
 </td>

Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-4.txt
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-4.txt?view=diff&rev=558460&r1=558459&r2=558460
==============================================================================
--- struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-4.txt (original)
+++ struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-4.txt Sat Jul 21 21:16:29 2007
@@ -18,13 +18,13 @@
 </td>
 <td valign="middle" align="center">
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="Left" onclick="moveSelectedOptions(document.getElementById('doubleId'), document.getElementById('id'), false, '')" /><br/><br/>
+			value="Left" onclick="moveSelectedOptions(document.getElementById('doubleId'), document.getElementById('id'), false, '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="Right" onclick="moveSelectedOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '')" /><br/><br/>
+			value="Right" onclick="moveSelectedOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="All Left" onclick="moveAllOptions(document.getElementById('doubleId'), document.getElementById('id'), false, '')" /><br/><br/>
+			value="All Left" onclick="moveAllOptions(document.getElementById('doubleId'), document.getElementById('id'), false, '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="All Right" onclick="moveAllOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '')" /><br/><br/>	
+			value="All Right" onclick="moveAllOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '');" /><br/><br/>	
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
 			value="Select All" onclick="selectAllOptionsExceptSome(document.getElementById('id'), 'key', 'Header Key');selectAllOptions(document.getElementById('doubleId'));" /><br/><br/>
 </td>

Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-5.txt
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-5.txt?view=diff&rev=558460&r1=558459&r2=558460
==============================================================================
--- struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-5.txt (original)
+++ struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-5.txt Sat Jul 21 21:16:29 2007
@@ -17,13 +17,13 @@
 </td>
 <td valign="middle" align="center">
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="Left" onclick="moveSelectedOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '')" /><br/><br/>
+			value="Left" onclick="moveSelectedOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="Right" onclick="moveSelectedOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '')" /><br/><br/>
+			value="Right" onclick="moveSelectedOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="All Left" onclick="moveAllOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '')" /><br/><br/>
+			value="All Left" onclick="moveAllOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="All Right" onclick="moveAllOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '')" /><br/><br/>	
+			value="All Right" onclick="moveAllOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '');" /><br/><br/>	
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
 			value="Select All" onclick="selectAllOptionsExceptSome(document.getElementById('id'), 'key', 'Header Key');selectAllOptionsExceptSome(document.getElementById('doubleId'), 'key', 'Double Header Key');" /><br/><br/>
 </td>

Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-6.txt
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-6.txt?view=diff&rev=558460&r1=558459&r2=558460
==============================================================================
--- struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-6.txt (original)
+++ struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-6.txt Sat Jul 21 21:16:29 2007
@@ -18,13 +18,13 @@
 </td>
 <td valign="middle" align="center">
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="Left" onclick="moveSelectedOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '')" /><br/><br/>
+			value="Left" onclick="moveSelectedOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="Right" onclick="moveSelectedOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '')" /><br/><br/>
+			value="Right" onclick="moveSelectedOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="All Left" onclick="moveAllOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '')" /><br/><br/>
+			value="All Left" onclick="moveAllOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="All Right" onclick="moveAllOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '')" /><br/><br/>	
+			value="All Right" onclick="moveAllOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '');" /><br/><br/>	
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
 			value="Select All" onclick="selectAllOptionsExceptSome(document.getElementById('id'), 'key', 'Header Key');selectAllOptionsExceptSome(document.getElementById('doubleId'), 'key', 'Double Header Key');" /><br/><br/>
 </td>

Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-7.txt
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-7.txt?view=diff&rev=558460&r1=558459&r2=558460
==============================================================================
--- struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-7.txt (original)
+++ struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/optiontransferselect-7.txt Sat Jul 21 21:16:29 2007
@@ -18,9 +18,9 @@
 </td>
 <td valign="middle" align="center">
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="Left" onclick="moveSelectedOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '')" /><br/><br/>
+			value="Left" onclick="moveSelectedOptions(document.getElementById('doubleId'), document.getElementById('id'), false, 'Double Header Key', '');alert('Moving Left');" /><br/><br/>
 	<input type="button" class="buttonCssClass" style="buttonCssStyle"
-			value="Right" onclick="moveSelectedOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '')" /><br/><br/>
+			value="Right" onclick="moveSelectedOptions(document.getElementById('id'), document.getElementById('doubleId'), false, 'Header Key', '');alert('Moving Right');" /><br/><br/>
 </td> 
 <td>
 	<label for="rightTitle">Title Right</label><br/>