mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 18:55:26 +00:00
refactor(key) add switchKey
This commit is contained in:
parent
a898f53e52
commit
738e433124
1 changed files with 261 additions and 252 deletions
|
|
@ -77,259 +77,12 @@ var CloudCmd, Util, DOM;
|
|||
lCtrl = pEvent.ctrlKey;
|
||||
/* если клавиши можно обрабатывать*/
|
||||
if (Binded) {
|
||||
switch (lKeyCode) {
|
||||
case Key.TAB:
|
||||
/* changing parent panel of curent-file */
|
||||
var lFirstFileOnList,
|
||||
lPanel = DOM.getPanel(),
|
||||
lId = lPanel.id;
|
||||
|
||||
lTabPanel[lId] = lCurrent;
|
||||
|
||||
lPanel = DOM.getPanel({active:false});
|
||||
lId = lPanel.id;
|
||||
|
||||
lCurrent = lTabPanel[lId];
|
||||
if (lCurrent && lCurrent.parentElement)
|
||||
DOM.setCurrentFile(lCurrent);
|
||||
else {
|
||||
lFirstFileOnList = DOM.getByTag('li', lPanel)[2];
|
||||
|
||||
DOM.setCurrentFile(lFirstFileOnList);
|
||||
}
|
||||
|
||||
DOM.preventDefault(pEvent);//запрет на дальнейшее действие
|
||||
break;
|
||||
switchKey(pEvent);
|
||||
|
||||
case Key.INSERT:
|
||||
DOM .toggleSelectedFile(lCurrent)
|
||||
.setCurrentFile(lCurrent.nextSibling);
|
||||
break;
|
||||
|
||||
case Key.DELETE:
|
||||
if (lShift) {
|
||||
var lUrl = DOM.getCurrentPath(lCurrent);
|
||||
|
||||
if ( DOM.isCurrentIsDir(lCurrent) )
|
||||
lUrl += '?dir';
|
||||
|
||||
DOM.RESTful.delete(lUrl, function() {
|
||||
DOM.deleteCurrent(lCurrent);
|
||||
});
|
||||
}
|
||||
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.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.F9:
|
||||
Util.exec(CloudCmd.Menu);
|
||||
DOM.preventDefault(pEvent);
|
||||
|
||||
break;
|
||||
|
||||
case Key.F10:
|
||||
Util.exec(CloudCmd.Config);
|
||||
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.toggleSelectedFile(lCurrent);
|
||||
}, function(pCallBack) {
|
||||
DOM.loadCurrentSize(pCallBack, lCurrent);
|
||||
});
|
||||
|
||||
|
||||
DOM.preventDefault(pEvent);
|
||||
break;
|
||||
|
||||
/* навигация по таблице файлов *
|
||||
* если нажали клавишу вверх *
|
||||
* выделяем предыдущую строку */
|
||||
case Key.UP:
|
||||
if (lShift)
|
||||
DOM.toggleSelectedFile(lCurrent);
|
||||
|
||||
DOM.setCurrentFile( lCurrent.previousSibling );
|
||||
DOM.preventDefault( pEvent );
|
||||
break;
|
||||
|
||||
/* если нажали клавишу в низ - выделяем следующую строку */
|
||||
case Key.DOWN:
|
||||
if (lShift)
|
||||
DOM.toggleSelectedFile(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) {
|
||||
DOM .toggleAllSelectedFiles(lCurrent)
|
||||
.preventDefault(pEvent);
|
||||
}
|
||||
break;
|
||||
|
||||
/*
|
||||
* обновляем страницу,
|
||||
* загружаем содержимое каталога
|
||||
* при этом данные берём всегда с
|
||||
* сервера, а не из кэша
|
||||
* (обновляем кэш)
|
||||
*/
|
||||
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;
|
||||
|
||||
/* чистим кэш */
|
||||
case Key.D:
|
||||
if (lCtrl) {
|
||||
Util.log('<ctrl>+d pressed\n' +
|
||||
'clearing Storage...\n' +
|
||||
'press <alt>+q to remove all key-handlers');
|
||||
|
||||
DOM.Storage.clear();
|
||||
DOM.preventDefault();
|
||||
}
|
||||
break;
|
||||
|
||||
/* убираем все обработчики нажатий клавиш */
|
||||
case Key.Q:
|
||||
if (lAlt) {
|
||||
Util.log('<alt>+q pressed\n' +
|
||||
'<ctrl>+r reload key-handerl - removed' +
|
||||
'<ctrl>+s clear Storage key-handler - removed'+
|
||||
'press <alt>+s to to set them');
|
||||
|
||||
Binded = false;
|
||||
DOM.preventDefault(pEvent);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* устанавливаем все обработчики
|
||||
* нажатий клавиш
|
||||
*/
|
||||
else if (lKeyCode === Key.S && lAlt) {
|
||||
/* устанавливаем все обработчики
|
||||
* нажатий клавиш
|
||||
*/
|
||||
} else if (lKeyCode === Key.S && lAlt) {
|
||||
/* обрабатываем нажатия на клавиши*/
|
||||
Binded = true;
|
||||
Util.log('<alt>+s pressed \n' +
|
||||
|
|
@ -340,6 +93,262 @@ var CloudCmd, Util, DOM;
|
|||
DOM.preventDefault(pEvent);
|
||||
}
|
||||
}
|
||||
|
||||
function switchKey(pEvent) {
|
||||
var i, n, lCurrent = DOM.getCurrentFile(),
|
||||
lKeyCode = pEvent.keyCode,
|
||||
lShift = pEvent.shiftKey,
|
||||
lAlt = pEvent.altKey,
|
||||
lCtrl = pEvent.ctrlKey;
|
||||
|
||||
switch (lKeyCode) {
|
||||
case Key.TAB:
|
||||
/* changing parent panel of curent-file */
|
||||
var lFirstFileOnList,
|
||||
lPanel = DOM.getPanel(),
|
||||
lId = lPanel.id;
|
||||
|
||||
lTabPanel[lId] = lCurrent;
|
||||
|
||||
lPanel = DOM.getPanel({active:false});
|
||||
lId = lPanel.id;
|
||||
|
||||
lCurrent = lTabPanel[lId];
|
||||
if (lCurrent && lCurrent.parentElement)
|
||||
DOM.setCurrentFile(lCurrent);
|
||||
else {
|
||||
lFirstFileOnList = DOM.getByTag('li', lPanel)[2];
|
||||
|
||||
DOM.setCurrentFile(lFirstFileOnList);
|
||||
}
|
||||
|
||||
DOM.preventDefault(pEvent);//запрет на дальнейшее действие
|
||||
break;
|
||||
|
||||
case Key.INSERT:
|
||||
DOM .toggleSelectedFile(lCurrent)
|
||||
.setCurrentFile(lCurrent.nextSibling);
|
||||
break;
|
||||
|
||||
case Key.DELETE:
|
||||
if (lShift) {
|
||||
var lUrl = DOM.getCurrentPath(lCurrent);
|
||||
|
||||
if ( DOM.isCurrentIsDir(lCurrent) )
|
||||
lUrl += '?dir';
|
||||
|
||||
DOM.RESTful.delete(lUrl, function() {
|
||||
DOM.deleteCurrent(lCurrent);
|
||||
});
|
||||
}
|
||||
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.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.F9:
|
||||
Util.exec(CloudCmd.Menu);
|
||||
DOM.preventDefault(pEvent);
|
||||
|
||||
break;
|
||||
|
||||
case Key.F10:
|
||||
Util.exec(CloudCmd.Config);
|
||||
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.toggleSelectedFile(lCurrent);
|
||||
}, function(pCallBack) {
|
||||
DOM.loadCurrentSize(pCallBack, lCurrent);
|
||||
});
|
||||
|
||||
|
||||
DOM.preventDefault(pEvent);
|
||||
break;
|
||||
|
||||
/* навигация по таблице файлов *
|
||||
* если нажали клавишу вверх *
|
||||
* выделяем предыдущую строку */
|
||||
case Key.UP:
|
||||
if (lShift)
|
||||
DOM.toggleSelectedFile(lCurrent);
|
||||
|
||||
DOM.setCurrentFile( lCurrent.previousSibling );
|
||||
DOM.preventDefault( pEvent );
|
||||
break;
|
||||
|
||||
/* если нажали клавишу в низ - выделяем следующую строку */
|
||||
case Key.DOWN:
|
||||
if (lShift)
|
||||
DOM.toggleSelectedFile(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) {
|
||||
DOM .toggleAllSelectedFiles(lCurrent)
|
||||
.preventDefault(pEvent);
|
||||
}
|
||||
break;
|
||||
|
||||
/*
|
||||
* обновляем страницу,
|
||||
* загружаем содержимое каталога
|
||||
* при этом данные берём всегда с
|
||||
* сервера, а не из кэша
|
||||
* (обновляем кэш)
|
||||
*/
|
||||
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;
|
||||
|
||||
/* чистим кэш */
|
||||
case Key.D:
|
||||
if (lCtrl) {
|
||||
Util.log('<ctrl>+d pressed\n' +
|
||||
'clearing Storage...\n' +
|
||||
'press <alt>+q to remove all key-handlers');
|
||||
|
||||
DOM.Storage.clear();
|
||||
DOM.preventDefault();
|
||||
}
|
||||
break;
|
||||
|
||||
/* убираем все обработчики нажатий клавиш */
|
||||
case Key.Q:
|
||||
if (lAlt) {
|
||||
Util.log('<alt>+q pressed\n' +
|
||||
'<ctrl>+r reload key-handerl - removed' +
|
||||
'<ctrl>+s clear Storage key-handler - removed'+
|
||||
'press <alt>+s to to set them');
|
||||
|
||||
Binded = false;
|
||||
DOM.preventDefault(pEvent);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
})(CloudCmd, Util, DOM);
|
||||
Loading…
Add table
Add a link
Reference in a new issue