src/widgets/Shortcuts.js
changeset 1033 c20df1c080e6
child 1068 7623f9af9272
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/widgets/Shortcuts.js	Fri Feb 13 16:57:53 2015 +0100
@@ -0,0 +1,58 @@
+IriSP.Widgets.Shortcuts = function(player, config) {
+    IriSP.Widgets.Widget.call(this, player, config);
+};
+
+/**
+ * Keyboard shortcuts widget
+ * This widgets add global shortcuts for common actions.
+ * The default shortcuts are: 
+ * - Escape or Control-space for play/pause
+ * - Control-left for rewind (+shift to go faster)
+ * - Control-right for forward (+shift to go faster)
+ */
+IriSP.Widgets.Shortcuts.prototype = new IriSP.Widgets.Widget();
+
+IriSP.Widgets.Shortcuts.prototype.defaults =  {
+    // Time increment, in ms, for backward/forward navigation
+    time_increment: 2000
+}
+
+IriSP.Widgets.Shortcuts.prototype.draw = function() {
+    var  _this = this;
+    
+    /* Standard shortcuts */
+    Mousetrap.bindGlobal(["esc", "ctrl+space"], function (e) {
+        e.preventDefault();
+        if (! _this.media.getPaused()) {
+            _this.media.pause();
+        } else {
+            _this.media.play();
+        }
+        return false;
+    });
+    Mousetrap.bindGlobal("ctrl+left", function (e) {
+        // Backward
+        e.preventDefault();
+        _this.media.setCurrentTime(Math.max(0, _this.media.getCurrentTime() - _this.time_increment));
+        return false;
+    });
+    Mousetrap.bindGlobal("ctrl+shift+left", function (e) {
+        // Backward
+        e.preventDefault();
+        _this.media.setCurrentTime(Math.max(0, _this.media.getCurrentTime() - 5 * _this.time_increment));
+        return false;
+    });
+    Mousetrap.bindGlobal("ctrl+right", function (e) {
+        // Forward
+        e.preventDefault();
+        _this.media.setCurrentTime(Math.min(_this.media.duration, _this.media.getCurrentTime() + _this.time_increment));
+        return false;
+    });
+    Mousetrap.bindGlobal("ctrl+shift+right", function (e) {
+        // Forward
+        e.preventDefault();
+        _this.media.setCurrentTime(Math.min(_this.media.duration, _this.media.getCurrentTime() + 5 * _this.time_increment));
+        return false;
+    });
+
+};