2 //Title: Testing viewer
4 //Copyright: Copyright (c) 1998
5 //Author: User Interface Group (Nizhny Novgorod)
15 import javax.swing.filechooser.*;
18 public class ExtensionFileFilter extends FileFilter
20 private Hashtable filters = null;
21 private String description = null;
22 private String fullDescription = null;
23 private boolean useExtensionsInDescription = true;
26 //=======================================================================//
28 //=======================================================================//
29 public ExtensionFileFilter()
31 this.filters = new Hashtable();
34 public ExtensionFileFilter(String extension, String description)
37 if(extension != null) addExtension(extension);
38 if(description != null) setDescription(description);
41 public ExtensionFileFilter(String[] filters)
46 public ExtensionFileFilter(String[] filters, String description)
49 for (int i = 0; i < filters.length; i++)
51 // add filters one by one
52 addExtension(filters[i]);
54 if(description != null) setDescription(description);
58 //=======================================================================//
60 //=======================================================================//
61 public boolean accept(File f)
65 if(f.isDirectory()) return true;
67 String extension = getExtension(f);
68 if (extension != null && filters.get(getExtension(f)) != null)
75 public String getDescription()
77 if (fullDescription == null)
79 if (description == null || isExtensionListInDescription())
81 fullDescription = (description == null) ? "(" : description + " (";
83 // build the description from the extension list
84 Enumeration extensions = filters.keys();
85 if (extensions != null)
87 fullDescription += "." + (String) extensions.nextElement();
88 while (extensions.hasMoreElements())
89 fullDescription += ", " + (String) extensions.nextElement();
92 fullDescription += ")";
95 fullDescription = description;
98 return fullDescription;
102 public String[] getExtensions()
106 if (filters.size() == 0)
111 String[] ext = new String[filters.size()];
114 Enumeration anEnum = filters.keys();
118 while (anEnum.hasMoreElements())
120 ext[i] = new String((String) anEnum.nextElement());
127 //=======================================================================//
128 // Additional function
129 //=======================================================================//
130 public String getExtension(File f)
133 return getExtension(f.getName());
138 public String getExtension(String filename)
140 if (filename != null)
142 int k = filename.lastIndexOf(System.getProperty("file.separator"));
143 String name = filename.substring(k+1);
144 int i = name.lastIndexOf('.');
145 if (i>0 && i<name.length()-1)
146 return name.substring(i+1).toLowerCase();
152 public void addExtension(String extension)
155 filters = new Hashtable(5);
157 filters.put(extension.toLowerCase(), this);
158 fullDescription = null;
161 public void setDescription(String description)
163 this.description = description;
164 fullDescription = null;
167 public void setExtensionListInDescription(boolean b)
169 useExtensionsInDescription = b;
170 fullDescription = null;
173 public boolean isExtensionListInDescription()
175 return useExtensionsInDescription;