/* * Copyright (C) 2007 IsmAvatar <IsmAvatar@gmail.com> * * This file is part of LateralGM. * LateralGM is free software and comes with ABSOLUTELY NO WARRANTY. * See LICENSE for details. */ package org.lateralgm.components.impl; import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.Locale; import javax.swing.filechooser.FileFilter; public class CustomFileFilter extends FileFilter implements FilenameFilter { private ArrayList<String> ext = new ArrayList<String>(); private String desc; /** * Gets the extension part of the given filename, including the period * @param filename * @return the extension, including period */ public static String getExtension(String filename) { int p = filename.lastIndexOf("."); if (p == -1) return null; return filename.substring(p).toLowerCase(Locale.ENGLISH); } public CustomFileFilter(String desc, String...ext) { this.desc = desc; for (String element : ext) this.ext.add(element); } public boolean accept(File f) { if (f.isDirectory()) return true; return accept(f,f.getPath()); } public boolean accept(File dir, String name) { if (ext.size() == 0) return true; //if (f.isDirectory()) return true; String s = getExtension(name); if (s == null) return false; return ext.contains(s); } public String getDescription() { return desc; } public String[] getExtensions() { return ext.toArray(new String[0]); } }