From ebad961b20258dfdfd53c19fc9530983eb2f7ecd Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 3 Oct 2012 20:45:25 -1000 Subject: [PATCH] More conversion of FuzzyFinder to a SelectList subclass --- spec/extensions/fuzzy-finder-spec.coffee | 6 +- .../fuzzy-finder/fuzzy-finder.coffee | 60 ++++--------------- src/extensions/fuzzy-finder/keymap.coffee | 8 +-- 3 files changed, 18 insertions(+), 56 deletions(-) diff --git a/spec/extensions/fuzzy-finder-spec.coffee b/spec/extensions/fuzzy-finder-spec.coffee index 87f2af328..4e55bad9d 100644 --- a/spec/extensions/fuzzy-finder-spec.coffee +++ b/spec/extensions/fuzzy-finder-spec.coffee @@ -3,7 +3,7 @@ FuzzyFinder = require 'fuzzy-finder' $ = require 'jquery' {$$} = require 'space-pen' -describe 'FuzzyFinder', -> +fdescribe 'FuzzyFinder', -> [rootView, finder] = [] beforeEach -> @@ -27,6 +27,8 @@ describe 'FuzzyFinder', -> rootView.trigger 'fuzzy-finder:toggle-file-finder' expect(rootView.find('.fuzzy-finder')).toExist() expect(finder.miniEditor.isFocused).toBeTruthy() + expect(editor1.isFocused).toBeFalsy() + expect(editor2.isFocused).toBeFalsy() finder.miniEditor.insertText('this should not show up next time we toggle') rootView.trigger 'fuzzy-finder:toggle-file-finder' @@ -38,7 +40,7 @@ describe 'FuzzyFinder', -> expect(finder.miniEditor.getText()).toBe '' it "shows all relative file paths for the current project and selects the first", -> - finder.maxResults = 1000 + finder.maxItems = Infinity rootView.trigger 'fuzzy-finder:toggle-file-finder' rootView.project.getFilePaths().done (paths) -> expect(finder.list.children('li').length).toBe paths.length, finder.maxResults diff --git a/src/extensions/fuzzy-finder/fuzzy-finder.coffee b/src/extensions/fuzzy-finder/fuzzy-finder.coffee index 57601dd14..972ccd6ab 100644 --- a/src/extensions/fuzzy-finder/fuzzy-finder.coffee +++ b/src/extensions/fuzzy-finder/fuzzy-finder.coffee @@ -9,25 +9,20 @@ Editor = require 'editor' module.exports = class FuzzyFinder extends SelectList @activate: (rootView) -> + requireStylesheet 'select-list.css' + requireStylesheet 'fuzzy-finder.css' @instance = new FuzzyFinder(rootView) + rootView.on 'fuzzy-finder:toggle-file-finder', => @instance.toggleFileFinder() + rootView.on 'fuzzy-finder:toggle-buffer-finder', => @instance.toggleBufferFinder() @viewClass: -> - _.compact([super, 'fuzzy-finder']).join(' ') + [super, 'fuzzy-finder'].join(' ') - paths: null allowActiveEditorChange: null - maxResults: null + maxItems: 10 initialize: (@rootView) -> - requireStylesheet 'fuzzy-finder.css' - @maxResults = 10 - - @rootView.on 'fuzzy-finder:toggle-file-finder', => @toggleFileFinder() - @rootView.on 'fuzzy-finder:toggle-buffer-finder', => @toggleBufferFinder() - - @on 'fuzzy-finder:cancel', => @detach() - @on 'fuzzy-finder:select-path', => @select() - @on 'mousedown', 'li', (e) => @entryClicked(e) + super itemForElement: (path) -> $$ -> @li path @@ -38,11 +33,12 @@ class FuzzyFinder extends SelectList @detach() cancelled: -> + @miniEditor.setText('') @rootView.focus() toggleFileFinder: -> if @hasParent() - @detach() + @cancel() else return unless @rootView.project.getPath()? @allowActiveEditorChange = false @@ -51,7 +47,7 @@ class FuzzyFinder extends SelectList toggleBufferFinder: -> if @hasParent() - @detach() + @cancel() else @allowActiveEditorChange = true @populateOpenBufferPaths() @@ -68,39 +64,3 @@ class FuzzyFinder extends SelectList attach: -> @rootView.append(this) @miniEditor.focus() - - populatePathList: -> - @pathList.empty() - for path in @findMatches(@miniEditor.getText()) - @pathList.append $$ -> @li path - - @pathList.children('li:first').addClass 'selected' - - findSelectedLi: -> - @pathList.children('li.selected') - - - entryClicked: (e) -> - @open($(e.currentTarget).text()) - false - - moveUp: -> - selected = @findSelectedLi().removeClass('selected') - - if selected.filter(':not(:first-child)').length is 0 - selected = @pathList.children('li:last') - else - selected = selected.prev() - selected.addClass('selected') - - moveDown: -> - selected = @findSelectedLi().removeClass('selected') - - if selected.filter(':not(:last-child)').length is 0 - selected = @pathList.children('li:first') - else - selected = selected.next() - selected.addClass('selected') - - findMatches: (query) -> - fuzzyFilter(@paths, query, maxResults: @maxResults) diff --git a/src/extensions/fuzzy-finder/keymap.coffee b/src/extensions/fuzzy-finder/keymap.coffee index b06be4909..a3531d2a7 100644 --- a/src/extensions/fuzzy-finder/keymap.coffee +++ b/src/extensions/fuzzy-finder/keymap.coffee @@ -1,8 +1,8 @@ -window.keymap.bindKeys '*' +window.keymap.bindKeys 'body' 'meta-t': 'fuzzy-finder:toggle-file-finder' 'meta-b': 'fuzzy-finder:toggle-buffer-finder' window.keymap.bindKeys ".fuzzy-finder .editor input", - 'enter': 'fuzzy-finder:select-path', - 'escape': 'fuzzy-finder:cancel' - 'meta-w': 'fuzzy-finder:cancel' + 'enter': 'core:confirm', + 'escape': 'core:cancel' + 'meta-w': 'core:cancel'