mirror of
https://github.com/atom/atom.git
synced 2026-01-24 06:18:03 -05:00
Start implementing "tool-panel" keymap scheme
Tool panels will be mapped to ctrl-# bindings. If the panel is focused, the # binding closes it. Otherwise the # binding shows it (if needed) and focuses it. The esc key unfocuses the panel, but does not necessarily close it. Meta-w always closes the panel. This is the scheme. Right now we only have 2 panels: Command Panel: Ctrl-0, esc still hides it Tree View: Ctrl-1, esc just unfocuses it
This commit is contained in:
@@ -103,18 +103,42 @@ describe "TreeView", ->
|
||||
newRootView.remove()
|
||||
|
||||
describe "when tree-view:toggle is triggered on the root view", ->
|
||||
it "shows/hides the tree view", ->
|
||||
beforeEach ->
|
||||
rootView.attachToDom()
|
||||
|
||||
describe "when the tree view is visible", ->
|
||||
beforeEach ->
|
||||
expect(treeView).toBeVisible()
|
||||
|
||||
describe "when the tree view is focused", ->
|
||||
it "hides the tree view", ->
|
||||
treeView.focus()
|
||||
rootView.trigger 'tree-view:toggle'
|
||||
expect(treeView).toBeHidden()
|
||||
|
||||
describe "when the tree view is not focused", ->
|
||||
it "shifts focus to the tree view", ->
|
||||
rootView.focus()
|
||||
rootView.trigger 'tree-view:toggle'
|
||||
expect(treeView).toBeVisible()
|
||||
expect(treeView).toMatchSelector(':focus')
|
||||
|
||||
describe "when the tree view is hidden", ->
|
||||
it "shows and focuses the tree view", ->
|
||||
treeView.detach()
|
||||
rootView.trigger 'tree-view:toggle'
|
||||
expect(treeView.hasParent()).toBeTruthy()
|
||||
expect(treeView).toMatchSelector(':focus')
|
||||
|
||||
describe "when tree-view:unfocus is triggered on the tree view", ->
|
||||
fit "surrenders focus to the root view but remains open", ->
|
||||
rootView.attachToDom()
|
||||
treeView.focus()
|
||||
expect(treeView.hasParent()).toBeTruthy()
|
||||
rootView.trigger 'tree-view:toggle'
|
||||
expect(treeView.hasParent()).toBeFalsy()
|
||||
treeView.trigger 'tree-view:unfocus'
|
||||
expect(treeView).toBeVisible()
|
||||
expect(treeView).not.toMatchSelector(':focus')
|
||||
expect(rootView).toMatchSelector(':focus')
|
||||
|
||||
rootView.trigger 'tree-view:toggle'
|
||||
expect(treeView.hasParent()).toBeTruthy()
|
||||
expect(treeView).toMatchSelector(':focus')
|
||||
|
||||
describe "when a directory's disclosure arrow is clicked", ->
|
||||
it "expands / collapses the associated directory", ->
|
||||
subdir = treeView.root.find('.entries > li:contains(dir/)').view()
|
||||
|
||||
@@ -51,6 +51,7 @@ class CommandPanel extends View
|
||||
|
||||
toggle: ->
|
||||
if @parent().length then @detach() else @attach()
|
||||
false
|
||||
|
||||
attach: (text='') ->
|
||||
@rootView.append(this)
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
window.keymap.bindKeys '*'
|
||||
'ctrl-0': 'command-panel:toggle'
|
||||
'ctrl-meta-0': 'command-panel:toggle-preview'
|
||||
'meta-:': 'command-panel:toggle'
|
||||
'meta-F': 'command-panel:find-in-project'
|
||||
|
||||
window.keymap.bindKeys '.command-panel .editor',
|
||||
window.keymap.bindKeys '.command-panel .editor input',
|
||||
'meta-w': 'command-panel:toggle'
|
||||
escape: 'command-panel:toggle'
|
||||
enter: 'command-panel:execute'
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ window.keymap.bindKeys '*'
|
||||
'meta-t': 'fuzzy-finder:toggle-file-finder'
|
||||
'meta-b': 'fuzzy-finder:toggle-buffer-finder'
|
||||
|
||||
window.keymap.bindKeys ".fuzzy-finder .editor",
|
||||
window.keymap.bindKeys ".fuzzy-finder .editor input",
|
||||
'enter': 'fuzzy-finder:select-path',
|
||||
'escape': 'fuzzy-finder:cancel'
|
||||
'meta-w': 'fuzzy-finder:cancel'
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
window.keymap.bindKeys '#root-view'
|
||||
'alt-tab': 'tree-view:focus'
|
||||
'ctrl-1': 'tree-view:toggle'
|
||||
'ctrl-T': 'tree-view:toggle'
|
||||
'alt-tab': 'tree-view:focus'
|
||||
|
||||
window.keymap.bindKeys '.tree-view'
|
||||
'escape': 'tree-view:unfocus'
|
||||
'meta-w': 'tree-view:toggle'
|
||||
'right': 'tree-view:expand-directory'
|
||||
'left': 'tree-view:collapse-directory'
|
||||
'enter': 'tree-view:open-selected-entry'
|
||||
|
||||
@@ -49,6 +49,7 @@ class TreeView extends View
|
||||
@on 'tree-view:add', => @add()
|
||||
@on 'tree-view:remove', => @removeSelectedEntry()
|
||||
@on 'tree-view:directory-modified', => @selectActiveFile()
|
||||
@on 'tree-view:unfocus', => @rootView.focus()
|
||||
@rootView.on 'tree-view:toggle', => @toggle()
|
||||
@rootView.on 'active-editor-path-change', => @selectActiveFile()
|
||||
@rootView.project.on 'path-change', => @updateRoot()
|
||||
@@ -71,11 +72,11 @@ class TreeView extends View
|
||||
@root?.unwatchEntries()
|
||||
|
||||
toggle: ->
|
||||
if @hasParent()
|
||||
if @is(':focus')
|
||||
@detach()
|
||||
@rootView.focus()
|
||||
else
|
||||
@attach()
|
||||
@attach() unless @hasParent()
|
||||
@focus()
|
||||
|
||||
attach: ->
|
||||
|
||||
Reference in New Issue
Block a user