mirror of
https://github.com/atom/atom.git
synced 2026-02-14 16:45:14 -05:00
Make deserializeView a global method
…along with `registerViewClass(es)`
This commit is contained in:
@@ -3,8 +3,8 @@ $ = require 'jquery'
|
||||
|
||||
module.exports =
|
||||
class PaneGrid extends View
|
||||
@deserialize: ({children}, rootView) ->
|
||||
childViews = children.map (child) -> rootView.deserializeView(child)
|
||||
@deserialize: ({children}) ->
|
||||
childViews = children.map (child) -> deserializeView(child)
|
||||
new this(childViews)
|
||||
|
||||
initialize: (children=[]) ->
|
||||
|
||||
@@ -8,8 +8,8 @@ class Pane extends View
|
||||
@div class: 'pane', =>
|
||||
@subview 'wrappedView', wrappedView if wrappedView
|
||||
|
||||
@deserialize: ({wrappedView}, rootView) ->
|
||||
new Pane(rootView.deserializeView(wrappedView))
|
||||
@deserialize: ({wrappedView}) ->
|
||||
new Pane(deserializeView(wrappedView))
|
||||
|
||||
serialize: ->
|
||||
viewClass: "Pane"
|
||||
|
||||
@@ -13,6 +13,8 @@ PaneRow = require 'pane-row'
|
||||
|
||||
module.exports =
|
||||
class RootView extends View
|
||||
registerViewClasses(this, Pane, PaneRow, PaneColumn, Editor)
|
||||
|
||||
@configDefaults:
|
||||
ignoredNames: [".git", ".svn", ".DS_Store"]
|
||||
disabledPackages: []
|
||||
@@ -31,8 +33,8 @@ class RootView extends View
|
||||
|
||||
atom.atomPackageStates = packageStates ? {}
|
||||
|
||||
rootView = new RootView(projectOrPathToOpen , suppressOpen: true)
|
||||
rootView.setRootPane(rootView.deserializeView(panesViewState)) if panesViewState
|
||||
rootView = new RootView(projectOrPathToOpen, suppressOpen: true)
|
||||
rootView.setRootPane(deserializeView(panesViewState)) if panesViewState
|
||||
rootView
|
||||
|
||||
title: null
|
||||
@@ -40,12 +42,6 @@ class RootView extends View
|
||||
|
||||
initialize: (projectOrPathToOpen, { suppressOpen } = {}) ->
|
||||
window.rootView = this
|
||||
@viewClasses = {
|
||||
"Pane": Pane,
|
||||
"PaneRow": PaneRow,
|
||||
"PaneColumn": PaneColumn,
|
||||
"Editor": Editor
|
||||
}
|
||||
@handleEvents()
|
||||
|
||||
if not projectOrPathToOpen or _.isString(projectOrPathToOpen)
|
||||
@@ -116,12 +112,6 @@ class RootView extends View
|
||||
afterAttach: (onDom) ->
|
||||
@focus() if onDom
|
||||
|
||||
registerViewClass: (viewClass) ->
|
||||
@viewClasses[viewClass.name] = viewClass
|
||||
|
||||
deserializeView: (viewState) ->
|
||||
@viewClasses[viewState.viewClass]?.deserialize(viewState, this)
|
||||
|
||||
deactivate: ->
|
||||
atom.setRootViewStateForPath(@project.getPath(), @serialize())
|
||||
atom.deactivateAtomPackages()
|
||||
|
||||
@@ -5,12 +5,13 @@ fs = require 'fs'
|
||||
$ = require 'jquery'
|
||||
Config = require 'config'
|
||||
Syntax = require 'syntax'
|
||||
RootView = require 'root-view'
|
||||
Pasteboard = require 'pasteboard'
|
||||
require 'jquery-extensions'
|
||||
require 'underscore-extensions'
|
||||
require 'space-pen-extensions'
|
||||
|
||||
registeredViewClasses = {}
|
||||
|
||||
windowAdditions =
|
||||
rootViewParentSelector: 'body'
|
||||
rootView: null
|
||||
@@ -37,6 +38,7 @@ windowAdditions =
|
||||
# Note: RootView assigns itself on window on initialization so that
|
||||
# window.rootView is available when loading user configuration
|
||||
attachRootView: (pathToOpen) ->
|
||||
RootView = require 'root-view'
|
||||
if pathState = atom.getRootViewStateForPath(pathToOpen)
|
||||
RootView.deserialize(pathState)
|
||||
else
|
||||
@@ -102,6 +104,16 @@ windowAdditions =
|
||||
onerror: ->
|
||||
atom.showDevTools()
|
||||
|
||||
registerViewClass: (viewClass) ->
|
||||
registerViewClasses(viewClass)
|
||||
|
||||
registerViewClasses: (viewClasses...) ->
|
||||
for viewClass in viewClasses
|
||||
registeredViewClasses[viewClass.name] = viewClass
|
||||
|
||||
deserializeView: (viewState) ->
|
||||
registeredViewClasses[viewState.viewClass]?.deserialize(viewState)
|
||||
|
||||
measure: (description, fn) ->
|
||||
start = new Date().getTime()
|
||||
value = fn()
|
||||
|
||||
Reference in New Issue
Block a user