Java tutorial
//revised from prefuse import java.io.File; import java.util.ArrayList; import java.util.Iterator; import javax.swing.filechooser.FileFilter; /** * A simple file filter for a particular file extension. * * @author <a href="http://jheer.org">jeffrey heer</a> */ public class SimpleFileFilter extends FileFilter { private ArrayList exts = new ArrayList(); private String desc; private Object data; /** * Create a new SimpleFileFilter. * @param ext the file extension * @param desc a description of the file type */ public SimpleFileFilter(String ext, String desc) { addExtension(ext); this.desc = desc; } /** * Create a new SimpleFileFilter. * @param ext the file extension * @param desc a description of the file type * @param data user-provided attached object */ public SimpleFileFilter(String ext, String desc, Object data) { addExtension(ext); this.desc = desc; this.data = data; } /** * Add a file extension to this file filter. * @param ext the file extension to add */ public void addExtension(String ext) { exts.add(ext.toLowerCase()); } /** * @see javax.swing.filechooser.FileFilter#accept(java.io.File) */ public boolean accept(File f) { if (f == null) return false; if (f.isDirectory()) return true; String extension = getExtension(f); if (extension == null) return false; for (Iterator iter = exts.iterator(); iter.hasNext();) { String ext = (String) iter.next(); if (ext.equalsIgnoreCase(extension)) return true; } return false; } /** * Returns the extension for a file or null if there is none * @param f the input file * @return the file extension, or null if none */ public static String getExtension(File f) { return (f != null ? getExtension(f.getName()) : null); } /** * Returns the extension for a file or null if there is none * @param filename the input filename * @return the file extension, or null if none */ public static String getExtension(String filename) { int i = filename.lastIndexOf('.'); if (i > 0 && i < filename.length() - 1) { return filename.substring(i + 1).toLowerCase(); } else { return null; } } /** * Get a user-provided attached object. * @return the user-provided attached object */ public Object getUserData() { return data; } /** * @see javax.swing.filechooser.FileFilter#getDescription() */ public String getDescription() { return desc; } /** * Get the first file extension associated with this filter. * @return the first file extension associated with this filter */ public String getExtension() { return (String) exts.get(0); } } // end of class SimpleFileFilter