mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-07-19 09:24:51 +00:00
feature(listeners) add ability to select files with shift+click
This commit is contained in:
parent
5547094315
commit
46cc5c2326
1 changed files with 63 additions and 11 deletions
|
|
@ -145,23 +145,27 @@ var Util, DOM, CloudFunc, CloudCmd;
|
|||
}
|
||||
|
||||
function onClick(event) {
|
||||
var ctrl = event.ctrlKey,
|
||||
meta = event.metaKey;
|
||||
var ctrl = event.ctrlKey;
|
||||
|
||||
if (!ctrl && !meta)
|
||||
if (!ctrl)
|
||||
event.preventDefault();
|
||||
else
|
||||
toggleSelect(ctrl, meta);
|
||||
|
||||
changePanel(event.target);
|
||||
}
|
||||
|
||||
function toggleSelect(ctrl, meta) {
|
||||
var Info = DOM.CurrentInfo,
|
||||
isMac = /Mac/.test(window.navigator.platform);
|
||||
function toggleSelect(key, files) {
|
||||
var isMac = /Mac/.test(window.navigator.platform);
|
||||
|
||||
if (isMac && meta || ctrl)
|
||||
DOM.toggleSelectedFile(Info.element);
|
||||
if (!key)
|
||||
throw Error('key should not be undefined!');
|
||||
|
||||
if (isMac && key.meta || key.ctrl)
|
||||
DOM.toggleSelectedFile(files[0]);
|
||||
else if (key.shift)
|
||||
files.forEach(function(current) {
|
||||
if (!DOM.isSelected(current))
|
||||
DOM.toggleSelectedFile(current);
|
||||
});
|
||||
}
|
||||
|
||||
function changePanel(element) {
|
||||
|
|
@ -247,8 +251,56 @@ var Util, DOM, CloudFunc, CloudCmd;
|
|||
}
|
||||
|
||||
function setCurrentFileByEvent(event) {
|
||||
var element = getLIElement(event.target);
|
||||
var fromName,
|
||||
toName,
|
||||
files = [],
|
||||
key = {
|
||||
ctrl: event.ctrlKey,
|
||||
meta: event.metaKey,
|
||||
shift: event.shiftKey
|
||||
},
|
||||
|
||||
element = getLIElement(event.target);
|
||||
|
||||
fromName = Info.name;
|
||||
DOM.setCurrentFile(element);
|
||||
toName = Info.name;
|
||||
|
||||
if (key.shift)
|
||||
files = getFilesRange(fromName, toName);
|
||||
else
|
||||
files.push(Info.element);
|
||||
|
||||
toggleSelect(key, files);
|
||||
}
|
||||
|
||||
function getFilesRange(from, to) {
|
||||
var i = 0,
|
||||
delta = 0,
|
||||
result = [],
|
||||
files = [].slice.call(DOM.getFiles()),
|
||||
names = DOM.getSelectedNames(files),
|
||||
indexFrom,
|
||||
indexTo;
|
||||
|
||||
if (names[0] === '..') {
|
||||
names.shift();
|
||||
delta = 1;
|
||||
}
|
||||
|
||||
indexFrom = names.indexOf(from);
|
||||
indexTo = names.indexOf(to);
|
||||
|
||||
if (indexFrom < indexTo)
|
||||
for (i = indexFrom; i <= indexTo; i++)
|
||||
result.push(files[i + delta]);
|
||||
else if (indexFrom > indexTo)
|
||||
for (i = indexFrom; i >= indexTo; i--)
|
||||
result.push(files[i + delta]);
|
||||
else
|
||||
result.push(to);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function contextMenu() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue