diff --git a/lib/client/key.js b/lib/client/key.js index a0de62e3..e1bfdd75 100644 --- a/lib/client/key.js +++ b/lib/client/key.js @@ -78,253 +78,252 @@ var CloudCmd, Util, DOM; /* если клавиши можно обрабатывать*/ if(Binded){ switch(lKeyCode){ - case Key.TAB: - /* changing parent panel of curent-file */ - var lPanel = DOM.getPanel(), - lId = lPanel.id; - - lTabPanel[lId] = lCurrent; - - lPanel = DOM.getPanel({active:false}); + case Key.TAB: + /* changing parent panel of curent-file */ + var lPanel = DOM.getPanel(), lId = lPanel.id; - - if(lTabPanel[lId]) - DOM.setCurrentFile(lTabPanel[lId]); - else{ - var lFirstFileOnList = DOM.getByTag('li', lPanel)[2]; - - DOM.setCurrentFile(lFirstFileOnList); - } - - DOM.preventDefault(pEvent);//запрет на дальнейшее действие - break; - case Key.INSERT: - DOM.setSelectedFile( lCurrent ); - DOM.setCurrentFile( lCurrent.nextSibling ); - break; + lTabPanel[lId] = lCurrent; - case Key.DELETE: - if(lShift){ - var lUrl = DOM.getCurrentPath(lCurrent); + lPanel = DOM.getPanel({active:false}); + lId = lPanel.id; + + if(lTabPanel[lId]) + DOM.setCurrentFile(lTabPanel[lId]); + else{ + var lFirstFileOnList = DOM.getByTag('li', lPanel)[2]; - if( DOM.isCurrentIsDir(lCurrent) ) - lUrl += '?dir'; - - DOM.RESTfull.delete(lUrl, function(){ - DOM.deleteCurrent(lCurrent); - }); - } - else - DOM.promptDeleteSelected(lCurrent); - break; + DOM.setCurrentFile(lFirstFileOnList); + } - case Key.F1: - Util.exec(CloudCmd.Help); - DOM.preventDefault(pEvent); - break; - - case Key.F2: - DOM.renameCurrent(lCurrent); - break; + DOM.preventDefault(pEvent);//запрет на дальнейшее действие + break; + + case Key.INSERT: + DOM.setSelectedFile( lCurrent ); + DOM.setCurrentFile( lCurrent.nextSibling ); + break; + + case Key.DELETE: + if(lShift){ + var lUrl = DOM.getCurrentPath(lCurrent); - case Key.F3: - Util.exec(CloudCmd.View); - DOM.preventDefault(pEvent); - break; - - case Key.F4: - Util.exec(CloudCmd.Edit); - DOM.preventDefault(pEvent); - break; - - case Key.F5: - DOM.copyCurrent(lCurrent); - DOM.preventDefault(pEvent); - break; - - case Key.F6: - DOM.moveCurrent(lCurrent); - DOM.preventDefault(pEvent); - break; - - case Key.F7: - DOM.promptNewDir(); - break; - - case Key.F8: - DOM.promptDeleteSelected(lCurrent); - break; - - case Key.F: - DOM.promptDeleteCurrent(lCurrent); - break; - - case Key.F9: - Util.exec(CloudCmd.Menu); - DOM.preventDefault(pEvent); - break; - - case Key.TRA: - DOM.Images.showLoad({top: true}); - Util.exec(CloudCmd.Console); - break; + if( DOM.isCurrentIsDir(lCurrent) ) + lUrl += '?dir'; - case Key.SPACE: - var lSelected = DOM.isSelected(lCurrent), - lDir = DOM.isCurrentIsDir(lCurrent), - lName = DOM.getCurrentName(lCurrent); - - if(!lDir || lName === '..') - lSelected = true; - - Util.ifExec(lSelected, function(){ - DOM.setSelectedFile(lCurrent); - }, function(pCallBack){ - DOM.loadCurrentSize(pCallBack, lCurrent); + DOM.RESTfull.delete(lUrl, function(){ + DOM.deleteCurrent(lCurrent); }); - - - DOM.preventDefault(pEvent); - break; - - /* навигация по таблице файлов * - * если нажали клавишу вверх * - * выделяем предыдущую строку */ - case Key.UP: - if(lShift) - DOM.setSelectedFile(lCurrent); - - DOM.setCurrentFile( lCurrent.previousSibling ); - DOM.preventDefault( pEvent ); - break; - - /* если нажали клавишу в низ * - * выделяем следующую строку */ - case Key.DOWN: - if(lShift) - DOM.setSelectedFile(lCurrent); - - DOM.setCurrentFile( lCurrent.nextSibling ); - DOM.preventDefault( pEvent ); - break; - - /* если нажали клавишу Home * - * переходим к самому верхнему * - * элементу */ - case Key.HOME: - DOM.setCurrentFile( lCurrent.parentElement.firstChild ); - DOM.preventDefault(pEvent); - break; - - /* если нажали клавишу End - * выделяем последний элемент */ - case Key.END: - DOM.setCurrentFile( lCurrent.parentElement.lastElementChild ); - DOM.preventDefault( pEvent ); - break; - - /* если нажали клавишу page down - * проматываем экран */ - case Key.PAGE_DOWN: - DOM.scrollByPages( DOM.getPanel(), 1 ); - - for(i=0; i<30; i++){ - if(!lCurrent.nextSibling) break; - - lCurrent = lCurrent.nextSibling; - } - DOM.setCurrentFile(lCurrent); - DOM.preventDefault(pEvent); - break; - - /* если нажали клавишу page up проматываем экран */ - case Key.PAGE_UP: - DOM.scrollByPages( DOM.getPanel(), -1 ); - - var lC = lCurrent, - tryCatch = function(pCurrentFile){ - Util.tryCatch(function(){ - return pCurrentFile - .previousSibling - .previousSibling - .previousSibling - .previousSibling; - }); - }; - - for(i = 0; i < 30; i++){ - if(!lC.previousSibling || tryCatch(lC) ) break; - - lC = lC.previousSibling; - } - DOM.setCurrentFile(lC); - DOM.preventDefault(pEvent); - break; - - /* открываем папку*/ - case Key.ENTER: - if( DOM.isCurrentIsDir() ) - Util.exec( CloudCmd.loadDir() ); - break; - - case Key.A: - if(pEvent.ctrlKey){ - var lParent = lCurrent.parentElement, - lNodes = lParent.childNodes; - - /* not path and fm_header */ - for(i = 2, n = lNodes.length; i < n; i++) - DOM.setSelectedFile( lNodes[i] ); - - DOM.preventDefault(pEvent); - } - - break; - - /* - * обновляем страницу, - * загружаем содержимое каталога - * при этом данные берём всегда с - * сервера, а не из кэша - * (обновляем кэш) - */ - case Key.R: - if(lCtrl){ - Util.log('+r pressed\n' + - 'reloading page...\n' + - 'press +q to remove all key-handlers'); - - CloudCmd.refresh(); - DOM.preventDefault(pEvent); - } + } + else + DOM.promptDeleteSelected(lCurrent); + break; + + case Key.F1: + Util.exec(CloudCmd.Help); + DOM.preventDefault(pEvent); + break; + + case Key.F2: + DOM.renameCurrent(lCurrent); break; - /* чистим кэш */ - case Key.D: - if(lCtrl){ - Util.log('+d pressed\n' + - 'clearing cache...\n' + - 'press +q to remove all key-handlers'); - - DOM.Cache.clear(); - DOM.preventDefault(); - } - break; + case Key.F3: + Util.exec(CloudCmd.View); + DOM.preventDefault(pEvent); + break; - /* убираем все обработчики - * нажатий клавиш */ - case Key.Q: - if(lAlt){ - Util.log('+q pressed\n' + - '+r reload key-handerl - removed' + - '+s clear cache key-handler - removed'+ - 'press +s to to set them'); - - /* обработчик нажатий клавиш снят*/ - Binded = false; - DOM.preventDefault(pEvent); - } + case Key.F4: + Util.exec(CloudCmd.Edit); + DOM.preventDefault(pEvent); + break; + + case Key.F5: + DOM.copyCurrent(lCurrent); + DOM.preventDefault(pEvent); + break; + + case Key.F6: + DOM.moveCurrent(lCurrent); + DOM.preventDefault(pEvent); + break; + + case Key.F7: + DOM.promptNewDir(); + break; + + case Key.F8: + DOM.promptDeleteSelected(lCurrent); + break; + + case Key.F: + DOM.promptDeleteCurrent(lCurrent); + break; + + case Key.F9: + Util.exec(CloudCmd.Menu); + DOM.preventDefault(pEvent); + + break; + + case Key.TRA: + DOM.Images.showLoad({top: true}); + Util.exec(CloudCmd.Console); + + break; + + case Key.SPACE: + var lSelected = DOM.isSelected(lCurrent), + lDir = DOM.isCurrentIsDir(lCurrent), + lName = DOM.getCurrentName(lCurrent); + + if (!lDir || lName === '..') + lSelected = true; + + Util.ifExec(lSelected, function() { + DOM.setSelectedFile(lCurrent); + }, function(pCallBack) { + DOM.loadCurrentSize(pCallBack, lCurrent); + }); + + + DOM.preventDefault(pEvent); + break; + + /* навигация по таблице файлов * + * если нажали клавишу вверх * + * выделяем предыдущую строку */ + case Key.UP: + if (lShift) + DOM.setSelectedFile(lCurrent); + + DOM.setCurrentFile( lCurrent.previousSibling ); + DOM.preventDefault( pEvent ); + break; + + /* если нажали клавишу в низ - выделяем следующую строку */ + case Key.DOWN: + if (lShift) + DOM.setSelectedFile(lCurrent); + + DOM.setCurrentFile( lCurrent.nextSibling ); + DOM.preventDefault( pEvent ); + break; + + /* если нажали клавишу Home * + * переходим к самому верхнему * + * элементу */ + case Key.HOME: + DOM.setCurrentFile( lCurrent.parentElement.firstChild ); + DOM.preventDefault(pEvent); + break; + + /* если нажали клавишу End выделяем последний элемент */ + case Key.END: + DOM.setCurrentFile( lCurrent.parentElement.lastElementChild ); + DOM.preventDefault( pEvent ); + break; + + /* если нажали клавишу page down проматываем экран */ + case Key.PAGE_DOWN: + DOM.scrollByPages( DOM.getPanel(), 1 ); + + for (i = 0; i < 30; i++) { + + if (!lCurrent.nextSibling) + break; + + lCurrent = lCurrent.nextSibling; + } + DOM.setCurrentFile(lCurrent); + DOM.preventDefault(pEvent); + break; + + /* если нажали клавишу page up проматываем экран */ + case Key.PAGE_UP: + DOM.scrollByPages(DOM.getPanel(), -1); + + var lC = lCurrent, + tryCatch = function(pCurrentFile){ + Util.tryCatch(function(){ + return pCurrentFile + .previousSibling + .previousSibling + .previousSibling + .previousSibling; + }); + }; + + for (i = 0; i < 30; i++){ + if (!lC.previousSibling || tryCatch(lC) ) break; + + lC = lC.previousSibling; + } + + DOM.setCurrentFile(lC); + DOM.preventDefault(pEvent); + break; + + /* открываем папку*/ + case Key.ENTER: + if (DOM.isCurrentIsDir()) + Util.exec( CloudCmd.loadDir() ); + break; + + case Key.A: + if (pEvent.ctrlKey) { + var lParent = lCurrent.parentElement, + lNodes = lParent.childNodes; + + /* not path and fm_header */ + for (i = 2, n = lNodes.length; i < n; i++) + DOM.setSelectedFile( lNodes[i] ); + + DOM.preventDefault(pEvent); + } + break; + + /* + * обновляем страницу, + * загружаем содержимое каталога + * при этом данные берём всегда с + * сервера, а не из кэша + * (обновляем кэш) + */ + case Key.R: + if (lCtrl) { + Util.log('+r pressed\n' + + 'reloading page...\n' + + 'press +q to remove all key-handlers'); + + CloudCmd.refresh(); + DOM.preventDefault(pEvent); + } + break; + + /* чистим кэш */ + case Key.D: + if (lCtrl) { + Util.log('+d pressed\n' + + 'clearing cache...\n' + + 'press +q to remove all key-handlers'); + + DOM.Cache.clear(); + DOM.preventDefault(); + } + break; + + /* убираем все обработчики нажатий клавиш */ + case Key.Q: + if (lAlt) { + Util.log('+q pressed\n' + + '+r reload key-handerl - removed' + + '+s clear cache key-handler - removed'+ + 'press +s to to set them'); + + Binded = false; + DOM.preventDefault(pEvent); + } break; } } @@ -335,10 +334,11 @@ var CloudCmd, Util, DOM; else if(lKeyCode === Key.S && lAlt){ /* обрабатываем нажатия на клавиши*/ Binded = true; - Util.log('+s pressed\n' + - '+r reload key-handerl - set\n' + - '+s clear cache key-handler - set\n' + + Util.log('+s pressed \n' + + '+r reload key-handerl - set \n' + + '+s clear cache key-handler - set \n' + 'press +q to remove them'); + DOM.preventDefault(pEvent); } }