Create a Content Provider which will use an enhanced delegation model to
locate extension content providers using this content service for each
element in the tree.
The content provider returned will populate the root of the viewer in one
of two ways.
In the first approach, the content provider will seek out content
extensions which are bound using a viewerContentBinding. If any
of the found viewerContentBindings declare the isRoot
attribute on as true, then that set of extensions will be consulted for
the root elements of the tree. The input of the viewer will be supplied
to each of their
IStructuredContentProvider#getElements(Object)methods and aggregate the results for the root of the viewer.
In the second approach, if no viewerContentBindings declare
isRoot as true, then all matching extensions are consulted based
on their triggerPoints expression in the navigatorContent
extension. Any matching extensions are then consulted via their
IStructuredContentProvider#getElements(Object) methods and the
results are aggregated into the root.
After the root is populated, the children of each root element are
determined by consulting the source extension and all extension which
describe the element in their triggerPoints expression.
If clients wish to use a viewer other than the CommonViewer, then they
are responsible for creating the content provider, and setting it on
their viewer.