ViewRegistry

Description

ViewRegistry handles the association between model and view types in Atom. We call this association a View Provider. As in, for a given model, this class can provide a view via ViewRegistry::getView, as long as the model/view association was registered via ViewRegistry::addViewProvider

If you're adding your own kind of pane item, a good strategy for all but the simplest items is to separate the model and the view. The model handles application logic and is the primary point of API interaction. The view just handles presentation.

View providers inform the workspace how your model objects should be presented in the DOM. A view provider must always return a DOM node, which makes HTML 5 custom elements an ideal tool for implementing views in Atom.

You can access the ViewRegistry object via atom.views.

Examples

Getting the workspace element

workspaceElement = atom.views.getView(atom.workspace)

Getting An Editor Element

textEditor = atom.workspace.getActiveTextEditor()
textEditorElement = atom.views.getView(textEditor)

Getting A Pane Element

pane = atom.workspace.getActivePane()
paneElement = atom.views.getView(pane)

API documentation

All methods

::addViewProvider(providerSpec)

Add a provider that will be used to construct views in the workspace's view layer based on model objects in its model layer.

Argument Description
providerSpec

Object containing the following keys:

modelConstructor

Constructor Function for your model.

viewConstructor

(Optional) Constructor Function for your view. It should be a subclass of HTMLElement (that is, your view should be a DOM node) and have a ::setModel() method which will be called immediately after construction. If you don't supply this property, you must supply the createView property with a function that never returns undefined.

createView

(Optional) Factory Function that must return a subclass of HTMLElement or undefined. If this property is not present or the function returns undefined, the view provider will fall back to the viewConstructor property. If you don't provide this property, you must provider a viewConstructor property.

Return values
  • Returns a Disposable on which .dispose() can be called to remove the added provider.

::getView(object)

Get the view associated with an object in the workspace.

If you're just using the workspace, you shouldn't need to access the view layer, but view layer access may be necessary if you want to perform DOM manipulation that isn't supported via the model API.

Argument Description
object

The object for which you want to retrieve a view. This can be a pane item, a pane, or the workspace itself.

Return values
  • Returns a DOM element.