package org.erlide.tracing.core.mvc.view;
import java.util.Collection;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.erlide.tracing.core.mvc.model.treenodes.ITreeNode;
/**
* Content provider for tree.
*
* @author Piotr Dorobisz
*
*/
public class TreeContentProvider
implements/* ILazyTreeContentProvider */ITreeContentProvider {
private Collection<ITreeNode> list;
private final boolean hasChildrenValue;
/**
* Creates content provider.
*
* @param treeViewer
* tree viewer that will be using this content provider
* @param hasChildrenValue
* value which should be returned when
* {@link #hasChildren(Object)} is called
*/
public TreeContentProvider(final TreeViewer treeViewer,
final boolean hasChildrenValue) {
this.hasChildrenValue = hasChildrenValue;
}
@Override
public void dispose() {
}
@Override
@SuppressWarnings("unchecked")
public void inputChanged(final Viewer viewer, final Object oldInput,
final Object newInput) {
list = (Collection<ITreeNode>) newInput;
}
@Override
public Object[] getChildren(final Object element) {
return ((ITreeNode) element).getChildren().toArray();
}
@Override
public Object[] getElements(final Object element) {
return list.toArray();
}
@Override
public Object getParent(final Object element) {
return ((ITreeNode) element).getParent();
}
@Override
public boolean hasChildren(final Object element) {
// return ((ITreeNode) element).hasChildren();
// for optimization purposes always return true
return hasChildrenValue;
}
}