/** * (c) 2011, Alejandro Serrano * Released under the terms of the EPL. */ package net.sf.eclipsefp.haskell.ui.internal.editors.cabal.forms; import java.util.ArrayList; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IResource; import org.eclipse.ui.model.WorkbenchContentProvider; public class LimitedWorkbenchContentProvider extends WorkbenchContentProvider { private final boolean onlyDirs; private final boolean showHidden; public LimitedWorkbenchContentProvider() { this(false, false); } public LimitedWorkbenchContentProvider(final boolean onlyDirs) { this(onlyDirs, false); } public LimitedWorkbenchContentProvider(final boolean onlyDirs, final boolean showHidden) { this.onlyDirs = onlyDirs; this.showHidden = showHidden; } @Override public Object[] getElements( final Object element ) { return super.getElements( element ); } @Override public Object[] getChildren( final Object element ) { ArrayList<Object> objs = new ArrayList<>(); for ( Object inner : super.getChildren( element )) { boolean include = true; if( !showHidden && ( ( IResource )inner ).getName().startsWith( "." ) ) { include = false; } if (onlyDirs && !(inner instanceof IFolder)) { include = false; } if (include) { objs.add( inner ); } } return objs.toArray(); } // private Object[] filter(final Object[] elements) { // ArrayList<Object> objs = new ArrayList<Object>(); // for ( Object inner : elements) { // IResource resource = (IResource)inner; // if (!resource.getName().startsWith( "." )) { // objs.add( resource ); // } // } // return objs.toArray(); // } }