Add deferred package type

This package defers loading until specific commands are
triggered on the root view.
This commit is contained in:
Kevin Sawicki
2013-01-22 12:11:22 -08:00
parent 20d5dbaa78
commit 513a29d70e
20 changed files with 136 additions and 64 deletions

View File

@@ -1,6 +1,9 @@
AtomPackage = require 'atom-package'
CommandLoggerView = require './src/command-logger-view'
DeferredAtomPackage = require 'deferred-atom-package'
module.exports =
class CommandLogger extends AtomPackage
activate: (rootView) -> CommandLoggerView.activate(rootView)
class CommandLogger extends DeferredAtomPackage
attachEvents: ['command-logger:toggle']
instanceClass: 'command-logger/src/command-logger-view'
onAttachEvent: (event, instance) -> instance.toggle()

View File

@@ -6,7 +6,7 @@ describe "CommandLogger", ->
beforeEach ->
rootView = new RootView(require.resolve('fixtures/sample.js'))
atom.loadPackage 'command-logger'
atom.loadPackage('command-logger').getInstance()
editor = rootView.getActiveEditor()
commandLogger = CommandLogger.instance

View File

@@ -34,7 +34,6 @@ class CommandLoggerView extends ScrollView
initialize: (@rootView, @eventLog={}) ->
super
@rootView.command 'command-logger:toggle', => @toggle()
@rootView.command 'command-logger:clear-data', => @eventLog = {}
@command 'core:cancel', => @detach()

View File

@@ -1,6 +1,10 @@
AtomPackage = require 'atom-package'
CommandPaletteView = require './src/command-palette-view'
DeferredAtomPackage = require 'deferred-atom-package'
module.exports =
class CommandPalette extends AtomPackage
activate: (rootView) -> CommandPaletteView.activate(rootView)
class CommandPalette extends DeferredAtomPackage
attachEvents: ['command-palette:toggle']
instanceClass: 'command-palette/src/command-palette-view'
onAttachEvent: (event, instance) -> instance.attach()

View File

@@ -8,7 +8,7 @@ describe "CommandPalette", ->
beforeEach ->
rootView = new RootView(require.resolve('fixtures/sample.js'))
atom.loadPackage("command-palette")
atom.loadPackage("command-palette").getInstance()
palette = CommandPalette.instance
rootView.attachToDom().focus()
rootView.trigger 'command-palette:toggle'

View File

@@ -7,7 +7,6 @@ module.exports =
class CommandPaletteView extends SelectList
@activate: (rootView) ->
@instance = new CommandPaletteView(rootView)
rootView.command 'command-palette:toggle', => @instance.attach()
@viewClass: ->
"#{super} command-palette"

View File

@@ -1,8 +1,33 @@
AtomPackage = require 'atom-package'
CommandPanelView = require './src/command-panel-view'
DeferredAtomPackage = require 'deferred-atom-package'
module.exports =
class CommandPanel extends AtomPackage
activate: (rootView, state) -> CommandPanelView.activate(rootView, state)
deactivate: -> CommandPanelView.deactivate()
serialize: -> CommandPanelView.serialize()
class CommandPanel extends DeferredAtomPackage
attachEvents: [
'command-panel:toggle'
'command-panel:toggle-preview'
'command-panel:find-in-file'
'command-panel:find-in-project'
'command-panel:repeat-relative-address'
'command-panel:repeat-relative-address-in-reverse'
'command-panel:set-selection-as-regex-address'
]
instanceClass: 'command-panel/src/command-panel-view'
onAttachEvent: (event, instance) ->
switch event.type
when 'command-panel:toggle'
instance.toggle()
when 'command-panel:toggle-preview'
instance.togglePreview()
when 'command-panel:find-in-file'
instance.attach("/")
when 'command-panel:find-in-project'
instance.attach("Xx/")
when 'command-panel:repeat-relative-address'
instance.repeatRelativeAddress()
when 'command-panel:repeat-relative-address-in-reverse'
instance.repeatRelativeAddressInReverse()
when 'command-panel:set-selection-as-regex-address'
instance.setSelectionAsLastRelativeAddress()

View File

