Skip to content

Commit

Permalink
Refactor keyCapture service
Browse files Browse the repository at this point in the history
  • Loading branch information
LFDM committed Jun 19, 2014
1 parent 61f0cfa commit a4c7fa4
Showing 1 changed file with 15 additions and 10 deletions.
25 changes: 15 additions & 10 deletions app/js/arethusa.core/key_capture.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,7 @@ angular.module('arethusa.core').service('keyCapture', function () {
var handleCallbacks = function(keyCode) {
if (activeKeys[keyCode] && keyPressedCallbacks[keyCode]) {
var callbacks = keyPressedCallbacks[keyCode];
angular.forEach(callbacks, function(callbackObj, key) {
if (! propagationStopped) {
callbackObj.callback();
}
});
resolveCallbacks(callbacks);
resumePropagation();
}
};
Expand All @@ -45,13 +41,14 @@ angular.module('arethusa.core').service('keyCapture', function () {
return activeKeys[this.keyCodes.ctrl];
};

function Callback(callback, priority) {
this.callback = callback;
this.priority = priority || 0;
}

this.onKeyPressed = function(keyCode, callback, priority) {
var callbacks = keyPressedCallbacks[keyCode] || [];
var obj = {
priority: priority || 0,
callback: callback
};
callbacks.push(obj);
callbacks.push(new Callback(callback, priority));
keyPressedCallbacks[keyCode] = sortedByPriority(callbacks);
};

Expand All @@ -70,4 +67,12 @@ angular.module('arethusa.core').service('keyCapture', function () {
function resumePropagation() {
propagationStopped = false;
}

function resolveCallbacks(callbacks) {
angular.forEach(callbacks, function(callbackObj, key) {
if (! propagationStopped) {
callbackObj.callback();
}
});
}
});

0 comments on commit a4c7fa4

Please sign in to comment.