/*******************************************************************************
* Copyright (c) 2007-2008 Peter Centgraf.
* 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 :
* Peter Centgraf - initial implementation
*******************************************************************************/
package org.eclipse.nebula.jface.galleryviewer;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
/**
* Adaptor that converts an {@link IStructuredContentProvider} into an
* {@link ITreeContentProvider} that places the nested contents inside a single
* root node.
*
* @author Peter Centgraf
* @since Dec 6, 2007
*/
public class FlatTreeContentProvider implements ITreeContentProvider {
protected final Object rootNode;
protected final IStructuredContentProvider provider;
protected final Object[] roots;
/**
* Adapts an {@link IStructuredContentProvider} into an
* {@link ITreeContentProvider} that places the nested contents inside a
* single root node.
*
* @param provider
* the {@link IStructuredContentProvider} to adapt
*/
public FlatTreeContentProvider(IStructuredContentProvider provider) {
this(provider, "");
}
/**
* Adapts an {@link IStructuredContentProvider} into an
* {@link ITreeContentProvider} that places the nested contents inside the
* given root node.
*
* @param provider
* the {@link IStructuredContentProvider} to adapt
* @param the
* single root node for the tree
*/
public FlatTreeContentProvider(IStructuredContentProvider provider, Object rootNode) {
this.provider = provider;
this.rootNode = rootNode;
roots = new Object[] { rootNode };
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
*/
public Object getParent(Object element) {
if (element == rootNode) {
return null;
} else {
return rootNode;
}
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
*/
public boolean hasChildren(Object element) {
return element == rootNode;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
*/
public Object[] getElements(Object inputElement) {
return roots;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
*/
public Object[] getChildren(Object parentElement) {
return provider.getElements(parentElement);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
public void dispose() {
provider.dispose();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
* java.lang.Object, java.lang.Object)
*/
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
provider.inputChanged(viewer, oldInput, newInput);
}
}