@@ -13,7 +13,7 @@ describe "CommandPanel", ->
editor = rootView.getActiveEditor()
buffer = editor.activeEditSession.buffer
CommandPanel = atom.loadPackage('command-panel')
commandPanel = CommandPanelView.instance
commandPanel = CommandPanel.getInstance()
commandPanel.history = []
commandPanel.historyIndex = 0
@@ -36,7 +36,7 @@ describe "CommandPanel", ->
rootView.deactivate()
rootView2.attachToDom()
commandPanel = rootView2.activatePackage('command-panel', CommandPanel)
commandPanel = rootView2.activatePackage('command-panel', CommandPanel).getInstance()
expect(rootView2.find('.command-panel')).toExist()
expect(commandPanel.miniEditor.getText()).toBe 'abc'
expect(commandPanel.miniEditor.isFocused).toBeTruthy()
@@ -49,7 +49,7 @@ describe "CommandPanel", ->
rootView3 = RootView.deserialize(rootView2.serialize())
rootView2.deactivate()
rootView3.attachToDom()
commandPanel = rootView3.activatePackage('command-panel', CommandPanel)
commandPanel = rootView3.activatePackage('command-panel', CommandPanel).getInstance()
expect(commandPanel.miniEditor.isFocused).toBeFalsy()
rootView3.deactivate()
@@ -71,7 +71,7 @@ describe "CommandPanel", ->
rootView.deactivate()
rootView2.attachToDom()
commandPanel = rootView2.activatePackage('command-panel', CommandPanel)
commandPanel = rootView2.activatePackage('command-panel', CommandPanel).getInstance()
expect(commandPanel.history.length).toBe(2)
expect(commandPanel.history[0]).toBe('/test2')
expect(commandPanel.history[1]).toBe('/test3')

View File

@@ -16,15 +16,6 @@ class CommandPanelView extends View
else
@instance = new CommandPanelView(rootView)
@deactivate: ->
@instance.destroy()
@serialize: ->
text: @instance.miniEditor.getText()
visible: @instance.hasParent()
miniEditorFocused: @instance.miniEditor.isFocused
history: @instance.history[-@instance.maxSerializedHistorySize..]
@deserialize: (state, rootView) ->
commandPanel = new CommandPanelView(rootView, state.history)
commandPanel.attach(state.text, focus: false) if state.visible
@@ -53,15 +44,6 @@ class CommandPanelView extends View
@command 'tool-panel:unfocus', => @rootView.focus()
@command 'core:close', => @detach(); false
@command 'core:confirm', => @execute()
@rootView.command 'command-panel:toggle', => @toggle()
@rootView.command 'command-panel:toggle-preview', => @togglePreview()
@rootView.command 'command-panel:find-in-file', => @attach("/")
@rootView.command 'command-panel:find-in-project', => @attach("Xx/")
@rootView.command 'command-panel:repeat-relative-address', => @repeatRelativeAddress()
@rootView.command 'command-panel:repeat-relative-address-in-reverse', => @repeatRelativeAddressInReverse()
@rootView.command 'command-panel:set-selection-as-regex-address', => @setSelectionAsLastRelativeAddress()
@command 'core:move-up', => @navigateBackwardInHistory()
@command 'core:move-down', => @navigateForwardInHistory()
@@ -69,6 +51,14 @@ class CommandPanelView extends View
@errorMessages.hide()
@prompt.iconSize(@miniEditor.fontSize)
serialize: ->
text: @miniEditor.getText()
visible: @hasParent()
miniEditorFocused: @miniEditor.isFocused
history: @history[-@maxSerializedHistorySize..]
deactivate: -> @destroy()
destroy: ->
@previewList.destroy()
@@ -93,7 +83,6 @@ class CommandPanelView extends View
@miniEditor.focus()
attach: (text='', options={}) ->
console.trace 'attached', @rootView
@errorMessages.hide()
focus = options.focus ? true

View File

@@ -1,6 +1,21 @@
AtomPackage = require 'atom-package'
FuzzyFinderView = require './src/fuzzy-finder-view'
DeferredAtomPackage = require 'deferred-atom-package'
module.exports =
class FuzzyFinder extends AtomPackage
activate: (rootView) -> FuzzyFinderView.activate(rootView)
class FuzzyFinder extends DeferredAtomPackage
attachEvents: [
'fuzzy-finder:toggle-file-finder'
'fuzzy-finder:toggle-buffer-finder'
'fuzzy-finder:find-under-cursor'
]
instanceClass: 'fuzzy-finder/src/fuzzy-finder-view'
onAttachEvent: (event, instance) ->
switch event.type
when 'fuzzy-finder:toggle-file-finder'
instance.toggleFileFinder()
when 'fuzzy-finder:toggle-buffer-finder'
instance.toggleBufferFinder()
when 'fuzzy-finder:find-under-cursor'
instance.findUnderCursor()

