Defer tree view load when possible

This commit is contained in:
Kevin Sawicki 2013-01-22 13:26:22 -08:00
parent a966f1d7c7
commit a9c1b58ba5
4 changed files with 33 additions and 18 deletions

View File

@ -16,7 +16,11 @@ class DeferredAtomPackage extends AtomPackage
deactivate: -> @instance?.deactivate?()
serialize: -> @instance?.serialize?()
serialize: ->
if @instance
@instance.serialize?()
else
@state
getInstance: ->
unless @instance

View File

@ -1,8 +1,26 @@
AtomPackage = require 'atom-package'
TreeView = require './src/tree-view'
DeferredAtomPackage = require 'deferred-atom-package'
module.exports =
class Tree extends AtomPackage
activate: (rootView, state) -> TreeView.activate(rootView, state)
deactivate: -> TreeView.deactivate()
serialize: -> TreeView.serialize()
class Tree extends DeferredAtomPackage
loadEvents: [
'tree-view:toggle'
'tree-view:reveal-active-file'
]
instanceClass: 'tree-view/src/tree-view'
activate: (rootView, state) ->
super
if state
@getInstance().attach() if state.attached
else if rootView.project.getPath() and not rootView.pathToOpenIsFile
@getInstance().attach()
onLoadEvent: (event, instance) ->
switch event.type
when 'tree-view:toggle'
instance.toggle()
when 'tree-view:reveal-active-file'
instance.revealActiveFile()

View File

@ -13,8 +13,7 @@ describe "TreeView", ->
rootView = new RootView(require.resolve('fixtures/tree-view'))
project = rootView.project
atom.loadPackage("tree-view")
treeView = TreeView.instance
treeView = atom.loadPackage("tree-view").getInstance()
treeView.root = treeView.find('ol > li:first').view()
sampleJs = treeView.find('.file:contains(tree-view.js)')
sampleTxt = treeView.find('.file:contains(tree-view.txt)')
@ -51,8 +50,7 @@ describe "TreeView", ->
rootView.deactivate()
rootView = new RootView
atom.loadPackage 'tree-view'
treeView = TreeView.instance
treeView = atom.loadPackage("tree-view").getInstance()
it "does not attach to the root view or create a root node when initialized", ->
expect(treeView.hasParent()).toBeFalsy()
@ -78,8 +76,7 @@ describe "TreeView", ->
rootView.deactivate()
rootView = new RootView(require.resolve('fixtures/tree-view/tree-view.js'))
atom.loadPackage 'tree-view'
treeView = TreeView.instance
treeView = atom.loadPackage("tree-view").getInstance()
it "does not attach to the root view but does create a root node when initialized", ->
expect(treeView.hasParent()).toBeFalsy()

View File

@ -17,9 +17,6 @@ class TreeView extends ScrollView
else
@instance = new TreeView(rootView)
if rootView.project.getPath() and not rootView.pathToOpenIsFile
@instance.attach()
@deactivate: ->
@instance.deactivate()
@ -65,8 +62,7 @@ class TreeView extends ScrollView
@selectEntryForPath(@selectedPath) if @selectedPath
else
@selectActiveFile()
@rootView.command 'tree-view:toggle', => @toggle()
@rootView.command 'tree-view:reveal-active-file', => @revealActiveFile()
@rootView.on 'root-view:active-path-changed', => @selectActiveFile()
@rootView.project.on 'path-changed', => @updateRoot()
@observeConfig 'core.hideGitIgnoredFiles', => @updateRoot()