From 795d4c7768a4aaa55843957b1c00b2b4e17827b4 Mon Sep 17 00:00:00 2001 From: coderaiser Date: Wed, 29 May 2013 07:48:02 -0400 Subject: [PATCH] refactored --- css/reset.css | 3 - html/index.html | 3 +- json/config.json | 2 +- lib/client.js | 2 +- lib/client/keyBinding.js | 556 +++++++++++++++++++-------------------- 5 files changed, 278 insertions(+), 288 deletions(-) diff --git a/css/reset.css b/css/reset.css index 17497957..dbf21d3d 100644 --- a/css/reset.css +++ b/css/reset.css @@ -8,8 +8,6 @@ */ html{ - font-family: sans-serif; - font-size: 100%; color: #222; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; @@ -22,7 +20,6 @@ body { margin: 0; font-size: 1em; line-height: 1.4; } * Also: hot pink! (or customize the background color to match your design) */ /* -::-moz-selection { background: #fe57a1; color: #fff; text-shadow: none; } ::selection { background: #fe57a1; color: #fff; text-shadow: none; } */ ::-moz-selection{ text-shadow: none; opacity: 0;} diff --git a/html/index.html b/html/index.html index b8da6c04..bd0cfbac 100644 --- a/html/index.html +++ b/html/index.html @@ -28,9 +28,8 @@ diff --git a/json/config.json b/json/config.json index ddc547fd..ca98c321 100644 --- a/json/config.json +++ b/json/config.json @@ -3,7 +3,7 @@ "appcache" : false, "minification" : { "js" : false, - "css" : true, + "css" : false, "html" : true, "img" : true }, diff --git a/lib/client.js b/lib/client.js index 56f49cea..89f08fc7 100644 --- a/lib/client.js +++ b/lib/client.js @@ -2,7 +2,7 @@ * @CloudFunc - обьект содержащий общий функционал * клиентский и серверный */ -var Util, DOM, CloudFunc, $, KeyBinding, CloudCmd; +var Util, DOM, CloudFunc, KeyBinding, CloudCmd; (function(Util, DOM){ 'use strict'; diff --git a/lib/client/keyBinding.js b/lib/client/keyBinding.js index eab0ccd5..3b441de6 100644 --- a/lib/client/keyBinding.js +++ b/lib/client/keyBinding.js @@ -2,10 +2,6 @@ var CloudCmd, Util, DOM; (function(CloudCmd, Util, DOM){ 'use strict'; - /* private property set or set key binding */ - var Binded; - - /* Key constants*/ CloudCmd.KEY = { TAB : 9, ENTER : 13, @@ -47,308 +43,306 @@ var CloudCmd, Util, DOM; TRA : 192 /* Typewritten Reverse Apostrophe (`) */ }; - var KEY = CloudCmd.KEY; + CloudCmd.KeyBinding = new KeyBindingProto(); - CloudCmd.KeyBinding = {}; - - var KeyBinding = CloudCmd.KeyBinding; - - KeyBinding.get = function(){return Binded;}; - - KeyBinding.set = function(){Binded = true;}; - - KeyBinding.unSet = function(){Binded = false;}; - - KeyBinding.init = function(){ - /* saving state of tabs varibles */ - var lTabPanel = { - left : 0, - right : 0 + function KeyBindingProto(){ + var Binded, + KEY = CloudCmd.KEY, + lTabPanel = { + left : 0, + right : 0 + + }; + + this.get = function(){return Binded;}; + + this.set = function(){Binded = true;}; + + this.unSet = function(){Binded = false;}; + + this.init = function(){ + DOM.Events.addKey(listener); + /* клавиши назначены*/ + Binded = true; }; - var key_event = function(pEvent){ - /* получаем выдленный файл*/ - var i, n, lCurrent = DOM.getCurrentFile(), - lKeyCode = pEvent.keyCode, - lShift = pEvent.shiftKey, - lAlt = pEvent.altKey, - lCtrl = pEvent.ctrlKey; - /* если клавиши можно обрабатывать*/ - 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}); + function listener(pEvent){ + /* получаем выдленный файл*/ + var i, n, lCurrent = DOM.getCurrentFile(), + lKeyCode = pEvent.keyCode, + lShift = pEvent.shiftKey, + lAlt = pEvent.altKey, + lCtrl = pEvent.ctrlKey; + /* если клавиши можно обрабатывать*/ + if(Binded){ + 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.promptDeleteSelected(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.promptDeleteSelected(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), - 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); }); + } + else + DOM.promptDeleteSelected(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.promptDeleteSelected(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), + 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; - 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; - - /* открываем папку*/ - 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; - - /* обновляем страницу, - * загружаем содержимое каталога - * при этом данные берём всегда с - * сервера, а не из кэша - * (обновляем кэш)*/ - 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); - } + lC = lC.previousSibling; + } + DOM.setCurrentFile(lC); + 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.ENTER: + if( DOM.isCurrentIsDir() ) + Util.exec( CloudCmd.loadDir() ); + 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.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; - } - } - /* устанавливаем все обработчики - * нажатий клавиш - */ - 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' + - 'press +q to remove them'); - DOM.preventDefault(pEvent); + /* убираем все обработчики + * нажатий клавиш */ + 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; } + } + + /* устанавливаем все обработчики + * нажатий клавиш + */ + 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' + + 'press +q to remove them'); + DOM.preventDefault(pEvent); + } }; - - /* добавляем обработчик клавишь */ - DOM.Events.addKey(key_event); - - /* клавиши назначены*/ - Binded = true; - }; + } })(CloudCmd, Util, DOM); \ No newline at end of file