public class ObservableListTreeContentProvider extends Object implements ITreeContentProvider
ITreeContentProvider
for use with an AbstractTreeViewer
,
which uses the provided list factory
to obtain the
elements of a tree. Object of this class listen for changes to each
IObservableList
created by the factory, and will insert and remove
viewer elements to reflect the observed changes.Constructor and Description |
---|
ObservableListTreeContentProvider(IObservableFactory listFactory,
TreeStructureAdvisor structureAdvisor)
Constructs an ObservableListTreeContentProvider using the given list
factory.
|
Modifier and Type | Method and Description |
---|---|
void |
dispose()
Disposes of this content provider.
|
Object[] |
getChildren(Object parentElement)
Returns the child elements of the given parent element.
|
Object[] |
getElements(Object inputElement)
Returns the elements to display in the viewer
when its input is set to the given element.
|
IObservableSet |
getKnownElements()
Returns the set of elements known to this content provider.
|
Object |
getParent(Object element)
Returns the parent for the given element, or
null
indicating that the parent can't be computed. |
IObservableSet |
getRealizedElements()
Returns the set of known elements which have been realized in the viewer.
|
boolean |
hasChildren(Object element)
Returns whether the given element has children.
|
void |
inputChanged(Viewer viewer,
Object oldInput,
Object newInput)
Notifies this content provider that the given viewer's input
has been switched to a different element.
|
public ObservableListTreeContentProvider(IObservableFactory listFactory, TreeStructureAdvisor structureAdvisor)
listFactory
- observable factory that produces an IObservableList of
children for a given parent element. Observable lists created
by this factory must be on the realm of the current display.structureAdvisor
- an advisor that will be consulted from the implementations of
the getParent(Object)
and
hasChildren(Object)
methods, or null
if
no advisor is available. It is recommended that clients pass a
non-null advisor if they can provide additional structural
information about the tree.public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
IContentProvider
A typical use for this method is registering the content provider as a listener to changes on the new input (using model-specific means), and deregistering the viewer from the old input. In response to these change notifications, the content provider should update the viewer (see the add, remove, update and refresh methods on the viewers).
The viewer should not be updated during this call, as it might be in the process of being disposed.
inputChanged
in interface IContentProvider
viewer
- the vieweroldInput
- the old input element, or null
if the viewer
did not previously have an inputnewInput
- the new input element, or null
if the viewer
does not have an inputpublic Object[] getElements(Object inputElement)
ITreeContentProvider
NOTE: The returned array must not contain the given
inputElement
, since this leads to recursion issues in
AbstractTreeViewer
(see
bug 9262).
getElements
in interface IStructuredContentProvider
getElements
in interface ITreeContentProvider
inputElement
- the input elementpublic boolean hasChildren(Object element)
ITreeContentProvider
Intended as an optimization for when the viewer does not
need the actual children. Clients may be able to implement
this more efficiently than getChildren
.
hasChildren
in interface ITreeContentProvider
element
- the elementtrue
if the given element has children,
and false
if it has no childrenpublic Object[] getChildren(Object parentElement)
ITreeContentProvider
The difference between this method and IStructuredContentProvider.getElements
is that getElements
is called to obtain the
tree viewer's root elements, whereas getChildren
is used
to obtain the children of a given parent element in the tree (including a root).
getChildren
in interface ITreeContentProvider
parentElement
- the parent elementpublic Object getParent(Object element)
ITreeContentProvider
null
indicating that the parent can't be computed.
In this case the tree-structured viewer can't expand
a given node correctly if requested.getParent
in interface ITreeContentProvider
element
- the elementnull
if it
has none or if the parent cannot be computedpublic void dispose()
The viewer should not be updated during this call, as it is in the process of being disposed.
Note: Data binding content providers become unusable on disposal.
dispose
in interface IContentProvider
public IObservableSet getKnownElements()
public IObservableSet getRealizedElements()
Copyright (c) 2000, 2014 Eclipse Contributors and others. All rights reserved.Guidelines for using Eclipse APIs.