00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 package ikayaki.gui;
00024
00025 import javax.swing.filechooser.FileFilter;
00026 import java.io.File;
00027
00033 public class GenericFileFilter extends FileFilter implements java.io.FileFilter {
00034
00038 private String[] extensions;
00039
00043 private String description;
00044
00051 public GenericFileFilter(String description, String... extensions) {
00052 if (extensions == null) {
00053 extensions = new String[0];
00054 }
00055 if (description == null) {
00056 description = "";
00057 }
00058 for (int i = 0; i < extensions.length; i++) {
00059 while (extensions[i].startsWith(".")) {
00060 extensions[i] = extensions[i].substring(1);
00061 }
00062 }
00063 if (extensions.length > 0) {
00064 description += " (*." + extensions[0];
00065 for (int i = 1; i < extensions.length; i++) {
00066 description += ", *." + extensions[i];
00067 }
00068 description += ")";
00069
00070
00071 }
00072
00073 this.extensions = extensions;
00074 this.description = description;
00075 }
00076
00083 public boolean accept(File pathname) {
00084 if (pathname.isDirectory()) {
00085 return true;
00086 }
00087
00088 String extension = getExtension(pathname);
00089 if (extension != null) {
00090 for (int i = 0; i < this.extensions.length; i++) {
00091 if (extension.equals(this.extensions[i])) {
00092 return true;
00093 }
00094 }
00095 }
00096 return false;
00097 }
00098
00105 private static String getExtension(File f) {
00106 String ext = null;
00107 String s = f.getName();
00108 int i = s.lastIndexOf('.');
00109 if (i > 0 && i < s.length() - 1) {
00110 ext = s.substring(i + 1).toLowerCase();
00111 }
00112 return ext;
00113 }
00114
00118 public String getDescription() {
00119 return this.description;
00120 }
00121 }