diff --git a/src/extensions/tree-view/directory-view.coffee b/src/extensions/tree-view/directory-view.coffee index badb9a607..e58082fbe 100644 --- a/src/extensions/tree-view/directory-view.coffee +++ b/src/extensions/tree-view/directory-view.coffee @@ -6,17 +6,21 @@ $ = require 'jquery' module.exports = class DirectoryView extends View @content: ({directory, isExpanded}) -> - @li class: 'directory entry', path: directory.path, => + @li class: 'directory entry', => @div class: 'header', => @span '▸', class: 'disclosure-arrow', outlet: 'disclosureArrow' @span directory.getName(), class: 'name' + directory: null entries: null initialize: ({@directory, isExpanded}) -> @expand() if isExpanded @disclosureArrow.on 'click', => @toggleExpansion() + getPath: -> + @directory.path + buildEntries: -> @unwatchDescendantEntries() @entries?.remove() diff --git a/src/extensions/tree-view/file-view.coffee b/src/extensions/tree-view/file-view.coffee index d55befc0e..5be53a3fd 100644 --- a/src/extensions/tree-view/file-view.coffee +++ b/src/extensions/tree-view/file-view.coffee @@ -4,6 +4,11 @@ $ = require 'jquery' module.exports = class FileView extends View @content: (file) -> - @li file.getName(), class: 'file entry', path: file.path + @li file.getName(), class: 'file entry' + + file: null initialize: (@file) -> + + getPath: -> + @file.path \ No newline at end of file diff --git a/src/extensions/tree-view/tree-view.coffee b/src/extensions/tree-view/tree-view.coffee index b3ea29f04..74897c3fe 100644 --- a/src/extensions/tree-view/tree-view.coffee +++ b/src/extensions/tree-view/tree-view.coffee @@ -1,6 +1,7 @@ {View, $$} = require 'space-pen' Directory = require 'directory' DirectoryView = require 'tree-view/directory-view' +FileView = require 'tree-view/file-view' MoveDialog = require 'tree-view/move-dialog' AddDialog = require 'tree-view/add-dialog' $ = require 'jquery' @@ -18,9 +19,9 @@ class TreeView extends View initialize: (@rootView) -> @on 'click', '.entry', (e) => - entry = $(e.currentTarget) + entry = $(e.currentTarget).view() @selectEntry(entry) - @openSelectedEntry() if entry.is('.file') + @openSelectedEntry() if (entry instanceof FileView) false @on 'move-up', => @moveUp() @@ -37,11 +38,14 @@ class TreeView extends View selectActiveFile: -> activeFilePath = @rootView.activeEditor()?.buffer.path - @selectEntry(@find(".file[path='#{activeFilePath}']")) + for element in @find(".file") + fileView = $(element).view() + if fileView.getPath() == activeFilePath + @selectEntry(fileView) moveDown: -> selectedEntry = @selectedEntry() - if selectedEntry[0] + if selectedEntry if selectedEntry.is('.expanded.directory') return if @selectEntry(selectedEntry.find('.entry:first')) return if @selectEntry(selectedEntry.next()) @@ -51,7 +55,7 @@ class TreeView extends View moveUp: -> selectedEntry = @selectedEntry() - if selectedEntry[0] + if selectedEntry return if @selectEntry(selectedEntry.prev()) return if @selectEntry(selectedEntry.parents('.directory').first()) else @@ -59,7 +63,7 @@ class TreeView extends View expandDirectory: -> selectedEntry = @selectedEntry() - selectedEntry.view().expand() if selectedEntry.is('.directory') + selectedEntry.view().expand() if (selectedEntry instanceof DirectoryView) collapseDirectory: -> selectedEntry = @selectedEntry() @@ -69,22 +73,22 @@ class TreeView extends View openSelectedEntry: -> selectedEntry = @selectedEntry() - if selectedEntry.is('.directory') + if (selectedEntry instanceof DirectoryView) selectedEntry.view().toggleExpansion() - else if selectedEntry.is('.file') - @rootView.open(selectedEntry.attr('path')) + else if (selectedEntry instanceof FileView) + @rootView.open(selectedEntry.getPath()) move: -> - @rootView.append(new MoveDialog(@rootView.project, @selectedEntry().attr('path'))) + @rootView.append(new MoveDialog(@rootView.project, @selectedEntry().getPath())) add: -> - @rootView.append(new AddDialog(@rootView, @selectedEntry().attr('path'))) + @rootView.append(new AddDialog(@rootView, @selectedEntry().getPath())) selectedEntry: -> - @find('.selected') + @find('.selected')?.view() selectEntry: (entry) -> - return false unless entry[0] + return false unless entry.get(0) @find('.selected').removeClass('selected') entry.addClass('selected')