Skip to content
This repository has been archived by the owner on Jan 5, 2021. It is now read-only.

Commit

Permalink
Keyboard subscribes to Manager key events
Browse files Browse the repository at this point in the history
  • Loading branch information
Jesse Stuart committed Feb 23, 2012
1 parent fa8fe27 commit f4ae10a
Show file tree
Hide file tree
Showing 8 changed files with 14 additions and 119 deletions.
4 changes: 4 additions & 0 deletions script/keyboard.coffee
Expand Up @@ -6,6 +6,10 @@ class Keyboard
height: 320
}, @config

@app.events.manager_init.subscribe (manager)=>
manager.events.key_down.subscribe @selectKey
manager.events.key_up.subscribe @deselectKey

@$container = $("<div class='keyboard'></div>").appendTo @app.$container

@key_types = [
Expand Down
4 changes: 4 additions & 0 deletions script/keyboard.js
Expand Up @@ -14,6 +14,10 @@ Keyboard = (function() {
width: 700,
height: 320
}, this.config);
this.app.events.manager_init.subscribe(__bind(function(manager) {
manager.events.key_down.subscribe(this.selectKey);
return manager.events.key_up.subscribe(this.deselectKey);
}, this));
this.$container = $("<div class='keyboard'></div>").appendTo(this.app.$container);
this.key_types = [
{
Expand Down
6 changes: 2 additions & 4 deletions script/manager.coffee
Expand Up @@ -30,12 +30,10 @@ class Manager
@events.key_press.trigger e.charCode

processKeyDown: (e)=>
@base.keyboard.selectKey e.charCode, e.keyCode

if _.include TOUCHY_KEYS, e.keyCode
e.preventDefault()

@events.key_down.trigger e.keyCode
@events.key_down.trigger e.charCode, e.keyCode

processKeyUp: (e)=>
@base.keyboard.deselectKey e.charCode, e.keyCode
@events.key_up.trigger e.charCode, e.keyCode
5 changes: 2 additions & 3 deletions script/manager.js
Expand Up @@ -38,13 +38,12 @@ Manager = (function() {
};

Manager.prototype.processKeyDown = function(e) {
this.base.keyboard.selectKey(e.charCode, e.keyCode);
if (_.include(TOUCHY_KEYS, e.keyCode)) e.preventDefault();
return this.events.key_down.trigger(e.keyCode);
return this.events.key_down.trigger(e.charCode, e.keyCode);
};

Manager.prototype.processKeyUp = function(e) {
return this.base.keyboard.deselectKey(e.charCode, e.keyCode);
return this.events.key_up.trigger(e.charCode, e.keyCode);
};

return Manager;
Expand Down
2 changes: 1 addition & 1 deletion script/page.coffee
Expand Up @@ -13,7 +13,7 @@ class Page

@base.events.manager_init.subscribe (manager)=>
manager.events.key_press.subscribe @_processKeyPress
manager.events.key_down.subscribe (keyCode)=>
manager.events.key_down.subscribe (charCode, keyCode)=>
if _.include [KEYS.BACKSPACE], keyCode
@current_space.match keyCode

Expand Down
2 changes: 1 addition & 1 deletion script/page.js
Expand Up @@ -23,7 +23,7 @@ Page = (function() {
};
this.base.events.manager_init.subscribe(__bind(function(manager) {
manager.events.key_press.subscribe(this._processKeyPress);
return manager.events.key_down.subscribe(__bind(function(keyCode) {
return manager.events.key_down.subscribe(__bind(function(charCode, keyCode) {
if (_.include([KEYS.BACKSPACE], keyCode)) {
return this.current_space.match(keyCode);
}
Expand Down
43 changes: 0 additions & 43 deletions script/test/manager.coffee
@@ -1,43 +0,0 @@
module "Manager"
setup: ->
@manager = new Manager {
$container: ($ "#application")
events: {
manager_init: new Event
}
page: {
current_space: {
match: -> true
hit: -> null
miss: -> null
}
}
keyboard: {
selectKey: (charCode, keyCode)=> @selected_key = keyCode
deselectKey: => @selected_key = null
}
}

test "#processKeyPress does nothing for backspace", ->
equal @manager.processKeyPress({ keyCode: 8 }), null

test "keydown within document deligates to keyboard", ->
e = $.Event "keydown"
e.keyCode = 13
($ document).trigger e

equal @selected_key, 13, 'keyboard called with keyCode'

test "#precessKeyDown sends backspace to current space", ->
@manager.base.page.current_space.match = (code)=> @space_code = code
@manager.processKeyDown { keyCode: 8, preventDefault: -> null }
equal @space_code, 8

test "keyup within document deligates to keyboard", ->
@selected_key = 8
e = $.Event "keyup"
e.keyCode = @selected_key
($ document).trigger e

equal @selected_key, null, 'keyboard called with keyCode'

67 changes: 0 additions & 67 deletions script/test/manager.js
@@ -1,69 +1,2 @@
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };

module("Manager", {
setup: function() {
return this.manager = new Manager({
$container: $("#application"),
events: {
manager_init: new Event
},
page: {
current_space: {
match: function() {
return true;
},
hit: function() {
return null;
},
miss: function() {
return null;
}
}
},
keyboard: {
selectKey: __bind(function(charCode, keyCode) {
return this.selected_key = keyCode;
}, this),
deselectKey: __bind(function() {
return this.selected_key = null;
}, this)
}
});
}
});

test("#processKeyPress does nothing for backspace", function() {
return equal(this.manager.processKeyPress({
keyCode: 8
}), null);
});

test("keydown within document deligates to keyboard", function() {
var e;
e = $.Event("keydown");
e.keyCode = 13;
($(document)).trigger(e);
return equal(this.selected_key, 13, 'keyboard called with keyCode');
});

test("#precessKeyDown sends backspace to current space", function() {
this.manager.base.page.current_space.match = __bind(function(code) {
return this.space_code = code;
}, this);
this.manager.processKeyDown({
keyCode: 8,
preventDefault: function() {
return null;
}
});
return equal(this.space_code, 8);
});

test("keyup within document deligates to keyboard", function() {
var e;
this.selected_key = 8;
e = $.Event("keyup");
e.keyCode = this.selected_key;
($(document)).trigger(e);
return equal(this.selected_key, null, 'keyboard called with keyCode');
});

0 comments on commit f4ae10a

Please sign in to comment.