1 /*******************************************************************************
2  * Copyright (c) 2000, 2015 IBM Corporation and others.
3  *
4  * This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License 2.0
6  * which accompanies this distribution, and is available at
7  * https://www.eclipse.org/legal/epl-2.0/
8  *
9  * SPDX-License-Identifier: EPL-2.0
10  *
11  * Contributors:
12  *     IBM Corporation - initial API and implementation
13  *******************************************************************************/
14 package org.eclipse.ui.model;
15 
16 import org.eclipse.core.runtime.Adapters;
17 import org.eclipse.jface.viewers.ITreeContentProvider;
18 import org.eclipse.jface.viewers.Viewer;
19 
20 /**
21  * Tree content provider for objects that can be adapted to the interface
22  * {@link org.eclipse.ui.model.IWorkbenchAdapter IWorkbenchAdapter}.
23  * <p>
24  * This class may be instantiated, or subclassed.
25  * </p>
26  *
27  * @see IWorkbenchAdapter
28  * @since 3.0
29  */
30 public class BaseWorkbenchContentProvider implements ITreeContentProvider {
31 
32 	/**
33 	 * Creates a new workbench content provider.
34 	 *
35 	 */
BaseWorkbenchContentProvider()36 	public BaseWorkbenchContentProvider() {
37 		super();
38 	}
39 
40 	@Override
dispose()41 	public void dispose() {
42 		// do nothing
43 	}
44 
45 	/**
46 	 * Returns the implementation of IWorkbenchAdapter for the given object. Returns
47 	 * null if the adapter is not defined or the object is not adaptable.
48 	 *
49 	 * @param element the element
50 	 * @return the corresponding workbench adapter object
51 	 */
getAdapter(Object element)52 	protected IWorkbenchAdapter getAdapter(Object element) {
53 		return Adapters.adapt(element, IWorkbenchAdapter.class);
54 	}
55 
56 	@Override
getChildren(Object element)57 	public Object[] getChildren(Object element) {
58 		IWorkbenchAdapter adapter = getAdapter(element);
59 		if (adapter != null) {
60 			return adapter.getChildren(element);
61 		}
62 		return new Object[0];
63 	}
64 
65 	@Override
getElements(Object element)66 	public Object[] getElements(Object element) {
67 		return getChildren(element);
68 	}
69 
70 	@Override
getParent(Object element)71 	public Object getParent(Object element) {
72 		IWorkbenchAdapter adapter = getAdapter(element);
73 		if (adapter != null) {
74 			return adapter.getParent(element);
75 		}
76 		return null;
77 	}
78 
79 	@Override
hasChildren(Object element)80 	public boolean hasChildren(Object element) {
81 		return getChildren(element).length > 0;
82 	}
83 
84 	@Override
inputChanged(Viewer viewer, Object oldInput, Object newInput)85 	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
86 		// do nothing
87 	}
88 
89 }
90