Return views created via atom.views.createView from atom.views.getView

The .getView method is deprecated, but this is required to maintain the
spirit of the old behavior for now.
Esse commit está contido em:
Nathan Sobo
2014-11-30 18:06:06 -07:00
commit 2ac15bad90
+28 -25
Ver Arquivo
@@ -118,31 +118,34 @@ class ViewFactory
@deprecatedViewRegistry.getView(object)
createView: (object, params) ->
if object instanceof HTMLElement
object
else if object?.jquery
object[0]?.__spacePenView ?= object
object[0]
else if provider = @findProvider(object)
params ?= {}
params.viewFactory = this
params.model = object
element = provider.createView?(params)
unless element?
element = new provider.viewConstructor
if not (typeof element.initialize is 'function') and (typeof element.setModel is 'function')
Grim.deprecate("Define `::initialize` instead of `::setModel` in your view. It will be passed a params hash including the model.")
element.setModel(object)
else
element.initialize(params)
element
else if viewConstructor = object?.getViewClass?()
Grim.deprecate("Add a view provider for your object on atom.views instead of implementing `::getViewClass`.")
view = new viewConstructor(object)
view[0].__spacePenView ?= view
view[0]
else
throw new Error("Can't create a view for #{object.constructor.name} instance. Please register a view provider.")
view =
if object instanceof HTMLElement
object
else if object?.jquery
object[0]?.__spacePenView ?= object
object[0]
else if provider = @findProvider(object)
params ?= {}
params.viewFactory = this
params.model = object
element = provider.createView?(params)
unless element?
element = new provider.viewConstructor
if not (typeof element.initialize is 'function') and (typeof element.setModel is 'function')
Grim.deprecate("Define `::initialize` instead of `::setModel` in your view. It will be passed a params hash including the model.")
element.setModel(object)
else
element.initialize(params)
element
else if viewConstructor = object?.getViewClass?()
Grim.deprecate("Add a view provider for your object on atom.views instead of implementing `::getViewClass`.")
view = new viewConstructor(object)
view[0].__spacePenView ?= view
view[0]
else
throw new Error("Can't create a view for #{object.constructor.name} instance. Please register a view provider.")
@deprecatedViewRegistry.views.set(object, view)
view
findProvider: (object) ->
@providers.find ({modelConstructor}) -> object instanceof modelConstructor