Sha256: c5f30c219ed7ffd272331aa9fa9dd287c8aa5fe28997ac3a1a2df1f458211116

Contents?: true

Size: 1.46 KB

Versions: 9

Compression:

Stored size: 1.46 KB

Contents

km = Lanes.Vendor.KeyMaster

Lanes.Views.Keys = {

    scopes:{}
    defaultTime: 5000

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

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

    addScope:(scope)->
        km(scope.shortcut, (ev)=>
            km.setScope(scope.name)
            for view in scope.views
                Lanes.Views.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

9 entries across 9 versions & 1 rubygems

Version Path
lanes-0.1.9 client/lanes/views/Keys.coffee
lanes-0.1.8 client/lanes/views/Keys.coffee
lanes-0.1.7 client/lanes/views/Keys.coffee
lanes-0.1.6 client/lanes/views/Keys.coffee
lanes-0.1.5 client/lanes/views/Keys.coffee
lanes-0.1.2 client/lanes/views/Keys.coffee
lanes-0.1.0 client/lanes/views/Keys.coffee
lanes-0.0.8 client/lanes/views/Keys.coffee
lanes-0.0.5 client/lanes/views/Keys.coffee