Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ElementContentProvider.java')
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ElementContentProvider.java284
1 files changed, 0 insertions, 284 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ElementContentProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ElementContentProvider.java
deleted file mode 100644
index d9c2166ef..000000000
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/elements/ElementContentProvider.java
+++ /dev/null
@@ -1,284 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.ui.model.elements;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenCountUpdate;
-import org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate;
-import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider;
-import org.eclipse.debug.internal.ui.viewers.model.provisional.IHasChildrenUpdate;
-import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
-import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate;
-
-/**
- * @since 3.3
- */
-public abstract class ElementContentProvider implements IElementContentProvider {
-
- protected static final Object[] EMPTY = new Object[0];
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider#updateChildren(java.lang.Object, int, int, org.eclipse.debug.internal.ui.viewers.provisional.IPresentationContext, org.eclipse.debug.internal.ui.viewers.model.provisional.IElementRequestMonitor)
- */
- public void update(final IChildrenUpdate[] updates) {
- Job job = new Job("children update") { //$NON-NLS-1$
- protected IStatus run(IProgressMonitor monitor) {
- for (int i = 0; i < updates.length; i++) {
- IChildrenUpdate update = updates[i];
- if (!update.isCanceled()) {
- retrieveChildren(update);
- }
- update.done();
- }
- return Status.OK_STATUS;
- }
- };
- job.setSystem(true);
- job.setRule(getRule(updates));
- job.schedule();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider#update(org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenCountUpdate)
- */
- public void update(final IChildrenCountUpdate[] updates) {
- Job job = new Job("child count update") { //$NON-NLS-1$
- protected IStatus run(IProgressMonitor monitor) {
- for (int i = 0; i < updates.length; i++) {
- IChildrenCountUpdate update = updates[i];
- if (!update.isCanceled()) {
- retrieveChildCount(update);
- }
- update.done();
- }
- return Status.OK_STATUS;
- }
- };
- job.setSystem(true);
- job.setRule(getRule(updates));
- job.schedule();
- }
-
- /**
- * 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);
- }
- }
-
- /**
- * 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);
- }
- }
-
- /**
- * Returns the children for the given parent at the specified index in the specified context
- * or <code>null</code> if none.
- *
- * @param parent element to retrieve children for
- * @param index child index
- * @param length number of children to retrieve
- * @param context context children will be presented in
- * @return child or <code>null</code>
- * @throws CoreException if an exception occurs retrieving child
- */
- protected abstract Object[] getChildren(Object parent, int index, int length, IPresentationContext context, IViewerUpdate monitor) throws CoreException;
-
- /**
- * Returns the number of children for the given element.
- *
- * @param elementPath element that may have children
- * @param context context element will be presented in
- * @return number of children
- * @throws CoreException if an exception occurs determining child count
- */
- protected abstract int getChildCount(Object element, IPresentationContext context, IViewerUpdate monitor) throws CoreException;
-
- /**
- * Returns whether this adapter supports the given context.
- *
- * @param context
- * @return whether this adapter supports the given context
- */
- protected boolean supportsContext(IPresentationContext context) {
- return supportsContextId(context.getId());
- }
-
- /**
- * Returns whether this adapter provides content in the specified context id.
- *
- * @param id part id
- * @return whether this adapter provides content in the specified context id
- */
- protected abstract boolean supportsContextId(String id);
-
- /**
- * Returns the range of elements from <code>index</code> to <code>index + length</code>
- * or <code>null</code> if the index and range is outside the bounds of the original element array.
- *
- * @param elements the original element array
- * @param index the initial index to start copying from
- * @param length the number of elements we want to copy into the returned array
- * @return element or <code>null</code>
- */
- protected Object[] getElements(Object[] elements, int index, int length) {
- int max = elements.length;
- if (index < max && ((index + length) > max)) {
- length = max - index;
- }
- if ((index + length) <= elements.length) {
- Object[] sub = new Object[length];
- System.arraycopy(elements, index, sub, 0, length);
- return sub;
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider#update(org.eclipse.debug.internal.ui.viewers.model.provisional.IHasChildrenUpdate[])
- */
- public void update(final IHasChildrenUpdate[] updates) {
- Job job = new Job("has children update") { //$NON-NLS-1$
- protected IStatus run(IProgressMonitor monitor) {
- for (int i = 0; i < updates.length; i++) {
- IHasChildrenUpdate update = updates[i];
- if (!update.isCanceled()) {
- updateHasChildren(update);
- }
- update.done();
- }
- return Status.OK_STATUS;
- }
- };
- job.setSystem(true);
- job.setRule(getRule(updates));
- job.schedule();
- }
-
- /**
- * 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);
- }
-
- }
-
- /**
- * Returns whether the given element has children in the specified context.
- * Subclasses can override to be more efficient.
- *
- * @param element
- * @param context
- * @param monitor
- * @return
- */
- protected boolean hasChildren(Object element, IPresentationContext context, IViewerUpdate monitor) throws CoreException {
- return getChildCount(element, context, monitor) > 0;
- }
-
- /**
- * Returns a scheduling rule to use when performing the given updates or
- * <code>null</code> if none.
- *
- * @param updates
- * @return scheduling rule or <code>null</code> if none
- */
- protected ISchedulingRule getRule(IChildrenCountUpdate[] updates) {
- return null;
- }
-
- /**
- * Returns a scheduling rule to use when performing the given updates or
- * <code>null</code> if none.
- *
- * @param updates
- * @return scheduling rule or <code>null</code> if none
- */
- protected ISchedulingRule getRule(IChildrenUpdate[] updates) {
- return null;
- }
-
- /**
- * Returns a scheduling rule to use when performing the given updates or
- * <code>null</code> if none.
- *
- * @param updates
- * @return scheduling rule or <code>null</code> if none
- */
- protected ISchedulingRule getRule(IHasChildrenUpdate[] updates) {
- return null;
- }
-
-}

Back to the top