/** * Updates whether the given elements have children. * * @param update specifies element and progress monitor */ protected void updateHasChildren(IHasChildrenUpdate update) { if (!update.isCanceled()) { IStatus status = Status.OK_STATUS; try { IPresentationContext context = update.getPresentationContext(); if (supportsContext(context)) { boolean hasChildren = hasChildren(update.getElement(), context, update); if (!update.isCanceled()) { update.setHasChilren(hasChildren); } } else { update.setHasChilren(false); } } catch (CoreException e) { status = e.getStatus(); } update.setStatus(status); } }
/** * Computes whether the given element is a container. * * @param parent potential parent * @param context presentation context * @param monitor result to report to */ protected void retrieveChildCount(IChildrenCountUpdate update) { if (!update.isCanceled()) { IStatus status = Status.OK_STATUS; try { IPresentationContext context = update.getPresentationContext(); if (supportsContext(context)) { int childCount = getChildCount( update.getElement(), context, update); if (!update.isCanceled()) { update.setChildCount(childCount); } } else { update.setChildCount(0); } } catch (CoreException e) { status = e.getStatus(); } update.setStatus(status); } }
/** * Computes the children for the given parent in the specified context. * * @param update update request */ protected void retrieveChildren(IChildrenUpdate update) { if (!update.isCanceled()) { IStatus status = Status.OK_STATUS; try { IPresentationContext context = update.getPresentationContext(); if (supportsContext(context)) { int offset = update.getOffset(); Object[] children = getChildren(update.getElement(), offset, update.getLength(), context, update); if (!update.isCanceled() && children != null) { for (int i = 0; i < children.length; i++) { update.setChild(children[i], offset + i); } } } } catch (CoreException e) { status = e.getStatus(); } update.setStatus(status); } }