|
|
|
|
|
Re: Deferred content provider [message #897750 is a reply to message #897742] |
Wed, 25 July 2012 08:14 |
Fabio Mancinelli Messages: 16 Registered: July 2009 |
Junior Member |
|
|
On 07/25/2012 09:58 AM, Jan Krakora wrote:
> Could you post here your IElementCollector implementation and the
> content of the fetchDeferredChildren method?
Sure.
Here it is my fetchDeferredChildren method:
public void fetchDeferredChildren(Object object, IElementCollector
collector, IProgressMonitor monitor) {
collector.add(getChildren(object), monitor);
collector.done();
}
getChildren does the heavy work and when it's done it returns the array
with the retrieved objects.
And this is the class that wraps the standard deferred content manager
in order to use an element collector that filters things wrt the
selected working set.
public class WorkingSetDeferredTreeContentManager extends
DeferredTreeContentManager
{
private IWorkingSet workingSet;
private static class WorkingSetElementCollectorFilter implements
IElementCollector
{
private IWorkingSet workingSet;
private IElementCollector elementCollector;
public WorkingSetElementCollectorFilter(IWorkingSet workingSet,
IElementCollector elementCollector)
{
this.workingSet = workingSet;
this.elementCollector = elementCollector;
}
public void add(Object element, IProgressMonitor monitor)
{
if (workingSet != null) {
if (UIUtils.isInWorkingSet(element, workingSet)) {
elementCollector.add(element, monitor);
}
} else {
elementCollector.add(element, monitor);
}
}
public void add(Object[] elements, IProgressMonitor monitor)
{
Object[] filteredObjects = null;
if (workingSet != null) {
filteredObjects = UIUtils.filterByWorkingSet(elements,
workingSet);
} else {
filteredObjects = elements;
}
elementCollector.add(filteredObjects, monitor);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
}
public void done()
{
elementCollector.done();
}
}
public WorkingSetDeferredTreeContentManager(AbstractTreeViewer
viewer, IWorkingSet workingSet)
{
super(null, viewer);
this.workingSet = workingSet;
}
@Override
protected IElementCollector createElementCollector(Object parent,
PendingUpdateAdapter placeholder)
{
IElementCollector elementCollector =
super.createElementCollector(parent, placeholder);
return new WorkingSetElementCollectorFilter(workingSet,
elementCollector);
}
}
-Fabio
|
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03749 seconds