package org.exist.client;
import java.io.File;
import java.util.Iterator;
import java.util.Vector;
import javax.swing.filechooser.FileFilter;
import org.exist.util.MimeTable;
/**
* A FileFilter that filters for files based on their extension
* Uses the filename extensions defined in mime-types.xml
*
* Java 6 API has a similar FileNameExtensionFilter
*/
public class MimeTypeFileFilter extends FileFilter
{
private String description = null;
private Vector extensions = null;
public MimeTypeFileFilter(String mimeType)
{
description = MimeTable.getInstance().getContentType(mimeType).getDescription();
extensions = MimeTable.getInstance().getAllExtensions(mimeType);
}
public boolean accept(File file)
{
if(file.isDirectory()) //permit directories to be viewed
return true;
int extensionOffset = file.getName().lastIndexOf('.'); //do-not allow files without an extension
if(extensionOffset == -1)
return false;
//check the extension is that of a file as defined in mime-types.xml
String fileExtension = file.getName().substring(extensionOffset).toLowerCase();
for(Iterator itExtensions = extensions.iterator(); itExtensions.hasNext();)
{
String extension = (String)itExtensions.next();
if(fileExtension.equals(extension))
{
return true;
}
}
return false;
}
public String getDescription()
{
String description = this.description + " (";
for(Iterator itExtensions = extensions.iterator(); itExtensions.hasNext();)
{
description += (String)itExtensions.next();
if(itExtensions.hasNext())
description += ' ';
}
return description + ")";
}
}