From: <max...@us...> - 2009-08-26 10:14:47
|
Revision: 3870 http://uni-d.svn.sourceforge.net/uni-d/?rev=3870&view=rev Author: max_brod Date: 2009-08-26 10:14:33 +0000 (Wed, 26 Aug 2009) Log Message: ----------- No more using a separate js script file for Master detail components key navigation. Modified Paths: -------------- trunk/Uni-d/tapestry/src/main/resources/be/unid/tapestry/components/masterDetail/main/MasterDetailComponent.script Removed Paths: ------------- trunk/Uni-d/template/src/main/webapp/MasterDetail.js Modified: trunk/Uni-d/tapestry/src/main/resources/be/unid/tapestry/components/masterDetail/main/MasterDetailComponent.script =================================================================== --- trunk/Uni-d/tapestry/src/main/resources/be/unid/tapestry/components/masterDetail/main/MasterDetailComponent.script 2009-08-25 16:15:34 UTC (rev 3869) +++ trunk/Uni-d/tapestry/src/main/resources/be/unid/tapestry/components/masterDetail/main/MasterDetailComponent.script 2009-08-26 10:14:33 UTC (rev 3870) @@ -23,4 +23,108 @@ ]]> </unique> </body> + <initialization> + <![CDATA[ + function getMasterDetailParent(elem) + { + var parent=elem + do + { + if (parent.className=="detailRow") + { + return parent; + } + if (parent.className!=null && parent.className.indexOf("tabset_content")==0) + { + return parent; + } + if (parent.tagName=="TR") + { + var trs=parent.parentNode.getElementsByTagName("TR"); + if (trs[0].className=="detailRow") + { + for (i=0; i<trs.length; i++) + { + if (trs[i]==parent && i>0 && trs[i-1].className=="detailRow") + { + return trs[i-1]; + } + } + } + } + parent=parent.parentNode + } + while (parent!=null); + return parent + } + + + function gotoDetailLine (previousDetailLine, form) { + var targetTr=null + var i=0 + var foundPrevious=false + for (i=0; i<form.elements.length; i++) + { + var elem=form.elements[i]; + var mdParent=getMasterDetailParent(elem) + + if (mdParent!=null && mdParent.className=="detailRow" && !foundPrevious ) + { + if (previousDetailLine==null || mdParent==previousDetailLine) + { + foundPrevious=true; + } + } + if (foundPrevious && mdParent!=previousDetailLine) + { + if (mdParent==null) + { + var addButton=document.getElementById("addMoreDetailLines"); + if (addButton!=null) addButton.click() + } + if (((elem.tagName=="INPUT" ) && ((elem.type=="text") || (elem.type=="checkbox"))) || (elem.tagName=="SELECT")) + { + if ((elem.style.display!="none") && (elem.disabled==false) && (elem.className!="displayNone")) + { + td=elem.parentNode; + tr=td.parentNode; + tbody=tr.parentNode; + if ((td.style.display!="none") && (td.className!="displayNone") && (tr.style.display!="none") && (tr.className!="displayNone") && (tbody.style.display!="none") && (tbody.className!="displayNone")) + { + elem.focus(); + if (elem.tagName=="INPUT") elem.select(); + break; + } + } + } + } + } + } + + function shortcutkey_handler_end(event) + { + /* + pressing end should go: + - from anywhere in header to the first field on the first line + - from anywhere in a detail line to the begining of the next detail line + - from the last detail line to the add button + */ + if (event.keyCode==35) + { + var mdParent=getMasterDetailParent(event.target); + if (mdParent==null) return; + if (mdParent.className=="detailRow") + { + gotoDetailLine(mdParent, event.target.form); + } + else + { + gotoDetailLine(null, event.target.form); + } + } + } + + document.addEventListener('keypress', shortcutkey_handler_end, true); + ]]> + </initialization> </script> Deleted: trunk/Uni-d/template/src/main/webapp/MasterDetail.js =================================================================== --- trunk/Uni-d/template/src/main/webapp/MasterDetail.js 2009-08-25 16:15:34 UTC (rev 3869) +++ trunk/Uni-d/template/src/main/webapp/MasterDetail.js 2009-08-26 10:14:33 UTC (rev 3870) @@ -1,103 +0,0 @@ -function getMasterDetailParent(elem) -{ - var parent=elem - do - { - if (parent.className=="detailRow") - { - return parent; - } - if (parent.className!=null && parent.className.indexOf("tabset_content")==0) - { - return parent; - } - if (parent.tagName=="TR") - { - var trs=parent.parentNode.getElementsByTagName("TR"); - if (trs[0].className=="detailRow") - { - for (i=0; i<trs.length; i++) - { - if (trs[i]==parent && i>0 && trs[i-1].className=="detailRow") - { - return trs[i-1]; - } - } - } - } - parent=parent.parentNode - } - while (parent!=null); - return parent - } - - - function gotoDetailLine (previousDetailLine, form) { - var targetTr=null - var i=0 - var foundPrevious=false - for (i=0; i<form.elements.length; i++) - { - var elem=form.elements[i]; - var mdParent=getMasterDetailParent(elem) - - if (mdParent!=null && mdParent.className=="detailRow" && !foundPrevious ) - { - if (previousDetailLine==null || mdParent==previousDetailLine) - { - foundPrevious=true; - } - } - if (foundPrevious && mdParent!=previousDetailLine) - { - if (mdParent==null) - { - var addButton=document.getElementById("addMoreDetailLines"); - if (addButton!=null) addButton.click() - } - if (((elem.tagName=="INPUT" ) && ((elem.type=="text") || (elem.type=="checkbox"))) || (elem.tagName=="SELECT")) - { - if ((elem.style.display!="none") && (elem.disabled==false) && (elem.className!="displayNone")) - { - td=elem.parentNode; - tr=td.parentNode; - tbody=tr.parentNode; - if ((td.style.display!="none") && (td.className!="displayNone") && (tr.style.display!="none") && (tr.className!="displayNone") && (tbody.style.display!="none") && (tbody.className!="displayNone")) - { - elem.focus(); - if (elem.tagName=="INPUT") elem.select(); - break; - } - } - } - } - } - } - - - - function shortcutkey_handler_end(event) - { - /* - pressing end should go: - - from anywhere in header to the first field on the first line - - from anywhere in a detail line to the begining of the next detail line - - from the last detail line to the add button - */ - if (event.keyCode==35) - { - var mdParent=getMasterDetailParent(event.target); - if (mdParent==null) return; - if (mdParent.className=="detailRow") - { - gotoDetailLine(mdParent, event.target.form); - } - else - { - gotoDetailLine(null, event.target.form); - } - } - } - - document.addEventListener('keypress', shortcutkey_handler_end, true); - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |