// Copyright (c) 2003-2005 by Leif Frenzel - see http://leiffrenzel.de package net.sf.eclipsefp.haskell.ui.dialog; import java.util.ArrayList; import java.util.List; import net.sf.eclipsefp.haskell.ui.HaskellUIPlugin; import org.eclipse.core.resources.IContainer; 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; /** content provider for a dialog that shows only subfolders of a specified * folder. * * @author Leif Frenzel */ class FolderCP implements ITreeContentProvider { // interface methods of ITreeContentProvider //////////////////////////////////////////// @Override public Object[] getChildren( final Object parentElement ) { IResource[] members = getMembers( parentElement ); List<IResource> list = new ArrayList<>(); for( int i = 0; i < members.length; i++ ) { IResource member = members[ i ]; if( member.exists() && member instanceof IFolder ) { list.add( member ); } } return list.toArray(); } @Override public Object getParent( final Object element ) { return null; } @Override public boolean hasChildren( final Object element ) { return getChildren( element ).length > 0; } @Override public Object[] getElements( final Object inputElement ) { return getChildren( inputElement ); } @Override public void dispose() { // unused } @Override public void inputChanged( final Viewer viewer, final Object oldInput, final Object newInput ) { // unused } // helping methods ////////////////// private IResource[] getMembers( final Object parentElement ) { IContainer container = ( IContainer )parentElement; IResource[] members = new IResource[ 0 ]; try { members = container.members(); } catch( CoreException ex ) { HaskellUIPlugin.getDefault().getLog().log( ex.getStatus() ); } return members; } }