Frames | No Frames |
1: /* ======================================================================== 2: * JCommon : a free general purpose class library for the Java(tm) platform 3: * ======================================================================== 4: * 5: * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors. 6: * 7: * Project Info: http://www.jfree.org/jcommon/index.html 8: * 9: * This library is free software; you can redistribute it and/or modify it 10: * under the terms of the GNU Lesser General Public License as published by 11: * the Free Software Foundation; either version 2.1 of the License, or 12: * (at your option) any later version. 13: * 14: * This library is distributed in the hope that it will be useful, but 15: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 16: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 17: * License for more details. 18: * 19: * You should have received a copy of the GNU Lesser General Public 20: * License along with this library; if not, write to the Free Software 21: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 22: * USA. 23: * 24: * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 25: * in the United States and other countries.] 26: * 27: * ------------------------ 28: * ExtensionFileFilter.java 29: * ------------------------ 30: * (C) Copyright 2000-2004, by Object Refinery Limited. 31: * 32: * Original Author: David Gilbert (for Object Refinery Limited); 33: * Contributor(s): -; 34: * 35: * $Id: FilesystemFilter.java,v 1.5 2005/10/18 13:18:34 mungady Exp $ 36: * 37: * Changes (from 26-Oct-2001) 38: * -------------------------- 39: * 01-Jun-2005 : Updated javadoc. 40: */ 41: package org.jfree.ui; 42: 43: import java.io.File; 44: import java.io.FilenameFilter; 45: import javax.swing.filechooser.FileFilter; 46: 47: /** 48: * A filesystem filter. 49: * 50: * @author David Gilbert 51: */ 52: public class FilesystemFilter extends FileFilter implements FilenameFilter { 53: 54: /** The file extension, which should be accepted. */ 55: private String[] fileext; 56: /** The filter description. */ 57: private String descr; 58: /** A flag indicating whether to accept directories. */ 59: private boolean accDirs; 60: 61: /** 62: * Creates a new filter. 63: * 64: * @param fileext the file extension. 65: * @param descr the description. 66: */ 67: public FilesystemFilter(final String fileext, final String descr) { 68: this(fileext, descr, true); 69: } 70: 71: /** 72: * Creates a new filter. 73: * 74: * @param fileext the file extension. 75: * @param descr the description. 76: * @param accDirs accept directories? 77: */ 78: public FilesystemFilter(final String fileext, final String descr, 79: final boolean accDirs) { 80: this(new String[]{fileext}, descr, accDirs); 81: } 82: 83: /** 84: * Creates a new filter. 85: * 86: * @param fileext the file extension. 87: * @param descr the description. 88: * @param accDirs accept directories? 89: * @throws NullPointerException if the file extensions are null. 90: */ 91: public FilesystemFilter(final String[] fileext, final String descr, 92: final boolean accDirs) { 93: this.fileext = (String[]) fileext.clone(); 94: this.descr = descr; 95: this.accDirs = accDirs; 96: } 97: 98: 99: /** 100: * Returns <code>true</code> if the file is accepted, and <code>false</code> otherwise. 101: * 102: * @param dir the directory. 103: * @param name the file name. 104: * @return A boolean. 105: */ 106: public boolean accept(final File dir, final String name) { 107: final File f = new File(dir, name); 108: if (f.isDirectory() && acceptsDirectories()) { 109: return true; 110: } 111: 112: for (int i = 0; i < fileext.length; i++) { 113: if (name.endsWith(this.fileext[i])) { 114: return true; 115: } 116: } 117: return false; 118: } 119: 120: /** 121: * Returns <code>true</code> if the specified file matches the requirements of this 122: * filter, and <code>false</code> otherwise. 123: * 124: * @param dir the file or directory. 125: * @return A boolean. 126: */ 127: public boolean accept(final File dir) { 128: if (dir.isDirectory() && acceptsDirectories()) { 129: return true; 130: } 131: 132: for (int i = 0; i < fileext.length; i++) { 133: if (dir.getName().endsWith(this.fileext[i])) { 134: return true; 135: } 136: } 137: return false; 138: } 139: 140: /** 141: * Returns the filter description. 142: * 143: * @return The filter description. 144: */ 145: public String getDescription() { 146: return this.descr; 147: } 148: 149: /** 150: * Sets the flag that controls whether or not the filter accepts directories. 151: * 152: * @param b a boolean. 153: */ 154: public void acceptDirectories(final boolean b) { 155: this.accDirs = b; 156: } 157: 158: /** 159: * Returns the flag that indicates whether or not the filter accepts directories. 160: * 161: * @return A boolean. 162: */ 163: public boolean acceptsDirectories() { 164: return this.accDirs; 165: } 166: 167: }