content: package tern.eclipse.swt.samples;
  
  import java.io.File;
  
  import org.eclipse.jface.viewers.ITreeContentProvider;
  import org.eclipse.jface.viewers.Viewer;
  
  /**
   * This class provides the content for the tree in FileTree
   */
  
  public class FileTreeContentProvider implements ITreeContentProvider {
  	/**
  	 * Gets the children of the specified object
  	 * 
  	 * @param arg0
  	 *            the parent object
  	 * @return Object[]
  	 */
  	public Object[] getChildren(Object arg0) {
  		// Return the files and subdirectories in this directory
  		return ((File) arg0).listFiles();
  	}
  
  	/**
  	 * Gets the parent of the specified object
  	 * 
  	 * @param arg0
  	 *            the object
  	 * @return Object
  	 */
  	public Object getParent(Object arg0) {
  		// Return this file's parent file
  		return ((File) arg0).getParentFile();
  	}
  
  	/**
  	 * Returns whether the passed object has children
  	 * 
  	 * @param arg0
  	 *            the parent object
  	 * @return boolean
  	 */
  	public boolean hasChildren(Object arg0) {
  		// Get the children
  		Object[] obj = getChildren(arg0);
  
  		// Return whether the parent has children
  		return obj == null ? false : obj.length > 0;
  	}
  
  	/**
  	 * Gets the root element(s) of the tree
  	 * 
  	 * @param arg0
  	 *            the input data
  	 * @return Object[]
  	 */
  	public Object[] getElements(Object arg0) {
  		// These are the root elements of the tree
  		// We don't care what arg0 is, because we just want all
  		// the root nodes in the file system
  		return ((File) arg0).listFiles();
  	}
  
  	/**
  	 * Disposes any created resources
  	 */
  	public void dispose() {
  		// Nothing to dispose
  	}
  
  	/**
  	 * Called when the input changes
  	 * 
  	 * @param arg0
  	 *            the viewer
  	 * @param arg1
  	 *            the old input
  	 * @param arg2
  	 *            the new input
  	 */
  	public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
  		// Nothing to change
  	}
  }