summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamien Churchill <damoxc@gmail.com>2010-07-01 13:45:22 +0100
committerDamien Churchill <damoxc@gmail.com>2010-07-01 13:45:22 +0100
commit80297b8e459644fb152f7a80207c4ab5bda7c3a6 (patch)
tree5760f1d4273a2505eb50af90b97e3fbfd6c6758d
parent9173a9cfddcf3b8a67f45234cfef0ce2796abb82 (diff)
downloaddeluge-80297b8e459644fb152f7a80207c4ab5bda7c3a6.tar.gz
deluge-80297b8e459644fb152f7a80207c4ab5bda7c3a6.tar.bz2
deluge-80297b8e459644fb152f7a80207c4ab5bda7c3a6.zip
allow for shift selecting in tree grids
-rw-r--r--deluge/ui/web/js/ext-extensions/tree/MultiSelectionModelFix.js63
1 files changed, 63 insertions, 0 deletions
diff --git a/deluge/ui/web/js/ext-extensions/tree/MultiSelectionModelFix.js b/deluge/ui/web/js/ext-extensions/tree/MultiSelectionModelFix.js
new file mode 100644
index 000000000..866e6865e
--- /dev/null
+++ b/deluge/ui/web/js/ext-extensions/tree/MultiSelectionModelFix.js
@@ -0,0 +1,63 @@
+/*!
+ * Ext.ux.tree.MultiSelectionModelFix.js
+ *
+ * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, write to:
+ * The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ *
+ * In addition, as a special exception, the copyright holders give
+ * permission to link the code of portions of this program with the OpenSSL
+ * library.
+ * You must obey the GNU General Public License in all respects for all of
+ * the code used other than OpenSSL. If you modify file(s) with this
+ * exception, you may extend this exception to your version of the file(s),
+ * but you are not obligated to do so. If you do not wish to do so, delete
+ * this exception statement from your version. If you delete this exception
+ * statement from all source files in the program, then also delete it here.
+ */
+
+/**
+ * This enhances the MSM to allow for shift selecting in tree grids etc.
+ * @author Damien Churchill <damoxc@gmail.com>
+ */
+Ext.override(Ext.tree.MultiSelectionModel, {
+
+ onNodeClick: function (node, e) {
+ if (e.ctrlKey && this.isSelected(node)) {
+ this.unselect(node);
+ } else if (e.shiftKey && !this.isSelected(node)) {
+ var parentNode = node.parentNode;
+ // We can only shift select files in the same node
+ if (this.lastSelNode.parentNode.id != parentNode.id) return;
+
+ // Get the node indexes
+ var ni = parentNode.indexOf(node),
+ li = parentNode.indexOf(this.lastSelNode);
+
+ // Select all the nodes
+ parentNode.eachChild(function(n) {
+ var i = parentNode.indexOf(n);
+ if (li < i && i <= ni) {
+ this.select(n, e, true);
+ }
+ }, this);
+ } else {
+ this.select(node, e, e.ctrlKey);
+ }
+ }
+
+})