Author: mrdon
Date: Sun Apr 23 20:31:47 2006
New Revision: 396398

URL: http://svn.apache.org/viewcvs?rev=396398&view=rev
Log:
Removed the Kruse script for option transfer select, replaced with clean
impl

Added:
    
incubator/webwork2/action/src/main/resources/org/apache/struts/action2/static/optiontransferselect.js
Removed:
    
incubator/webwork2/action/src/main/resources/org/apache/struts/action2/static/optiontransferselect/
Modified:
    
incubator/webwork2/action/src/main/resources/template/simple/optiontransferselect.ftl

Added: 
incubator/webwork2/action/src/main/resources/org/apache/struts/action2/static/optiontransferselect.js
URL: 
http://svn.apache.org/viewcvs/incubator/webwork2/action/src/main/resources/org/apache/struts/action2/static/optiontransferselect.js?rev=396398&view=auto
==============================================================================
--- 
incubator/webwork2/action/src/main/resources/org/apache/struts/action2/static/optiontransferselect.js
 (added)
+++ 
incubator/webwork2/action/src/main/resources/org/apache/struts/action2/static/optiontransferselect.js
 Sun Apr 23 20:31:47 2006
@@ -0,0 +1,112 @@
+function moveSelectedOptions(objSourceElement, objTargetElement, toSort, 
notMove1, notMove2) {
+    var test1 = compile(notMove1);
+    var test2 = compile(notMove2);
+    moveOptions(objSourceElement, objTargetElement, toSort, 
+        function(opt) {
+            return (opt.selected && !test1(opt.value) && !test2(opt.value));
+        }
+    );
+}
+
+function moveAllOptions(objSourceElement, objTargetElement, toSort, notMove1, 
notMove2) {
+    var test1 = compile(notMove1);
+    var test2 = compile(notMove2);
+    moveOptions(objSourceElement, objTargetElement, toSort, 
+        function(opt) {
+            return (!test1(opt.value) && !test2(opt.value));
+        }
+    );
+}
+
+function compile(ptn) {
+    if (ptn != undefined) {
+        if (ptn == '' || !window.RegExp) {
+            return function(val) { return val == ptn; }
+        } else {
+            var reg = new RegExp(ptn);
+            return function (val) { return reg.test(val); }
+        }
+    }
+    return function(val) { return false; }
+}    
+
+
+function moveOptions(objSourceElement, objTargetElement, toSort, chooseFunc) {
+    var aryTempSourceOptions = new Array();
+    var aryTempTargetOptions = new Array();
+    var x = 0;
+
+    //looping through source element to find selected options
+    for (var i = 0; i < objSourceElement.length; i++) {
+        if (chooseFunc(objSourceElement.options[i])) {
+            //need to move this option to target element
+            var intTargetLen = objTargetElement.length++;
+            objTargetElement.options[intTargetLen].text =   
objSourceElement.options[i].text;
+            objTargetElement.options[intTargetLen].value =  
objSourceElement.options[i].value;
+        }
+        else {
+            //storing options that stay to recreate select element
+            var objTempValues = new Object();
+            objTempValues.text = objSourceElement.options[i].text;
+            objTempValues.value = objSourceElement.options[i].value;
+            aryTempSourceOptions[x] = objTempValues;
+            x++;
+        }
+    }
+
+    //sorting and refilling target list
+    for (var i = 0; i < objTargetElement.length; i++) {
+        var objTempValues = new Object();
+        objTempValues.text = objTargetElement.options[i].text;
+        objTempValues.value = objTargetElement.options[i].value;
+        aryTempTargetOptions[i] = objTempValues;
+    }
+    
+    if (toSort) {
+        aryTempTargetOptions.sort(sortByText);
+    }    
+    
+    for (var i = 0; i < objTargetElement.length; i++) {
+        objTargetElement.options[i].text = aryTempTargetOptions[i].text;
+        objTargetElement.options[i].value = aryTempTargetOptions[i].value;
+        objTargetElement.options[i].selected = false;
+    }   
+    
+    //resetting length of source
+    objSourceElement.length = aryTempSourceOptions.length;
+    //looping through temp array to recreate source select element
+    for (var i = 0; i < aryTempSourceOptions.length; i++) {
+        objSourceElement.options[i].text = aryTempSourceOptions[i].text;
+        objSourceElement.options[i].value = aryTempSourceOptions[i].value;
+        objSourceElement.options[i].selected = false;
+    }
+}
+
+function sortByText(a, b) {
+    if (a.text < b.text) {return -1}
+    if (a.text > b.text) {return 1}
+    return 0;
+}
+
+function selectAllOptionsExceptSome(objTargetElement, type, ptn) {
+    var test = compile(ptn);
+    for (var i = 0; i < objTargetElement.length; i++) {
+        var opt = objTargetElement.options[i];
+        if ((type == 'key' && !test(opt.value)) ||
+              (type == 'text' && !test(opt.text))) {
+            opt.selected = true;
+        } else {
+            opt.selected = false;
+        }    
+    }
+    return false;
+}
+
+function selectAllOptions(objTargetElement) {
+    for (var i = 0; i < objTargetElement.length; i++) {
+        if (objTargetElement.options[i].value != '') {
+            objTargetElement.options[i].selected = true;    
+        }    
+    }
+    return false;
+}

Modified: 
incubator/webwork2/action/src/main/resources/template/simple/optiontransferselect.ftl
URL: 
http://svn.apache.org/viewcvs/incubator/webwork2/action/src/main/resources/template/simple/optiontransferselect.ftl?rev=396398&r1=396397&r2=396398&view=diff
==============================================================================
--- 
incubator/webwork2/action/src/main/resources/template/simple/optiontransferselect.ftl
 (original)
+++ 
incubator/webwork2/action/src/main/resources/template/simple/optiontransferselect.ftl
 Sun Apr 23 20:31:47 2006
@@ -1,5 +1,5 @@
 <#if !stack.findValue("#optiontransferselect_js_included")?exists><#t/>
-       <script language="javascript" src="<@saf.url 
value="/struts/optiontransferselect/optiontransferselect.js" encode='false' 
/>"></script>
+       <script language="javascript" src="<@saf.url 
value="/struts/optiontransferselect.js" encode='false' />"></script>
        <#assign temporaryVariable = 
stack.setValue("#optiontransferselect_js_included", "true") /><#t/>
 </#if><#t/>
 <table border="0">



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to