/*
* $Id: SuffixFilenameFilter.java,v 1.1.1.1 2005/04/07 18:36:22 pocho Exp $
*/
import java.io.File;
import java.io.FilenameFilter;
import javax.swing.filechooser.FileFilter;
/**
* Files filter that filters files by their suffix (or extension).
* It can be used as file filter for {@link javax.swing.JFileChooser} or
* as file filter for io operations (@link java.io.File#listFiles(java.io.FilenameFilter)}.
*
* @version $Name: $ - $Revision: 1.1.1.1 $ - $Date: 2005/04/07 18:36:22 $
* TODO Test
*/
public class SuffixFilenameFilter extends FileFilter implements FilenameFilter {
/** Suffix of files */
private String suffix;
/** Description of suffix (i.e. .jpg may have description JPG)*/
private String description;
/** Full description of filter - (i.e. JPG (.jpg) */
private String fullDescription;
/** Indicates whether to use suffix in brackets after description */
private boolean useExtensionInDescription = true;
/**
* Creates new instance with a given accepted suffix of file names.
*
* @param suffix used suffix of files (i.e. extension ".xml")
*/
public SuffixFilenameFilter(String suffix) {
this(suffix, null);
}
/**
* Creates new instance with a given accepted suffix of file names.
*
* @param suffix used suffix of files (i.e. extension ".xml")
*/
public SuffixFilenameFilter(String suffix, String description) {
super();
setSuffix(suffix);
setDescription(description);
}
/**
* Indicates whether the name is accepted by this filter or not.
* File must ending with given mask of this filter.
*
* @param dir File
* @param name String
* @return boolean
*/
public boolean accept(File dir, String name){
if (name.lastIndexOf(suffix) > 0)
return true;
else
return false;
}
public boolean accept(File file) {
if (file != null) {
if (file.isDirectory() || accept(file.getParentFile(), file.getName()))
return true;
}
return false;
}
/**
* Returns description of this filter - if {@link #isExtensionInDescription()}
* is <code>true</code> then it creates description in following shape:<br>
* <code>description (suffix)</code>. Otherwise it only returns description.
*
* @see javax.swing.filechooser.FileFilter#getDescription()
*/
public String getDescription() {
if (fullDescription == null && isExtensionInDescription()) {
fullDescription = description==null ? "(" : description + " (";
fullDescription += suffix + ")";
}
return fullDescription;
}
/**
* Sets whether to use suffix in description of this filter.
*
* @param b
*/
public void setExtensionInDescription(boolean b) {
useExtensionInDescription = b;
fullDescription = null;
}
public boolean isExtensionInDescription() {
return useExtensionInDescription;
}
public void setSuffix(String suffix) {
this.suffix = suffix;
fullDescription = null;
}
public void setDescription(String description) {
this.description = description;
fullDescription = null;
}
public String getExtension() {
return suffix;
}
public String getSimpleDescription() {
return description;
}
}