ExportFileFilter.java
上传用户:xiekaiwei
上传日期:2015-07-04
资源大小:620k
文件大小:9k
源码类别:

Telnet客户端

开发平台:

Java

  1. package org.tn5250j.spoolfile;
  2. /**
  3.  *
  4.  * This is taken from Sun's demo ExampleFileFiler.java
  5.  *
  6.  * A convenience implementation of FileFilter that filters out
  7.  * all files except for those type extensions that it knows about.
  8.  *
  9.  * Extensions are of the type ".foo", which is typically found on
  10.  * Windows and Unix boxes, but not on Macinthosh. Case is ignored.
  11.  *
  12.  * Example - create a new filter that filerts out all files
  13.  * but gif and jpg image files:
  14.  *
  15.  *     JFileChooser chooser = new JFileChooser();
  16.  *     XTFRFileFilter filter = new XTFRFileFilter(
  17.  *                   new String{"gif", "jpg"}, "JPEG & GIF Images")
  18.  *     chooser.addChoosableFileFilter(filter);
  19.  *     chooser.showOpenDialog(this);
  20.  *
  21.  * @version 1.10 05/17/01
  22.  * @author Jeff Dinkins
  23.  */
  24. import java.io.File;
  25. import javax.swing.filechooser.*;
  26. import java.util.*;
  27. public class ExportFileFilter extends FileFilter {
  28. //   private String TYPE_UNKNOWN = "Type Unknown";
  29. //   private String HIDDEN_FILE = "Hidden File";
  30.    private Hashtable filters = null;
  31.    private String description = null;
  32.    private String fullDescription = null;
  33.    private boolean useExtensionsInDescription = true;
  34.    /**
  35.    * Creates a file filter. If no filters are added, then all
  36.    * files are accepted.
  37.    *
  38.    * @see #addExtension
  39.    */
  40.    public ExportFileFilter() {
  41.       this.filters = new Hashtable();
  42.    }
  43.    /**
  44.    * Creates a file filter that accepts files with the given extension.
  45.    * Example: new XTFRFileFilter("jpg");
  46.    *
  47.    * @see #addExtension
  48.    */
  49.    public ExportFileFilter(String extension) {
  50.       this(extension,null);
  51.    }
  52.    /**
  53.    * Creates a file filter that accepts the given file type.
  54.    * Example: new XTFRFileFilter("jpg", "JPEG Image Images");
  55.    *
  56.    * Note that the "." before the extension is not needed. If
  57.    * provided, it will be ignored.
  58.    *
  59.    * @see #addExtension
  60.    */
  61.    public ExportFileFilter(String extension, String description) {
  62.       this();
  63.       if(extension!=null)
  64.          addExtension(extension);
  65.       if(description!=null)
  66.          setDescription(description);
  67.    }
  68.    /**
  69.    * Creates a file filter from the given string array.
  70.    * Example: new XTFRFileFilter(String {"gif", "jpg"});
  71.    *
  72.    * Note that the "." before the extension is not needed adn
  73.    * will be ignored.
  74.    *
  75.    * @see #addExtension
  76.    */
  77.    public ExportFileFilter(String[] filters) {
  78.       this(filters, null);
  79.    }
  80.    /**
  81.    * Creates a file filter from the given string array and description.
  82.    * Example: new XTFRFileFilter(String {"gif", "jpg"}, "Gif and JPG Images");
  83.    *
  84.    * Note that the "." before the extension is not needed and will be ignored.
  85.    *
  86.    * @see #addExtension
  87.    */
  88.    public ExportFileFilter(String[] filters, String description) {
  89.       this();
  90.       for (int i = 0; i < filters.length; i++) {
  91.        // add filters one by one
  92.        addExtension(filters[i]);
  93.       }
  94.       if(description!=null)
  95.          setDescription(description);
  96.    }
  97.    /**
  98.    * Return true if this file should be shown in the directory pane,
  99.    * false if it shouldn't.
  100.    *
  101.    * Files that begin with "." are ignored.
  102.    *
  103.    * @see #getExtension
  104.    * @see FileFilter#accepts
  105.    */
  106.    public boolean accept(File f) {
  107.       if(f != null) {
  108.          if(f.isDirectory()) {
  109.             return true;
  110.          }
  111.          String extension = getExtension(f);
  112.          if(extension != null && filters.get(getExtension(f)) != null) {
  113.             return true;
  114.          }
  115.       }
  116.       return false;
  117.    }
  118.    /**
  119.    * Return the extension portion of the file's name .
  120.    *
  121.    * @see #getExtension
  122.    * @see FileFilter#accept
  123.    */
  124.    public String getExtension(File f) {
  125.       if(f != null) {
  126.          return getExtension(f.getName());
  127.       }
  128.       return null;
  129.    }
  130.    public String getExtension(String filename) {
  131.       if(filename != null) {
  132.          int i = filename.lastIndexOf('.');
  133.          if(i>0 && i<filename.length()-1) {
  134.             return filename.substring(i+1).toLowerCase();
  135.          }
  136.       }
  137.       return null;
  138.    }
  139.   /**
  140.    * Adds a filetype "dot" extension to filter against.
  141.    *
  142.    * For example: the following code will create a filter that filters
  143.    * out all files except those that end in ".jpg" and ".tif":
  144.    *
  145.    *   XTFRFileFilter filter = new XTFRFileFilter();
  146.    *   filter.addExtension("jpg");
  147.    *   filter.addExtension("tif");
  148.    *
  149.    * Note that the "." before the extension is not needed and will be ignored.
  150.    */
  151.    public void addExtension(String extension) {
  152.       if(filters == null) {
  153.          filters = new Hashtable(5);
  154.       }
  155.       filters.put(extension.toLowerCase(), this);
  156.       fullDescription = null;
  157.    }
  158.    /**
  159.    * Returns the human readable description of this filter. For
  160.    * example: "JPEG and GIF Image Files (*.jpg, *.gif)"
  161.    *
  162.    * @see setDescription
  163.    * @see setExtensionListInDescription
  164.    * @see isExtensionListInDescription
  165.    * @see FileFilter#getDescription
  166.    */
  167.    public String getDescription() {
  168.       if(fullDescription == null) {
  169.          if(description == null || isExtensionListInDescription()) {
  170.             fullDescription = description==null ? "(" : description + " (";
  171.             // build the description from the extension list
  172.             Enumeration extensions = filters.keys();
  173.             if(extensions != null) {
  174.                fullDescription += "." + (String) extensions.nextElement();
  175.                while (extensions.hasMoreElements()) {
  176.                   fullDescription += ", ." + (String) extensions.nextElement();
  177.                }
  178.             }
  179.             fullDescription += ")";
  180.             } else {
  181.                fullDescription = description;
  182.             }
  183.       }
  184.       return fullDescription;
  185.    }
  186.    /**
  187.    * Sets the human readable description of this filter. For
  188.    * example: filter.setDescription("Gif and JPG Images");
  189.    *
  190.    * @see setDescription
  191.    * @see setExtensionListInDescription
  192.    * @see isExtensionListInDescription
  193.    */
  194.    public void setDescription(String description) {
  195.       this.description = description;
  196.       fullDescription = null;
  197.    }
  198.    /**
  199.    * Determines whether the extension list (.jpg, .gif, etc) should
  200.    * show up in the human readable description.
  201.    *
  202.    * Only relevent if a description was provided in the constructor
  203.    * or using setDescription();
  204.    *
  205.    * @see getDescription
  206.    * @see setDescription
  207.    * @see isExtensionListInDescription
  208.    */
  209.    public void setExtensionListInDescription(boolean b) {
  210.       useExtensionsInDescription = b;
  211.       fullDescription = null;
  212.    }
  213.    /**
  214.    * Returns whether the extension list (.jpg, .gif, etc) should
  215.    * show up in the human readable description.
  216.    *
  217.    * Only relevent if a description was provided in the constructor
  218.    * or using setDescription();
  219.    *
  220.    * @see getDescription
  221.    * @see setDescription
  222.    * @see setExtensionListInDescription
  223.    */
  224.    public boolean isExtensionListInDescription() {
  225.       return useExtensionsInDescription;
  226.    }
  227.    /**
  228.     * Set the extension to be used for this type if one is not provided
  229.     *    This will append the first key of the filter contained in the list
  230.     */
  231.    public String setExtension(File f) {
  232.       return setExtension(f.getAbsolutePath());
  233.    }
  234.    public String setExtension(String f) {
  235.       if (f != null & getExtension(f) == null) {
  236.          Enumeration e = filters.keys();
  237.          String ext = (String)e.nextElement();
  238.          // just a little extra check for html documents
  239.          if (ext.equals("htm"))
  240.             ext = "html";
  241.          f += "." + ext.toLowerCase();
  242.       }
  243.       return f;
  244.    }
  245. //   /**
  246. //    *
  247. //    */
  248. //   public boolean isExtensionInList(String filename) {
  249. //
  250. //      String ext = null;
  251. //      if (filename == null)
  252. //         return false;
  253. //      int i = filename.lastIndexOf('.');
  254. //      if(i>0 && i<filename.length()-1) {
  255. //         ext = filename.substring(i+1).toLowerCase();
  256. //      }
  257. //      if (ext == null)
  258. //         return false;
  259. //      else
  260. //         // check if extension is within this filter list
  261. //         return filters.containsKey(ext);
  262. //   }
  263. //
  264. //   public void setOutputFilterName(String className) {
  265. //
  266. //      outputFilterClassName = className;
  267. //   }
  268. //
  269. //   public OutputFilterInterface getOutputFilterInstance() {
  270. //
  271. //      try {
  272. //         if (o == null) {
  273. //            Class c = Class.forName(outputFilterClassName);
  274. //            o = c.newInstance();
  275. //         }
  276. //      }
  277. //      catch (Exception e) {
  278. //         System.err.println(e);
  279. //      }
  280. //
  281. //      return (OutputFilterInterface) o;
  282. //   }
  283. }