Add RootView.registerExtension()

This commit is contained in:
Corey Johnson & Nathan Sobo
2012-05-02 15:25:57 -07:00
parent 4d0a0b824f
commit 5864fa5145
2 changed files with 41 additions and 2 deletions

View File

@@ -24,7 +24,10 @@ class RootView extends View
@deserialize: (viewState) ->
new RootView(viewState)
initialize: ({ pathToOpen, projectPath, panesViewState }) ->
extensions: null
extensionStates: null
initialize: ({ pathToOpen, projectPath, panesViewState, @extensionStates }) ->
@on 'toggle-file-finder', => @toggleFileFinder()
@on 'show-console', => window.showConsole()
@on 'focus', (e) =>
@@ -49,20 +52,31 @@ class RootView extends View
@deserializePanes(panesViewState) if panesViewState
@extensionStates ?= {}
@extensions = {}
afterAttach: (onDom) ->
@focus() if onDom
serialize: ->
projectPath: @project?.path
panesViewState: @serializePanes()
extensionStates: @serializeExtensions()
serializePanes: () ->
serializePanes: ->
@panes.children().view()?.serialize()
deserializePanes: (panesViewState) ->
@panes.append @deserializeView(panesViewState)
@adjustPaneDimensions()
serializeExtensions: ->
extensionStates = {}
for name, extension of @extensions
extensionStates[name] = extension.serialize()
extensionStates
deserializeView: (viewState) ->
switch viewState.viewClass
when 'Pane' then Pane.deserialize(viewState, this)
@@ -70,6 +84,10 @@ class RootView extends View
when 'PaneColumn' then PaneColumn.deserialize(viewState, this)
when 'Editor' then Editor.deserialize(viewState, this)
registerExtension: (extension) ->
@extensions[extension.name] = extension
extension.activate(this, @extensionStates[extension.name])
open: (path) ->
buffer = @project.open(path)