Interface IPipelinedTreeContentProvider
-
- All Superinterfaces:
ICommonContentProvider
,IContentProvider
,IMementoAware
,IStructuredContentProvider
,ITreeContentProvider
- All Known Subinterfaces:
IPipelinedTreeContentProvider2
public interface IPipelinedTreeContentProvider extends ICommonContentProvider
To correctly implement pipelining you should implementIPipelinedTreeContentProvider2
which provides the additionalITreeContentProvider.hasChildren(Object)
method. This allows the calculation of hasChildren to match what will be provided in calculating the children. If you don't implement the hasChildren, you may get "false positive" hasChildrens which will result in a "+" indication in the tree in the event that the pipelined children calculation. The only reason these are two separate interfaces is historical.- Since:
- 3.2
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
getPipelinedChildren(Object aParent, Set theCurrentChildren)
Intercept the children that would be contributed to the viewer and determine how to change the shape of those children.void
getPipelinedElements(Object anInput, Set theCurrentElements)
Intercept the elements that would be contributed to the root of the viewer and determine how to change the shape of those children.Object
getPipelinedParent(Object anObject, Object aSuggestedParent)
Intercept requests for a parent of the given object.PipelinedShapeModification
interceptAdd(PipelinedShapeModification anAddModification)
Intercept attempts to add elements directly to the viewer.boolean
interceptRefresh(PipelinedViewerUpdate aRefreshSynchronization)
Intercept calls to viewerrefresh()
methods.PipelinedShapeModification
interceptRemove(PipelinedShapeModification aRemoveModification)
Intercept attempts to remove elements directly from the viewer.boolean
interceptUpdate(PipelinedViewerUpdate anUpdateSynchronization)
Intercept calls to viewerupdate()
methods.-
Methods inherited from interface org.eclipse.ui.navigator.ICommonContentProvider
init
-
Methods inherited from interface org.eclipse.jface.viewers.IContentProvider
dispose, inputChanged
-
Methods inherited from interface org.eclipse.ui.navigator.IMementoAware
restoreState, saveState
-
Methods inherited from interface org.eclipse.jface.viewers.ITreeContentProvider
getChildren, getElements, getParent, hasChildren
-
-
-
-
Method Detail
-
getPipelinedChildren
void getPipelinedChildren(Object aParent, Set theCurrentChildren)
Intercept the children that would be contributed to the viewer and determine how to change the shape of those children. The set of children should be modified to contain the correct children to return to the viewer.- Parameters:
aParent
- A parent from the viewertheCurrentChildren
- The set of children contributed thus far from upstream content providers.
-
getPipelinedElements
void getPipelinedElements(Object anInput, Set theCurrentElements)
Intercept the elements that would be contributed to the root of the viewer and determine how to change the shape of those children. The given set of elements should be modified to contain the correct elements to return to the viewer.- Parameters:
anInput
- An input from the viewertheCurrentElements
- The set of children contributed thus far from upstream content providers.
-
getPipelinedParent
Object getPipelinedParent(Object anObject, Object aSuggestedParent)
Intercept requests for a parent of the given object.- Parameters:
anObject
- The object being queried for a parent.aSuggestedParent
- The parent already suggested from upstream extensions.- Returns:
- The intended parent from this pipelined content provider. If you wish to not influence the parent, then return the aSuggestedParent value.
-
interceptAdd
PipelinedShapeModification interceptAdd(PipelinedShapeModification anAddModification)
Intercept attempts to add elements directly to the viewer.For content extensions that reshape the structure of children in a viewer, their overridden extensions may sometimes use optimized refreshes to add elements to the tree. These attempts must be intercepted and mapped to the correct set of model elements in the overriding extension. Clients may add, remove, or modify elements in the given set of added children. Clients should return a set for downstream extensions to massage further.
Clients may change what parent the reshaped elements are added to, so long as that parent is not the root of the viewer.
Clients should never create their own pipeline shape modifications, but instead return the shape modification that was passed in with appropriate changes.
Clients should not call any of the add, remove, refresh, or update methods on the viewer from this method or any code invoked by the implementation of this method.
- Parameters:
anAddModification
- The shape modification which contains the current suggested parent and children. Clients may modify this parameter directly and return it as the new shape modification.- Returns:
- The new shape modification to use. Clients should never return null from this method.
-
interceptRemove
PipelinedShapeModification interceptRemove(PipelinedShapeModification aRemoveModification)
Intercept attempts to remove elements directly from the viewer.For content extensions that reshape the structure of children in a viewer, their overridden extensions may sometimes use optimized refreshes to remove elements to the tree. These attempts must be intercepted and mapped to the correct set of model elements in the overriding extension. Clients may add, remove, or modify elements in the given set of removed children. Clients should return a set for downstream extensions to massage further.
The parent will be null for remove modifications.
Clients should never create their own pipeline shape modifications, but instead return the shape modification that was passed in with appropriate changes.
Clients should not call any of the add, remove, refresh, or update methods on the viewer from this method or any code invoked by the implementation of this method.
- Parameters:
aRemoveModification
- The shape modification which contains the current suggested parent and children. Clients may modify this parameter directly and return it as the new shape modification.- Returns:
- The new shape modification to use. Clients should never return null from this method.
-
interceptRefresh
boolean interceptRefresh(PipelinedViewerUpdate aRefreshSynchronization)
Intercept calls to viewerrefresh()
methods.Clients may modify the given update to add or remove the elements to be refreshed. Clients may return the same instance that was passed in for the next downstream extension.
Clients should not call any of the add, remove, refresh, or update methods on the viewer from this method or any code invoked by the implementation of this method.
- Parameters:
aRefreshSynchronization
- The (current) refresh update to execute against the viewer.- Returns:
- True if the viewer update was modified.
-
interceptUpdate
boolean interceptUpdate(PipelinedViewerUpdate anUpdateSynchronization)
Intercept calls to viewerupdate()
methods.Clients may modify the given update to add or remove the elements to be updated. Clients may also add or remove properties for the given targets to optimize the refresh. Clients may return the same instance that was passed in for the next downstream extension.
Clients should not call any of the add, remove, refresh, or update methods on the viewer from this method or any code invoked by the implementation of this method.
- Parameters:
anUpdateSynchronization
- The (current) update to execute against the viewer.- Returns:
- True if the viewer update was modified.
-
-