Display keybindings in EventPalette. Style a bit.

This commit is contained in:
Corey Johnson & Nathan Sobo
2012-10-19 12:02:00 -06:00
parent de3bbce29f
commit d420585b11
4 changed files with 43 additions and 3 deletions

View File

@@ -2,6 +2,7 @@
SelectList = require 'select-list'
Editor = require 'editor'
$ = require 'jquery'
_ = require 'underscore'
module.exports =
class EventPalette extends SelectList
@@ -15,25 +16,36 @@ class EventPalette extends SelectList
filterKey: 'eventDescription'
previouslyFocusedElement: null
keyBindings: null
initialize: (@rootView) ->
@on 'event-palette:toggle', => @cancel()
super
attach: ->
@previouslyFocusedElement = $(':focus')
@keyBindings = _.losslessInvert(keymap.bindingsForElement(@previouslyFocusedElement))
events = []
for eventName, eventDescription of @previouslyFocusedElement.events()
events.push({eventName, eventDescription}) if eventDescription
events = _.sortBy events, (e) -> e.eventDescription
@setArray(events)
@appendTo(@rootView)
@miniEditor.setText('')
@miniEditor.focus()
itemForElement: ({eventName, eventDescription}) ->
keyBindings = @keyBindings
$$ ->
@li class: 'event', 'data-event-name': eventName, =>
@div eventDescription, class: 'event-description'
@div eventName, class: 'event-name'
for binding in keyBindings[eventName] ? []
@div binding, class: 'key-binding'
@div class: 'clear-float'
confirmed: ({eventName}) ->

View File

@@ -7,12 +7,28 @@
max-height: 300px;
}
.event-palette ol li {
padding: 2px;
}
.event-palette ol .event-description {
float: left;
display: inline-block;
}
.event-palette ol .event-name {
.event-palette ol .event-name, .event-palette ol .key-binding {
float: right;
display: inline-block;
margin-right: .5em;
color: #ddd;
-webkit-border-radius: 3px;
padding: 0 4px;
}
.event-palette ol .event-name {
background: rgba(0, 0, 0, .2);
}
.event-palette ol .key-binding {
background: rgba(255, 255, 255, .1);
}