diff --git a/spec/app/root-view-spec.coffee b/spec/app/root-view-spec.coffee index 3fe853682..1022a249f 100644 --- a/spec/app/root-view-spec.coffee +++ b/spec/app/root-view-spec.coffee @@ -150,9 +150,9 @@ describe "RootView", -> it "renders an empty pane", -> viewState = panesViewState: - viewClass: "Pane", + deserializer: "Pane", wrappedView: - viewClass: "BogusView" + deserializer: "BogusView" rootView.remove() rootView = RootView.deserialize(viewState) diff --git a/spec/spec-helper.coffee b/spec/spec-helper.coffee index 321a257a3..787e6aea9 100644 --- a/spec/spec-helper.coffee +++ b/spec/spec-helper.coffee @@ -1,6 +1,7 @@ nakedLoad 'jasmine-jquery' $ = require 'jquery' _ = require 'underscore' +require 'window' Keymap = require 'keymap' Config = require 'config' Point = require 'point' @@ -10,7 +11,6 @@ File = require 'file' Editor = require 'editor' TokenizedBuffer = require 'tokenized-buffer' fs = require 'fs' -require 'window' RootView = require 'root-view' requireStylesheet "jasmine.css" fixturePackagesPath = require.resolve('fixtures/packages') diff --git a/src/app/edit-session.coffee b/src/app/edit-session.coffee index d0a87ff26..181415a02 100644 --- a/src/app/edit-session.coffee +++ b/src/app/edit-session.coffee @@ -12,6 +12,8 @@ fs = require 'fs' module.exports = class EditSession + registerDeserializer(this) + @deserialize: (state, project) -> if fs.exists(state.buffer) session = project.buildEditSessionForPath(state.buffer) @@ -62,6 +64,7 @@ class EditSession @off() serialize: -> + deserializer: 'EditSession' buffer: @buffer.getPath() scrollTop: @getScrollTop() scrollLeft: @getScrollLeft() diff --git a/src/app/editor.coffee b/src/app/editor.coffee index fddf1dc4a..cf273da6b 100644 --- a/src/app/editor.coffee +++ b/src/app/editor.coffee @@ -95,7 +95,7 @@ class Editor extends View serialize: -> @saveScrollPositionForActiveEditSession() - viewClass: "Editor" + deserializer: "Editor" editSessions: @editSessions.map (session) -> session.serialize() activeEditSessionIndex: @getActiveEditSessionIndex() isFocused: @isFocused diff --git a/src/app/pane-grid.coffee b/src/app/pane-grid.coffee index 9b8bda400..3d54fd64d 100644 --- a/src/app/pane-grid.coffee +++ b/src/app/pane-grid.coffee @@ -4,14 +4,14 @@ $ = require 'jquery' module.exports = class PaneGrid extends View @deserialize: ({children}) -> - childViews = children.map (child) -> deserializeView(child) + childViews = children.map (child) -> deserialize(child) new this(childViews) initialize: (children=[]) -> @append(children...) serialize: -> - viewClass: @className() + deserializer: @className() children: @childViewStates() childViewStates: -> diff --git a/src/app/pane.coffee b/src/app/pane.coffee index 490742f89..5b0e630f6 100644 --- a/src/app/pane.coffee +++ b/src/app/pane.coffee @@ -9,10 +9,10 @@ class Pane extends View @subview 'wrappedView', wrappedView if wrappedView @deserialize: ({wrappedView}) -> - new Pane(deserializeView(wrappedView)) + new Pane(deserialize(wrappedView)) serialize: -> - viewClass: "Pane" + deserializer: "Pane" wrappedView: @wrappedView?.serialize() adjustDimensions: -> # do nothing diff --git a/src/app/root-view.coffee b/src/app/root-view.coffee index 757d93e92..7af98bee5 100644 --- a/src/app/root-view.coffee +++ b/src/app/root-view.coffee @@ -13,7 +13,7 @@ PaneRow = require 'pane-row' module.exports = class RootView extends View - registerViewClasses(this, Pane, PaneRow, PaneColumn, Editor) + registerDeserializers(this, Pane, PaneRow, PaneColumn, Editor) @configDefaults: ignoredNames: [".git", ".svn", ".DS_Store"] @@ -34,7 +34,7 @@ class RootView extends View atom.atomPackageStates = packageStates ? {} rootView = new RootView(projectOrPathToOpen, suppressOpen: true) - rootView.setRootPane(deserializeView(panesViewState)) if panesViewState + rootView.setRootPane(deserialize(panesViewState)) if panesViewState rootView title: null diff --git a/src/app/window.coffee b/src/app/window.coffee index 8ed0aba32..c177dcdb1 100644 --- a/src/app/window.coffee +++ b/src/app/window.coffee @@ -10,7 +10,7 @@ require 'jquery-extensions' require 'underscore-extensions' require 'space-pen-extensions' -registeredViewClasses = {} +deserializers = {} windowAdditions = rootViewParentSelector: 'body' @@ -104,15 +104,14 @@ windowAdditions = onerror: -> atom.showDevTools() - registerViewClass: (viewClass) -> - registerViewClasses(viewClass) + registerDeserializers: (args...) -> + registerDeserializer(arg) for arg in args - registerViewClasses: (viewClasses...) -> - for viewClass in viewClasses - registeredViewClasses[viewClass.name] = viewClass + registerDeserializer: (klass) -> + deserializers[klass.name] = klass - deserializeView: (viewState) -> - registeredViewClasses[viewState.viewClass]?.deserialize(viewState) + deserialize: (state) -> + deserializers[state.deserializer]?.deserialize(state) measure: (description, fn) -> start = new Date().getTime()