List of usage examples for org.eclipse.jface.viewers ILazyTreePathContentProvider updateElement
public void updateElement(TreePath parentPath, int index);
From source file:org.eclipe.debug.tests.viewer.model.TreeModelViewerAutopopulateAgent.java
License:Open Source License
public void updateComplete(IViewerUpdate update) { if (update instanceof IChildrenCountUpdate) { TreePath path = update.getElementPath(); ILazyTreePathContentProvider contentProvider = (ILazyTreePathContentProvider) fViewer .getContentProvider();//from w w w . j av a 2 s. co m Widget[] items = fViewer.testFindItems(update.getElement()); for (int i = 0; i < items.length; i++) { if (path.equals(getTreePath(items[i]))) { int itemCount = getItemChildCount(items[i]); for (int j = 0; j < itemCount; j++) { contentProvider.updateElement(path, j); } } } } }
From source file:org.eclipse.debug.tests.viewer.model.TreeModelViewerAutopopulateAgent.java
License:Open Source License
@Override public void updateComplete(IViewerUpdate update) { if (update instanceof IChildrenCountUpdate) { TreePath path = update.getElementPath(); ILazyTreePathContentProvider contentProvider = (ILazyTreePathContentProvider) fViewer .getContentProvider();// ww w . ja v a 2 s .c o m Widget[] items = fViewer.testFindItems(update.getElement()); for (int i = 0; i < items.length; i++) { if (path.equals(getTreePath(items[i]))) { int itemCount = getItemChildCount(items[i]); for (int j = 0; j < itemCount; j++) { contentProvider.updateElement(path, j); } } } } }
From source file:org.key_project.sed.ui.util.SEDUIUtil.java
License:Open Source License
/** * Injects all unknown elements of the {@link TreeViewer} in the * parent hierarchy order defined by the given {@link Deque}. * @param treeViewer The {@link TreeViewer} to make elements known in. * @param injectQue The {@link Deque} which contains the unknown elements from parent to leaf. * @param monitor The {@link IProgressMonitor} to use. * @throws DebugException Occurred Exception *//* w w w .j a v a 2 s . c o m*/ protected static void injectElements(final TreeViewer treeViewer, Deque<Object> injectQue, final IProgressMonitor monitor) throws DebugException { SWTUtil.checkCanceled(monitor); // Check if something must be done if (!CollectionUtil.isEmpty(injectQue)) { // Check if the provider is of the expected form. IContentProvider cp = treeViewer.getContentProvider(); if (cp instanceof ILazyTreePathContentProvider) { final ILazyTreePathContentProvider lazyContentProvider = (ILazyTreePathContentProvider) cp; // Create tree path to last known element final LinkedList<Object> tpElements = new LinkedList<Object>(); Object knownParent = getParent(injectQue.getFirst()); while (knownParent != null) { SWTUtil.checkCanceled(monitor); tpElements.addFirst(knownParent); knownParent = getParent(knownParent); } // Injects elements starting at the root to make them familiar in tree for (final Object toInject : injectQue) { SWTUtil.checkCanceled(monitor); // Compute index on parent Object parent = getParent(toInject); final int viewIndex = ArrayUtil.indexOf(getChildren(parent), toInject); if (viewIndex >= 0) { // Create tree path to current element final TreePath tp = new TreePath(tpElements.toArray()); // Create job collector to collect update jobs started by the Debug API IFilter<Job> jobFilter = new IFilter<Job>() { @Override public boolean select(Job element) { String className = element.getClass().getName(); return className.startsWith("org.eclipse.debug") || className.startsWith("org.eclipse.ui.internal.progress"); } }; ScheduledJobCollector collector = new ScheduledJobCollector(jobFilter); try { // Start collecting update jobs started by the debug view collector.start(); IRunnableWithException run = new AbstractRunnableWithException() { @Override public void run() { try { // Inject the element into the TreeViewer lazyContentProvider.updateChildCount(tp, 0); lazyContentProvider.updateElement(tp, viewIndex); } catch (Exception e) { setException(e); } } }; if (!treeViewer.getControl().isDisposed()) { treeViewer.getControl().getDisplay().syncExec(run); if (run.getException() != null) { throw new DebugException(LogUtil.getLogger().createErrorStatus( run.getException().getMessage(), run.getException())); } } else { monitor.setCanceled(true); } } finally { // Stop collecting update jobs collector.stop(); } // Wait until all update jobs have finished before Job[] jobs = collector.getJobs(); for (Job job : jobs) { SWTUtil.checkCanceled(monitor); JobUtil.waitFor(job, 10); } // Wait until the element is known by the viewer since sometimes waiting for jobs is not enough. int numOfTries = 0; while (!treeViewer.getControl().isDisposed() && SWTUtil.testFindItem(treeViewer, toInject) == null && numOfTries < 200) { // Try at most for two seconds SWTUtil.checkCanceled(monitor); try { Thread.sleep(10); } catch (InterruptedException e) { // Nothing to do. } finally { numOfTries++; } } // Update tree path for next loop iteration tpElements.add(toInject); // Update monitor monitor.worked(1); } else { // Something has changed in between and injection is not possible. monitor.setCanceled(true); } } } } }