package org.activiti.designer.eclipse.deployment; import org.activiti.designer.eclipse.Logger; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.widgets.Control; public class IncludeFilesTreeContentProvider implements ITreeContentProvider { public Object[] getElements(Object parent) { if (parent instanceof IFolder) { try { return ((IFolder) parent).members(); } catch (CoreException e) { Logger.logError(e); } } return new Object[0]; } public Object[] getChildren(Object parent) { try { if (parent instanceof IFolder) { return ((IFolder) parent).members(); } } catch (CoreException e) { Logger.logError(e); } return new Object[0]; } public Object getParent(Object element) { if (element != null && element instanceof IResource) { return ((IResource) element).getParent(); } return null; } public boolean hasChildren(Object element) { if (element instanceof IFolder) return getChildren(element).length > 0; return false; } public void dispose() { } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { asyncRefresh(viewer); } private void asyncRefresh(final Viewer viewer) { Control control = viewer.getControl(); if (!control.isDisposed()) { control.getDisplay().asyncExec(new Runnable() { public void run() { if (!viewer.getControl().isDisposed()) { viewer.refresh(); } } }); } } }