|
Lines 158-203
Link Here
|
| 158 |
{ |
158 |
{ |
| 159 |
this.input = newInput instanceof DataCollectorTreeInput ? (DataCollectorTreeInput)newInput : null; |
159 |
this.input = newInput instanceof DataCollectorTreeInput ? (DataCollectorTreeInput)newInput : null; |
| 160 |
if (deferredContentManager == null) |
160 |
if (deferredContentManager == null) |
| 161 |
{ |
161 |
{ |
| 162 |
class ExtendedDeferredContentManager extends DeferredTreeContentManager |
|
|
| 163 |
{ |
| 164 |
private AbstractTreeViewer viewer; |
| 165 |
|
| 166 |
public ExtendedDeferredContentManager(ITreeContentProvider provider, AbstractTreeViewer viewer) |
| 167 |
{ |
| 168 |
super(provider, viewer); |
| 169 |
this.viewer = viewer; |
| 170 |
} |
| 171 |
|
| 172 |
protected void addChildren(final Object parent, final Object[] children, IProgressMonitor monitor) |
| 173 |
{ |
| 174 |
WorkbenchJob updateJob = new WorkbenchJob(TraceMessages.AttachAdding) |
| 175 |
{ |
| 176 |
/** |
| 177 |
* @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor) |
| 178 |
*/ |
| 179 |
public IStatus runInUIThread(IProgressMonitor updateMonitor) { |
| 180 |
//Cancel the job if the tree viewer got closed |
| 181 |
if (viewer.getControl().isDisposed() || updateMonitor.isCanceled()) { |
| 182 |
return Status.CANCEL_STATUS; |
| 183 |
} |
| 184 |
viewer.add(parent, children); |
| 185 |
return Status.OK_STATUS; |
| 186 |
} |
| 187 |
}; |
| 188 |
|
| 189 |
updateJob.setSystem(true); |
| 190 |
updateJob.schedule(); |
| 191 |
updateJob.addJobChangeListener(new JobChangeAdapter() |
| 192 |
{ |
| 193 |
public void done(IJobChangeEvent event) |
| 194 |
{ |
| 195 |
profileUI.initializeAfterFetch(); |
| 196 |
} |
| 197 |
}); |
| 198 |
} |
| 199 |
}; |
| 200 |
|
| 201 |
deferredContentManager = new ExtendedDeferredContentManager(this, (AbstractTreeViewer)viewer); |
162 |
deferredContentManager = new ExtendedDeferredContentManager(this, (AbstractTreeViewer)viewer); |
| 202 |
} |
163 |
} |
| 203 |
} |
164 |
} |
|
Lines 276-281
Link Here
|
| 276 |
} |
237 |
} |
| 277 |
} |
238 |
} |
| 278 |
|
239 |
|
|
|
240 |
class ExtendedDeferredContentManager extends DeferredTreeContentManager |
| 241 |
{ |
| 242 |
private AbstractTreeViewer viewer; |
| 243 |
|
| 244 |
public ExtendedDeferredContentManager(ITreeContentProvider provider, AbstractTreeViewer viewer) |
| 245 |
{ |
| 246 |
super(provider, viewer); |
| 247 |
this.viewer = viewer; |
| 248 |
} |
| 249 |
|
| 250 |
protected void addChildren(final Object parent, final Object[] children, IProgressMonitor monitor) |
| 251 |
{ |
| 252 |
WorkbenchJob updateJob = new WorkbenchJob(TraceMessages.AttachAdding) |
| 253 |
{ |
| 254 |
/** |
| 255 |
* @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor) |
| 256 |
*/ |
| 257 |
public IStatus runInUIThread(IProgressMonitor updateMonitor) { |
| 258 |
//Cancel the job if the tree viewer got closed |
| 259 |
if (viewer.getControl().isDisposed() || updateMonitor.isCanceled()) { |
| 260 |
return Status.CANCEL_STATUS; |
| 261 |
} |
| 262 |
viewer.add(parent, children); |
| 263 |
return Status.OK_STATUS; |
| 264 |
} |
| 265 |
}; |
| 266 |
|
| 267 |
updateJob.setSystem(true); |
| 268 |
|
| 269 |
// Add the job change listener, THEN schedule the job. |
| 270 |
|
| 271 |
updateJob.addJobChangeListener(new JobChangeAdapter() |
| 272 |
{ |
| 273 |
public void done(IJobChangeEvent event) |
| 274 |
{ |
| 275 |
profileUI.initializeAfterFetch(); |
| 276 |
} |
| 277 |
}); |
| 278 |
|
| 279 |
updateJob.schedule(); |
| 280 |
|
| 281 |
|
| 282 |
} |
| 283 |
}; |
| 284 |
|
| 285 |
|
| 286 |
|
| 279 |
|
287 |
|
| 280 |
/** |
288 |
/** |
| 281 |
* This deferred adapter is used to retrieve the data collectors |
289 |
* This deferred adapter is used to retrieve the data collectors |