mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2024-11-13 08:44:12 +03:00
Add $.fn.bindKey, which works on any jquery-wrapped element.
If given a string as an action, it attempts to call a method by that name on the element's view object. If given a function, it calls it directly.
This commit is contained in:
parent
dc38a0e375
commit
5273cb0638
@ -26,3 +26,4 @@ window.createKeyEvent = (pattern) ->
|
||||
shiftKey: 'shift' in keys
|
||||
metaKey: 'meta' in keys
|
||||
which: key
|
||||
|
||||
|
@ -89,3 +89,26 @@ describe "Template", ->
|
||||
expect(view.subview.view()).toBe view.subview
|
||||
expect(view.subview.header.view()).toBe view.subview
|
||||
|
||||
describe "$.fn.bindKey", ->
|
||||
describe "when passed a key pattern and a method name", ->
|
||||
it "calls the named method on the parent view when a keydown event matches the pattern", ->
|
||||
view.someMethod = jasmine.createSpy('someMethod')
|
||||
view.li1.bindKey 'ctrl+m', 'someMethod'
|
||||
|
||||
view.li1.trigger window.createKeyEvent('meta+z')
|
||||
expect(view.someMethod).not.toHaveBeenCalled()
|
||||
|
||||
view.li1.trigger window.createKeyEvent('ctrl+m')
|
||||
expect(view.someMethod).toHaveBeenCalled()
|
||||
|
||||
describe "when passed a key pattern and a function", ->
|
||||
it "calls the given function when a keydown event matches the pattern", ->
|
||||
action = jasmine.createSpy('someMethod')
|
||||
view.li1.bindKey 'ctrl+m', action
|
||||
|
||||
view.li1.trigger window.createKeyEvent('meta+z')
|
||||
expect(action).not.toHaveBeenCalled()
|
||||
|
||||
view.li1.trigger window.createKeyEvent('ctrl+m')
|
||||
expect(action).toHaveBeenCalled()
|
||||
|
||||
|
@ -18,11 +18,6 @@ class FileFinder extends Template
|
||||
@bindKey 'up', 'moveUp'
|
||||
@bindKey 'down', 'moveDown'
|
||||
|
||||
bindKey: (pattern, methodName) ->
|
||||
@on 'keydown', (event) =>
|
||||
if window.keyEventMatchesPattern(event, pattern)
|
||||
this[methodName]()
|
||||
|
||||
populateUrlList: ->
|
||||
@urlList.empty()
|
||||
for url in @findMatches(@input.val())
|
||||
|
@ -51,3 +51,11 @@ class Template
|
||||
$.fn.view = ->
|
||||
this.data('view')
|
||||
|
||||
$.fn.bindKey = (pattern, action) ->
|
||||
@on 'keydown', (event) =>
|
||||
if window.keyEventMatchesPattern(event, pattern)
|
||||
if _.isString(action)
|
||||
this.view()[action]()
|
||||
else
|
||||
action()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user