package org.testng.eclipse.launch.components;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jface.viewers.CheckboxTreeViewer;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.ui.model.WorkbenchLabelProvider;
public class ProjectBrowserComposite {
protected CheckboxTreeViewer m_viewer;
protected ILabelProvider m_labelProvider;
protected ITreeContentProvider m_contentProvider;
protected Object m_rootInput;
protected ViewerFilter m_projectContentFilter;
public ProjectBrowserComposite(final Composite parent) {
m_viewer = new CheckboxTreeViewer(parent);
m_labelProvider = new WorkbenchLabelProvider();
m_contentProvider = new ProjectContentProvider();
m_viewer.setLabelProvider(m_labelProvider);
m_viewer.setContentProvider(m_contentProvider);
m_viewer.setSelection(new StructuredSelection(new IResource[0]));
}
public void setSelection(final Object[] selectedElements) {
m_viewer.setCheckedElements(selectedElements);
}
public void setInput(IJavaProject input) {
if(null == input) {
return;
}
if(null != m_projectContentFilter) {
m_viewer.removeFilter(m_projectContentFilter);
}
m_rootInput = input;
m_projectContentFilter = Filters.createProjectContentFilter(input);
m_viewer.addFilter(m_projectContentFilter);
m_viewer.setSelection(new StructuredSelection(new IResource[0]));
m_viewer.setInput(input.getProject().getParent());
}
public Tree getTree() {
return m_viewer.getTree();
}
public Object[] getCheckedElements() {
return m_viewer.getCheckedElements();
}
public void addViewerFilter(ViewerFilter vf) {
m_viewer.addFilter(vf);
}
public static class ProjectContentProvider implements ITreeContentProvider {
/**
* @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
*/
public Object[] getChildren(Object parentElement) {
if(parentElement instanceof IContainer) {
try {
return ((IContainer) parentElement).members();
} catch(CoreException ce) {
;
}
}
return null;
}
/**
* @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
*/
public Object getParent(Object element) {
return ((IResource) element).getParent();
}
/**
* @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
*/
public boolean hasChildren(Object element) {
IResource resource = (IResource) element;
if(IResource.FILE == resource.getType()) {
return false;
} else {
return true;
}
}
/**
* @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
*/
public Object[] getElements(Object inputElement) {
return getChildren(inputElement);
}
/**
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
public void dispose() {
}
/**
* @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) {
}
}
}