mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 10:45:47 +00:00
refactored
This commit is contained in:
parent
05ede444e3
commit
dbd26c0b0c
2 changed files with 241 additions and 261 deletions
|
|
@ -59,7 +59,6 @@ There is a short list:
|
|||
- **Insert** - select current file
|
||||
- **F2** - rename current file
|
||||
- **Shift + F10** - show context menu
|
||||
- **Alt + g** - authorization in GitHub
|
||||
|
||||
Viewer's hot keys
|
||||
---------------
|
||||
|
|
|
|||
|
|
@ -69,297 +69,278 @@ var CloudCommander, Util, DOM;
|
|||
|
||||
var key_event = function(pEvent){
|
||||
/* получаем выдленный файл*/
|
||||
var i, n, lCurrent = DOM.getCurrentFile();
|
||||
var i, n, lCurrent = DOM.getCurrentFile(),
|
||||
lKeyCode = pEvent.keyCode,
|
||||
lShift = pEvent.shiftKey,
|
||||
lAlt = pEvent.altKey,
|
||||
lCtrl = pEvent.ctrlKey;
|
||||
/* если клавиши можно обрабатывать*/
|
||||
if(keyBinded && pEvent){
|
||||
var lKeyCode = pEvent.keyCode,
|
||||
lShift = pEvent.shiftKey;
|
||||
|
||||
/* open configuration window */
|
||||
if(lKeyCode === KEY.O && pEvent.altKey){
|
||||
Util.log('openning config window...');
|
||||
|
||||
DOM.Images.showLoad({top: true});
|
||||
|
||||
Util.exec(CloudCmd.Config);
|
||||
}
|
||||
|
||||
else if(lKeyCode === KEY.G && pEvent.altKey)
|
||||
Util.exec(CloudCmd.GitHub);
|
||||
|
||||
else if(lKeyCode === KEY.D && pEvent.altKey){
|
||||
Util.exec(CloudCmd.DropBox);
|
||||
DOM.preventDefault(pEvent);
|
||||
}
|
||||
|
||||
else if(lKeyCode >= KEY.F1 && lKeyCode <= KEY.TRA ||
|
||||
lKeyCode >= KEY.TAB && lKeyCode <= KEY.A)
|
||||
|
||||
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});
|
||||
if(keyBinded){
|
||||
switch(lKeyCode){
|
||||
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.promptDeleteCurrent(lCurrent);
|
||||
break;
|
||||
DOM.setCurrentFile(lFirstFileOnList);
|
||||
}
|
||||
|
||||
case KEY.F1:
|
||||
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:
|
||||
var lEditor = CloudCmd[lShift ? 'Viewer' : 'Editor'];
|
||||
if( DOM.isCurrentIsDir(lCurrent) )
|
||||
lUrl += '?dir';
|
||||
|
||||
Util.exec(lEditor, true);
|
||||
DOM.preventDefault(pEvent);
|
||||
break;
|
||||
|
||||
case KEY.F4:
|
||||
DOM.Images.showLoad();
|
||||
Util.exec(CloudCmd.Editor);
|
||||
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.promptDeleteCurrent(lCurrent);
|
||||
break;
|
||||
|
||||
case KEY.F:
|
||||
DOM.promptDeleteCurrent(lCurrent);
|
||||
break;
|
||||
|
||||
case KEY.F10:
|
||||
if(lShift){
|
||||
Util.exec(CloudCmd.Menu);
|
||||
DOM.preventDefault(pEvent);
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY.TRA:
|
||||
DOM.Images.showLoad({top: true});
|
||||
Util.exec(CloudCmd.Terminal);
|
||||
break;
|
||||
|
||||
case KEY.SPACE:
|
||||
var lSelected = DOM.isSelected(lCurrent),
|
||||
lDir = DOM.isCurrentIsDir(lCurrent);
|
||||
|
||||
if(!lDir)
|
||||
lSelected = true;
|
||||
|
||||
Util.ifExec(lSelected, function(){
|
||||
DOM.setSelectedFile(lCurrent);
|
||||
}, function(pCallBack){
|
||||
DOM.loadCurrentSize(pCallBack, lCurrent);
|
||||
DOM.RESTfull.delete(lUrl, function(){
|
||||
DOM.deleteCurrent(lCurrent);
|
||||
});
|
||||
}
|
||||
else
|
||||
DOM.promptDeleteCurrent(lCurrent);
|
||||
break;
|
||||
|
||||
case KEY.F1:
|
||||
DOM.preventDefault(pEvent);
|
||||
break;
|
||||
|
||||
case KEY.F2:
|
||||
DOM.renameCurrent(lCurrent);
|
||||
break;
|
||||
|
||||
case KEY.F3:
|
||||
var lEditor = CloudCmd[lShift ? 'Viewer' : 'Editor'];
|
||||
|
||||
Util.exec(lEditor, true);
|
||||
DOM.preventDefault(pEvent);
|
||||
break;
|
||||
|
||||
case KEY.F4:
|
||||
DOM.Images.showLoad();
|
||||
Util.exec(CloudCmd.Editor);
|
||||
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.promptDeleteCurrent(lCurrent);
|
||||
break;
|
||||
|
||||
case KEY.F:
|
||||
DOM.promptDeleteCurrent(lCurrent);
|
||||
break;
|
||||
|
||||
case KEY.F10:
|
||||
if(lShift){
|
||||
Util.exec(CloudCmd.Menu);
|
||||
DOM.preventDefault(pEvent);
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY.TRA:
|
||||
DOM.Images.showLoad({top: true});
|
||||
Util.exec(CloudCmd.Terminal);
|
||||
break;
|
||||
|
||||
case KEY.SPACE:
|
||||
var lSelected = DOM.isSelected(lCurrent),
|
||||
lDir = DOM.isCurrentIsDir(lCurrent);
|
||||
|
||||
if(!lDir)
|
||||
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;
|
||||
|
||||
DOM.preventDefault(pEvent);
|
||||
break;
|
||||
lCurrent = lCurrent.nextSibling;
|
||||
}
|
||||
DOM.setCurrentFile(lCurrent);
|
||||
DOM.preventDefault(pEvent);
|
||||
break;
|
||||
|
||||
/* если нажали клавишу page up проматываем экран */
|
||||
case KEY.PAGE_UP:
|
||||
DOM.scrollByPages( DOM.getPanel(), -1 );
|
||||
|
||||
/* навигация по таблице файлов *
|
||||
* если нажали клавишу вверх *
|
||||
* выделяем предыдущую строку */
|
||||
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
|
||||
var lC = lCurrent,
|
||||
tryCatch = function(pCurrentFile){
|
||||
Util.tryCatch(function(){
|
||||
return pCurrentFile
|
||||
.previousSibling
|
||||
.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;
|
||||
/* если нажали Enter - открываем папку*/
|
||||
case KEY.ENTER:
|
||||
if( DOM.isCurrentIsDir() )
|
||||
Util.exec( CloudCmd.loadDir() );
|
||||
break;
|
||||
.previousSibling;
|
||||
});
|
||||
};
|
||||
|
||||
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);
|
||||
}
|
||||
for(i = 0; i < 30; i++){
|
||||
if(!lC.previousSibling || tryCatch(lC) ) break;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
/* если нажали <ctr>+r
|
||||
* обновляем страницу,
|
||||
* загружаем содержимое каталога
|
||||
* при этом данные берём всегда с
|
||||
* сервера, а не из кэша
|
||||
* (обновляем кэш)
|
||||
*/
|
||||
else if(lKeyCode === KEY.R && pEvent.ctrlKey){
|
||||
Util.log('<ctrl>+r pressed\n' +
|
||||
'reloading page...\n' +
|
||||
'press <alt>+q to remove all key-handlers');
|
||||
|
||||
CloudCmd.refresh();
|
||||
lC = lC.previousSibling;
|
||||
}
|
||||
DOM.setCurrentFile(lC);
|
||||
DOM.preventDefault(pEvent);
|
||||
}
|
||||
break;
|
||||
/* если нажали Enter - открываем папку*/
|
||||
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;
|
||||
/* если нажали <ctr>+r
|
||||
* обновляем страницу,
|
||||
* загружаем содержимое каталога
|
||||
* при этом данные берём всегда с
|
||||
* сервера, а не из кэша
|
||||
* (обновляем кэш)
|
||||
*/
|
||||
case KEY.R:
|
||||
if(lCtrl){
|
||||
Util.log('<ctrl>+r pressed\n' +
|
||||
'reloading page...\n' +
|
||||
'press <alt>+q to remove all key-handlers');
|
||||
|
||||
CloudCmd.refresh();
|
||||
DOM.preventDefault(pEvent);
|
||||
}
|
||||
break;
|
||||
|
||||
/* если нажали <ctrl>+d чистим кэш */
|
||||
case KEY.D:
|
||||
if(lCtrl){
|
||||
Util.log('<ctrl>+d pressed\n' +
|
||||
'clearing cache...\n' +
|
||||
'press <alt>+q to remove all key-handlers');
|
||||
|
||||
DOM.Cache.clear();
|
||||
DOM.preventDefault();
|
||||
}
|
||||
break;
|
||||
|
||||
/* если нажали <ctrl>+d чистим кэш */
|
||||
else if(lKeyCode === KEY.D && pEvent.ctrlKey){
|
||||
Util.log('<ctrl>+d pressed\n' +
|
||||
'clearing cache...\n' +
|
||||
'press <alt>+q to remove all key-handlers');
|
||||
|
||||
DOM.Cache.clear();
|
||||
DOM.preventDefault();
|
||||
/* если нажали <alt>+q
|
||||
* убираем все обработчики
|
||||
* нажатий клавиш */
|
||||
case KEY.Q:
|
||||
if(lAlt){
|
||||
Util.log('<alt>+q pressed\n' +
|
||||
'<ctrl>+r reload key-handerl - removed' +
|
||||
'<ctrl>+s clear cache key-handler - removed'+
|
||||
'press <alt>+s to to set them');
|
||||
|
||||
/* обработчик нажатий клавиш снят*/
|
||||
keyBinded = false;
|
||||
DOM.preventDefault(pEvent);
|
||||
}
|
||||
}
|
||||
|
||||
/* если нажали <alt>+q
|
||||
* убираем все обработчики
|
||||
* нажатий клавиш
|
||||
*/
|
||||
else if(lKeyCode === KEY.Q && pEvent.altKey){
|
||||
Util.log('<alt>+q pressed\n' +
|
||||
'<ctrl>+r reload key-handerl - removed' +
|
||||
'<ctrl>+s clear cache key-handler - removed'+
|
||||
'press <alt>+s to to set them');
|
||||
|
||||
/* обработчик нажатий клавиш снят*/
|
||||
keyBinded = false;
|
||||
|
||||
pEvent.preventDefault();//запрет на дальнейшее действие
|
||||
}
|
||||
}
|
||||
|
||||
/* если нажали <alt>+s
|
||||
* устанавливаем все обработчики
|
||||
* нажатий клавиш
|
||||
*/
|
||||
else if(pEvent.keyCode === KEY.S && pEvent.altKey){
|
||||
else if(lKeyCode === KEY.S && lAlt){
|
||||
/* обрабатываем нажатия на клавиши*/
|
||||
keyBinded = true;
|
||||
|
||||
Util.log('<alt>+s pressed\n' +
|
||||
'<ctrl>+r reload key-handerl - set\n' +
|
||||
'<ctrl>+s clear cache key-handler - set\n' +
|
||||
'press <alt>+q to remove them');
|
||||
|
||||
pEvent.preventDefault();//запрет на дальнейшее действие
|
||||
DOM.preventDefault(pEvent);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue