/*
*
* Copyright ( c ) 2007 , Oracle and / or its affiliates . All rights reserved .
*
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions
* are met :
*
* - Redistributions of source code must retain the above copyright
* notice , this list of conditions and the following disclaimer .
*
* - Redistributions in binary form must reproduce the above copyright
* notice , this list of conditions and the following disclaimer in the
* documentation and / or other materials provided with the distribution .
*
* - Neither the name of Oracle nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission .
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS " AS
* IS " AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO ,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL ,
* EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT LIMITED TO ,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE , DATA , OR
* PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT ( INCLUDING
* NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
*/
import javax.swing.*;
import javax.swing.filechooser.*;
import java.io.File;
import java.util.Hashtable;
/**
* A convenience implementation of the FileView interface that
* manages name , icon , traversable , and file type information .
*
* This this implemention will work well with file systems that use
* " dot " extensions to indicate file type . For example : " picture . gif "
* as a gif image .
*
* If the java . io . File ever contains some of this information , such as
* file type , icon , and hidden file inforation , this implementation may
* become obsolete . At minimum , it should be rewritten at that time to
* use any new type information provided by java . io . File
*
* Example :
* JFileChooser chooser = new JFileChooser ( ) ;
* fileView = new ExampleFileView ( ) ;
* fileView . putIcon ( " jpg " , new ImageIcon ( " images / jpgIcon . jpg " ) ) ;
* fileView . putIcon ( " gif " , new ImageIcon ( " images / gifIcon . gif " ) ) ;
* chooser . setFileView ( fileView ) ;
*
* @ author Jeff Dinkins
*/
public class ExampleFileView extends FileView {
private Hashtable<String, Icon> icons = new Hashtable<>(5 );
private Hashtable<File, String> fileDescriptions = new Hashtable<>(5 );
private Hashtable<String, String> typeDescriptions = new Hashtable<>(5 );
/**
* The name of the file . Do nothing special here . Let
* the system file view handle this .
* @ see FileView # getName
*/
public String getName(File f) {
return null ;
}
/**
* Adds a human readable description of the file .
*/
public void putDescription(File f, String fileDescription) {
fileDescriptions.put(f, fileDescription);
}
/**
* A human readable description of the file .
*
* @ 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 .
*/
public void putTypeDescription(String extension, String typeDescription) {
typeDescriptions.put(extension, typeDescription);
}
/**
* 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 .
*/
public void putTypeDescription(File f, String typeDescription) {
putTypeDescription(getExtension(f), typeDescription);
}
/**
* A human readable description of the type of the file .
*
* @ see FileView # getTypeDescription
*/
public String getTypeDescription(File f) {
return typeDescriptions.get(getExtension(f));
}
/**
* Convenience method that returns the " dot " extension for the
* given file .
*/
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 .
*/
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 .
*
* @ 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 directory is traversable or not . Generic implementation
* returns true for all directories and special folders .
*
* 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 directory that makes it look like a regular
* document , and return false for isTraversable to not allow users to
* descend into the directory .
*
* @ see FileView # isTraversable
*/
public Boolean isTraversable(File f) {
// if (some_reason) {
// return Boolean.FALSE;
// }
return null ; // Use default from FileSystemView
};
}
Messung V0.5 in Prozent C=92 H=100 G=95
¤ Dauer der Verarbeitung: 0.16 Sekunden
(vorverarbeitet am 2026-09-02)
¤
*© Formatika GbR, Deutschland