|
From: <tob...@us...> - 2014-02-26 20:35:18
|
Revision: 7892
http://sourceforge.net/p/bigdata/code/7892
Author: tobycraig
Date: 2014-02-26 20:35:12 +0000 (Wed, 26 Feb 2014)
Log Message:
-----------
Added keyboard shortcuts to switch between tabs.
Modified Paths:
--------------
branches/RDR/bigdata-war/src/html/new.html
branches/RDR/bigdata-war/src/html/workbench.js
Added Paths:
-----------
branches/RDR/bigdata-war/src/html/jquery.hotkeys.js
Added: branches/RDR/bigdata-war/src/html/jquery.hotkeys.js
===================================================================
--- branches/RDR/bigdata-war/src/html/jquery.hotkeys.js (rev 0)
+++ branches/RDR/bigdata-war/src/html/jquery.hotkeys.js 2014-02-26 20:35:12 UTC (rev 7892)
@@ -0,0 +1,110 @@
+/*
+ * jQuery Hotkeys Plugin
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * Based upon the plugin by Tzury Bar Yochay:
+ * http://github.com/tzuryby/hotkeys
+ *
+ * Original idea by:
+ * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
+*/
+
+/*
+ * One small change is: now keys are passed by object { keys: '...' }
+ * Might be useful, when you want to pass some other data to your handler
+ */
+
+(function(jQuery){
+
+ jQuery.hotkeys = {
+ version: "0.8",
+
+ specialKeys: {
+ 8: "backspace", 9: "tab", 10: "return", 13: "return", 16: "shift", 17: "ctrl", 18: "alt", 19: "pause",
+ 20: "capslock", 27: "esc", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home",
+ 37: "left", 38: "up", 39: "right", 40: "down", 45: "insert", 46: "del",
+ 96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7",
+ 104: "8", 105: "9", 106: "*", 107: "+", 109: "-", 110: ".", 111 : "/",
+ 112: "f1", 113: "f2", 114: "f3", 115: "f4", 116: "f5", 117: "f6", 118: "f7", 119: "f8",
+ 120: "f9", 121: "f10", 122: "f11", 123: "f12", 144: "numlock", 145: "scroll", 186: ";", 191: "/",
+ 220: "\\", 222: "'", 224: "meta"
+ },
+
+ shiftNums: {
+ "`": "~", "1": "!", "2": "@", "3": "#", "4": "$", "5": "%", "6": "^", "7": "&",
+ "8": "*", "9": "(", "0": ")", "-": "_", "=": "+", ";": ": ", "'": "\"", ",": "<",
+ ".": ">", "/": "?", "\\": "|"
+ }
+ };
+
+ function keyHandler( handleObj ) {
+ if ( typeof handleObj.data === "string" ) {
+ handleObj.data = { keys: handleObj.data };
+ }
+
+ // Only care when a possible input has been specified
+ if ( !handleObj.data || !handleObj.data.keys || typeof handleObj.data.keys !== "string" ) {
+ return;
+ }
+
+ var origHandler = handleObj.handler,
+ keys = handleObj.data.keys.toLowerCase().split(" "),
+ textAcceptingInputTypes = ["text", "password", "number", "email", "url", "range", "date", "month", "week", "time", "datetime", "datetime-local", "search", "color", "tel"];
+
+ handleObj.handler = function( event ) {
+ // Don't fire in text-accepting inputs that we didn't directly bind to
+ if ( this !== event.target && (/textarea|select/i.test( event.target.nodeName ) ||
+ jQuery.inArray(event.target.type, textAcceptingInputTypes) > -1 ) ) {
+ return;
+ }
+
+ var special = jQuery.hotkeys.specialKeys[ event.keyCode ],
+ character = String.fromCharCode( event.which ).toLowerCase(),
+ modif = "", possible = {};
+
+ // check combinations (alt|ctrl|shift+anything)
+ if ( event.altKey && special !== "alt" ) {
+ modif += "alt+";
+ }
+
+ if ( event.ctrlKey && special !== "ctrl" ) {
+ modif += "ctrl+";
+ }
+
+ // TODO: Need to make sure this works consistently across platforms
+ if ( event.metaKey && !event.ctrlKey && special !== "meta" ) {
+ modif += "meta+";
+ }
+
+ if ( event.shiftKey && special !== "shift" ) {
+ modif += "shift+";
+ }
+
+ if ( special ) {
+ possible[ modif + special ] = true;
+ }
+
+ if ( character ) {
+ possible[ modif + character ] = true;
+ possible[ modif + jQuery.hotkeys.shiftNums[ character ] ] = true;
+
+ // "$" can be triggered as "Shift+4" or "Shift+$" or just "$"
+ if ( modif === "shift+" ) {
+ possible[ jQuery.hotkeys.shiftNums[ character ] ] = true;
+ }
+ }
+
+ for ( var i = 0, l = keys.length; i < l; i++ ) {
+ if ( possible[ keys[i] ] ) {
+ return origHandler.apply( this, arguments );
+ }
+ }
+ };
+ }
+
+ jQuery.each([ "keydown", "keyup", "keypress" ], function() {
+ jQuery.event.special[ this ] = { add: keyHandler };
+ });
+
+})( this.jQuery );
Modified: branches/RDR/bigdata-war/src/html/new.html
===================================================================
--- branches/RDR/bigdata-war/src/html/new.html 2014-02-26 19:59:50 UTC (rev 7891)
+++ branches/RDR/bigdata-war/src/html/new.html 2014-02-26 20:35:12 UTC (rev 7892)
@@ -150,7 +150,8 @@
<!--[if IE]><script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
- <script>window.jQuery || document.write('<script src="/jquery.min.js"><\/script>')</script>
+ <script>window.jQuery || document.write('<script src="jquery.min.js"><\/script>')</script>
+ <script src="jquery.hotkeys.js"></script>
<script src="workbench.js"></script>
</body>
</html>
Modified: branches/RDR/bigdata-war/src/html/workbench.js
===================================================================
--- branches/RDR/bigdata-war/src/html/workbench.js 2014-02-26 19:59:50 UTC (rev 7891)
+++ branches/RDR/bigdata-war/src/html/workbench.js 2014-02-26 20:35:12 UTC (rev 7892)
@@ -20,6 +20,28 @@
window.location.hash = tab;
}
+function moveTab(next) {
+ // get current position
+ var current = $('#tab-selector .active');
+ if(next) {
+ if(current.next().length) {
+ current.next().click();
+ } else {
+ $('#tab-selector a:first').click();
+ }
+ } else {
+ if(current.prev().length) {
+ current.prev().click();
+ } else {
+ $('#tab-selector a:last').click();
+ }
+ }
+}
+
+// these should be , and . but Hotkeys views those keypresses as these characters
+$(document).bind('keydown', 'ctrl+¼', function() { moveTab(false); });
+$(document).bind('keydown', 'ctrl+¾', function() { moveTab(true); });
+
/* Namespaces */
function getNamespaces() {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|