SimpleFileFilter.java Source code

Java tutorial

Introduction

Here is the source code for SimpleFileFilter.java

Source

//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