001: /*******************************************************************************
002: * Copyright (c) 2000, 2006 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.ui.model;
011:
012: import org.eclipse.jface.viewers.ITreeContentProvider;
013: import org.eclipse.jface.viewers.Viewer;
014: import org.eclipse.ui.internal.util.Util;
015:
016: /**
017: * Tree content provider for objects that can be adapted to the interface
018: * {@link org.eclipse.ui.model.IWorkbenchAdapter IWorkbenchAdapter}.
019: * <p>
020: * This class may be instantiated, or subclassed.
021: * </p>
022: *
023: * @see IWorkbenchAdapter
024: * @since 3.0
025: */
026: public class BaseWorkbenchContentProvider implements
027: ITreeContentProvider {
028:
029: /**
030: * Creates a new workbench content provider.
031: *
032: */
033: public BaseWorkbenchContentProvider() {
034: super ();
035: }
036:
037: /* (non-Javadoc)
038: * Method declared on IContentProvider.
039: */
040: public void dispose() {
041: // do nothing
042: }
043:
044: /**
045: * Returns the implementation of IWorkbenchAdapter for the given
046: * object. Returns null if the adapter is not defined or the
047: * object is not adaptable.
048: * <p>
049: * </p>
050: *
051: * @param element the element
052: * @return the corresponding workbench adapter object
053: */
054: protected IWorkbenchAdapter getAdapter(Object element) {
055: return (IWorkbenchAdapter) Util.getAdapter(element,
056: IWorkbenchAdapter.class);
057: }
058:
059: /* (non-Javadoc)
060: * Method declared on ITreeContentProvider.
061: */
062: public Object[] getChildren(Object element) {
063: IWorkbenchAdapter adapter = getAdapter(element);
064: if (adapter != null) {
065: return adapter.getChildren(element);
066: }
067: return new Object[0];
068: }
069:
070: /* (non-Javadoc)
071: * Method declared on IStructuredContentProvider.
072: */
073: public Object[] getElements(Object element) {
074: return getChildren(element);
075: }
076:
077: /* (non-Javadoc)
078: * Method declared on ITreeContentProvider.
079: */
080: public Object getParent(Object element) {
081: IWorkbenchAdapter adapter = getAdapter(element);
082: if (adapter != null) {
083: return adapter.getParent(element);
084: }
085: return null;
086: }
087:
088: /* (non-Javadoc)
089: * Method declared on ITreeContentProvider.
090: */
091: public boolean hasChildren(Object element) {
092: return getChildren(element).length > 0;
093: }
094:
095: /* (non-Javadoc)
096: * Method declared on IContentProvider.
097: */
098: public void inputChanged(Viewer viewer, Object oldInput,
099: Object newInput) {
100: // do nothing
101: }
102:
103: }
|