package edu.stanford.nlp.io;
import java.io.File;
/**
* Implements a file filter that uses file extensions to filter files.
*
* @author cmanning 2000/01/24
*/
public class ExtensionFileFilter extends javax.swing.filechooser.FileFilter implements java.io.FileFilter {
private String extension; // = null
private boolean recursively;
/**
* Sets up Extension file filter by specifying an extension
* to accept (currently only 1) and whether to also display
* folders for recursive search.
* The passed extension may be null, in which case the filter
* will pass all files (passing an empty String does not have the same
* effect -- this would look for file names ending in a period).
*
* @param ext File extension (not including period) or null for any
* @param recurse go into folders
*/
public ExtensionFileFilter(String ext, boolean recurse) {
if (ext != null) {
if (ext.startsWith(".")) {
extension = ext;
} else {
extension = '.' + ext;
}
}
recursively = recurse;
}
/**
* Sets up an extension file filter that will recurse into sub directories.
* @param ext The extension to accept (with or without a leading period).
*/
public ExtensionFileFilter(String ext) {
this(ext, true);
}
/**
* Checks whether a file satisfies the selection filter.
*
* @param file The file
* @return true if the file is acceptable
*/
@Override
public boolean accept(File file) {
if (file.isDirectory()) {
return recursively;
} else if (extension == null) {
return true;
} else {
return file.getName().endsWith(extension);
}
}
/**
* Returns a description of what extension is being used (for file choosers).
* For example, if the suffix is "xml", the description will be
* "XML Files (*.xml)".
*
* @return description of this file filter
*/
@Override
public String getDescription() {
String ucExt = extension.substring(1).toUpperCase();
return (ucExt + " Files (*" + extension + ')');
}
}