diff --git a/spec/extensions/tree-view-spec.coffee b/spec/extensions/tree-view-spec.coffee index e8ccf8b57..d8c010678 100644 --- a/spec/extensions/tree-view-spec.coffee +++ b/spec/extensions/tree-view-spec.coffee @@ -193,3 +193,39 @@ describe "TreeView", -> it "does nothing", -> rootDirectoryView.find('.file').click() treeView.trigger 'tree-view:expand-directory' + + describe "tree-view:collapse-directory", -> + subdir = null + + beforeEach -> + subdir = rootDirectoryView.find('> .entries > .directory').eq(0).view() + subdir.expand() + + describe "when an expanded directory is selected", -> + it "collapses the selected directory", -> + expect(subdir).toHaveClass 'expanded' + + subdir.click() + treeView.trigger 'tree-view:collapse-directory' + + expect(subdir).not.toHaveClass 'expanded' + expect(rootDirectoryView).toHaveClass 'expanded' + + describe "when a collapsed directory is selected", -> + it "collapses and selects the selected directory's parent directory", -> + subdir.find('.directory').click() + treeView.trigger 'tree-view:collapse-directory' + + expect(subdir).not.toHaveClass 'expanded' + expect(subdir).toHaveClass 'selected' + expect(rootDirectoryView).toHaveClass 'expanded' + + describe "when a file is selected", -> + it "collapses and selects the selected file's parent directory", -> + subdir.find('.file').click() + treeView.trigger 'tree-view:collapse-directory' + + expect(subdir).not.toHaveClass 'expanded' + expect(subdir).toHaveClass 'selected' + expect(rootDirectoryView).toHaveClass 'expanded' + diff --git a/src/app/keymaps/tree-view.coffee b/src/app/keymaps/tree-view.coffee index dd740c0bd..901066370 100644 --- a/src/app/keymaps/tree-view.coffee +++ b/src/app/keymaps/tree-view.coffee @@ -1,4 +1,4 @@ window.keymap.bindKeys '.tree-view' 'right': 'tree-view:expand-directory' - 'left': 'tree-view:contract-directory' + 'left': 'tree-view:collapse-directory' diff --git a/src/extensions/tree-view.coffee b/src/extensions/tree-view.coffee index f4764b69b..c5f44a24b 100644 --- a/src/extensions/tree-view.coffee +++ b/src/extensions/tree-view.coffee @@ -22,6 +22,7 @@ class TreeView extends View @on 'move-up', => @moveUp() @on 'move-down', => @moveDown() @on 'tree-view:expand-directory', => @expandDirectory() + @on 'tree-view:collapse-directory', => @collapseDirectory() @rootView.on 'active-editor-path-change', => @selectActiveFile() selectActiveFile: -> @@ -50,6 +51,12 @@ class TreeView extends View selectedEntry = @selectedEntry() selectedEntry.view().expand() if selectedEntry.is('.directory') + collapseDirectory: -> + selectedEntry = @selectedEntry() + directory = selectedEntry.closest('.expanded.directory').view() + directory.collapse() + @selectEntry(directory) + selectedEntry: -> @find('.selected')