View File

@@ -10,7 +10,7 @@ describe 'FuzzyFinder', ->
beforeEach ->
rootView = new RootView(require.resolve('fixtures/sample.js'))
rootView.enableKeymap()
atom.loadPackage("fuzzy-finder")
atom.loadPackage("fuzzy-finder").getInstance()
finder = FuzzyFinder.instance
afterEach ->

View File

@@ -10,9 +10,6 @@ class FuzzyFinderView extends SelectList
@activate: (rootView) ->
@instance = new FuzzyFinderView(rootView)
rootView.command 'fuzzy-finder:toggle-file-finder', => @instance.toggleFileFinder()
rootView.command 'fuzzy-finder:toggle-buffer-finder', => @instance.toggleBufferFinder()
rootView.command 'fuzzy-finder:find-under-cursor', => @instance.findUnderCursor()
@viewClass: ->
[super, 'fuzzy-finder'].join(' ')

View File

@@ -1,6 +1,9 @@
AtomPackage = require 'atom-package'
MarkdownPreviewView = require './src/markdown-preview-view'
DeferredAtomPackage = require 'deferred-atom-package'
module.exports =
class MarkdownPreview extends AtomPackage
activate: (rootView) -> MarkdownPreviewView.activate(rootView)
class MarkdownPreview extends DeferredAtomPackage
attachEvents: ['markdown-preview:toggle']
instanceClass: 'markdown-preview/src/markdown-preview-view'
onAttachEvent: (event, instance) -> instance.toggle()

View File

@@ -7,7 +7,7 @@ describe "MarkdownPreview", ->
beforeEach ->
rootView = new RootView(require.resolve('fixtures/markdown'))
atom.loadPackage("markdown-preview")
atom.loadPackage("markdown-preview").getInstance()
markdownPreview = MarkdownPreview.instance
afterEach ->

View File

@@ -14,7 +14,6 @@ class MarkdownPreviewView extends ScrollView
initialize: (@rootView) ->
super
@rootView.command 'markdown-preview:toggle', => @toggle()
@command 'core:cancel', => @detach()
toggle: ->

View File

@@ -1,6 +1,21 @@
AtomPackage = require 'atom-package'
OutlineView = require './src/outline-view'
DeferredAtomPackage = require 'deferred-atom-package'
module.exports =
class Outline extends AtomPackage
activate: (rootView) -> OutlineView.activate(rootView)
class Outline extends DeferredAtomPackage
attachEvents: [
'outline-view:toggle-file-outline'
'outline-view:toggle-project-outline'
'outline-view:jump-to-declaration'
]
instanceClass: 'outline-view/src/outline-view'
onAttachEvent: (event, instance) ->
switch event.type
when 'outline-view:toggle-file-outline'
instance.toggleFileOutline()
when 'outline-view:toggle-project-outline'
instance.toggleProjectOutline()
when 'outline-view:jump-to-declaration'
instance.jumpToDeclaration()

View File

@@ -8,7 +8,7 @@ describe "OutlineView", ->
beforeEach ->
rootView = new RootView(require.resolve('fixtures'))
atom.loadPackage("outline-view")
atom.loadPackage("outline-view").getInstance()
outlineView = OutlineView.instance
rootView.attachToDom()
setArraySpy = spyOn(outlineView, 'setArray').andCallThrough()

View File

@@ -11,9 +11,6 @@ class OutlineView extends SelectList
@activate: (rootView) ->
@instance = new OutlineView(rootView)
rootView.command 'outline-view:toggle-file-outline', => @instance.toggleFileOutline()
rootView.command 'outline-view:toggle-project-outline', => @instance.toggleProjectOutline()
rootView.command 'outline-view:jump-to-declaration', => @instance.jumpToDeclaration()
@viewClass: -> "#{super} outline-view"