/*
* Encog(tm) Workbench v3.4
* http://www.heatonresearch.com/encog/
* https://github.com/encog/encog-java-workbench
*
* Copyright 2008-2016 Heaton Research, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* For more information on Heaton Research copyrights, licenses
* and trademarks visit:
* http://www.heatonresearch.com/copyright
*/
package org.encog.workbench.util;
import java.io.File;
import javax.swing.filechooser.FileFilter;
/**
* A filter for the Java standard file open and save dialogs that allows files
* to be filtered by extension.
* @author jheaton
*
*/
public class ExtensionFilter extends FileFilter {
public static String getExtension(final File file) {
final String filename = file.getName();
final String ext = filename.lastIndexOf(".") == -1 ? null : filename
.substring(filename.lastIndexOf(".") + 1, filename.length());
return ext;
}
/**
* Extensions supported.
*/
private final String extensions[];
/**
* The description of these extensions.
*/
private final String description;
public ExtensionFilter(final String description, final String extension) {
this(description, new String[] { extension });
}
public ExtensionFilter(final String description, final String extensions[]) {
this.description = description;
this.extensions = extensions.clone();
}
public boolean accept(final File file) {
if (file.isDirectory()) {
return true;
}
final int count = this.extensions.length;
final String path = file.getAbsolutePath();
for (int i = 0; i < count; i++) {
final String ext = this.extensions[i];
if (path.endsWith(ext)
&& path.charAt(path.length() - ext.length()) == '.') {
return true;
}
}
return false;
}
/**
* Get the description.
*/
public String getDescription() {
return this.description == null ? this.extensions[0] : this.description;
}
}