/* ===========================================================
* TradeManager : a application to trade strategies for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2011-2011, by Simon Allen and Contributors.
*
* Project Info: org.trade
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
* [Java is a trademark or registered trademark of Oracle, Inc.
* in the United States and other countries.]
*
* (C) Copyright 2011-2011, by Simon Allen and Contributors.
*
* Original Author: Simon Allen;
* Contributor(s): -;
*
* Changes
* -------
*
*/
package org.trade.ui.base;
import java.io.File;
import java.util.Hashtable;
import javax.swing.Icon;
import javax.swing.filechooser.FileView;
/**
*
* @version $Id: ExampleFileChooser.java,v 1.1 2001/10/18 01:32:16 simon Exp $
* @author Simon Allen
*/
public class ExampleFileChooser extends FileView {
private Hashtable<String, Icon> icons = new Hashtable<String, Icon>(5);
private Hashtable<File, String> fileNames = new Hashtable<File, String>(5);
private Hashtable<File, String> fileDescriptions = new Hashtable<File, String>(5);
private Hashtable<String, String> typeDescriptions = new Hashtable<String, String>(5);
/**
* The name of the file.
*
*
* @param f
* File
* @param fileName
* String
* @see #getName
*/
public void setName(File f, String fileName) {
fileNames.put(f, fileName);
}
/**
* The name of the file.
*
*
*
* @param f
* File
* @return String
* @see #setName * @see FileView#getName
*/
public String getName(File f) {
return fileNames.get(f);
}
/**
* Adds a human readable description of the file.
*
* @param f
* File
* @param fileDescription
* String
*/
public void putDescription(File f, String fileDescription) {
fileDescriptions.put(f, fileDescription);
}
/**
* A human readable description of the file.
*
*
* @param f
* File
* @return String
* @see FileView#getDescription
*/
public String getDescription(File f) {
return fileDescriptions.get(f);
};
/**
* Adds a human readable type description for files. Based on "dot"
* extension strings, e.g: ".gif". Case is ignored.
*
* @param extension
* String
* @param typeDescription
* String
*/
public void putTypeDescription(String extension, String typeDescription) {
typeDescriptions.put(typeDescription, extension);
}
/**
* Adds a human readable type description for files of the type of the
* passed in file. Based on "dot" extension strings, e.g: ".gif". Case is
* ignored.
*
* @param f
* File
* @param typeDescription
* String
*/
public void putTypeDescription(File f, String typeDescription) {
putTypeDescription(getExtension(f), typeDescription);
}
/**
* A human readable description of the type of the file.
*
*
* @param f
* File
* @return String
* @see FileView#getTypeDescription
*/
public String getTypeDescription(File f) {
return typeDescriptions.get(getExtension(f));
}
/**
* Conveinience method that returnsa the "dot" extension for the given file.
*
* @param f
* File
* @return String
*/
public String getExtension(File f) {
String name = f.getName();
if (name != null) {
int extensionIndex = name.lastIndexOf('.');
if (extensionIndex < 0) {
return null;
}
return name.substring(extensionIndex + 1).toLowerCase();
}
return null;
}
/**
* Adds an icon based on the file type "dot" extension string, e.g: ".gif".
* Case is ignored.
*
* @param extension
* String
* @param icon
* Icon
*/
public void putIcon(String extension, Icon icon) {
icons.put(extension, icon);
}
/**
* Icon that reperesents this file. Default implementation returns null. You
* might want to override this to return something more interesting.
*
*
* @param f
* File
* @return Icon
* @see FileView#getIcon
*/
public Icon getIcon(File f) {
Icon icon = null;
String extension = getExtension(f);
if (extension != null) {
icon = icons.get(extension);
}
return icon;
}
/**
* Whether the file is hidden or not. This implementation returns true if
* the filename starts with a "."
*
*
* @param f
* File
* @return Boolean
* @see FileView#isHidden
*/
public Boolean isHidden(File f) {
String name = f.getName();
if ((name != null) && !name.equals("") && (name.charAt(0) == '.')) {
return Boolean.TRUE;
} else {
return Boolean.FALSE;
}
};
/**
* Whether the directory is traversable or not. Generic implementation
* returns true for all directories.
*
* You might want to subtype ExampleFileView to do somethimg more
* interesting, such as recognize compound documents directories; in such a
* case you might return a special icon for the diretory that makes it look
* like a regular document, and return false for isTraversable to not allow
* users to descend into the directory.
*
*
* @param f
* File
* @return Boolean
* @see FileView#isTraversable
*/
public Boolean isTraversable(File f) {
if (f.isDirectory()) {
return Boolean.TRUE;
} else {
return Boolean.FALSE;
}
};
}