Sha256: 9b01a3bc5b25ae8016cfa12433ebb1e6c59dc04881fb359ed93e2a56206c7846

Contents?: true

Size: 1.46 KB

Versions: 3

Compression:

Stored size: 1.46 KB

Contents

km = Lanes.Vendor.KeyMaster

Lanes.View.Keys = {

    scopes:{}
    defaultTime: 5000

    setScopeTimer: (scope)->
        @timeout = _.delay( =>
            km.setScope('none')
        ,@defaultTime)

    rescheduleTimeout: (scope)->
        return unless @timeout
        clearTimeout(@timeout)
        this.setScopeTimer(scope)
        Lanes.View.TimedHighlight.reset(scope.time || @defaultTime)

    addScope:(scope)->
        km(scope.shortcut, (ev)=>
            km.setScope(scope.name)
            for view in scope.views
                Lanes.View.TimedHighlight.on(view, scope.time || @defaultTime)

            @setScopeTimer() unless scope.permanent

            return false
        )
        scope.views = []
        @scopes[scope.name] = scope

    addEvent: (keys, handler, view, scope)->
        km(keys, scope.name, (ev)=>
            view[handler].call(view, ev)
            @rescheduleTimeout(scope)

        )

    add: (view, events, scope)->
        scope = @scopes[scope.name] || this.addScope(scope)
        scope.views.push(view)
        for keys, handler of events
            this.addEvent(keys, handler, view, scope)

    remove: (view, events, scope)->
        scope = @scopes[scope.name]
        scope.views.remove(view)
        for keys, handler of events
            km.unbind(keys,scope.name)

        if 0==scopes.views.length
            km.unbind(scope.shortcut,'all')
            delete @scopes[scope.name]


    initialize: ->
        km.filter = -> true

}

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lanes-0.0.3 client/javascripts/view/Keys.coffee
lanes-0.0.2 client/javascripts/view/Keys.coffee
lanes-0.0.1 client/javascripts/view/Keys.coffee