package com.isti.traceview.gui; import java.io.File; import javax.swing.JFileChooser; import javax.swing.filechooser.FileFilter; import com.isti.traceview.data.SourceFile; /** * Customized file chooser to select files handled by TraceView * * @author Max Kokoulin */ public class FileChooser extends JFileChooser { private static final long serialVersionUID = 1L; /** * Enumeration for file types handled by this file chooser */ public enum Type { ALL, GRAPH, HTML, XML, ASCII, MSEED, SAC } public FileChooser(Type type) { setFileSelectionMode(JFileChooser.FILES_ONLY); setAcceptAllFileFilterUsed(false); switch (type) { case GRAPH: addChoosableFileFilter(new BMPFilter()); addChoosableFileFilter(new PNGFilter()); addChoosableFileFilter(new JPEGFilter()); setDialogTitle("Graphics export"); break; case HTML: setFileFilter(new HTMLFilter()); setDialogTitle("Export to HTML"); break; case XML: setFileFilter(new XMLFilter()); setDialogTitle("Export to XML"); break; case ASCII: setFileFilter(new TXTFilter()); setDialogTitle("Export to ASCII"); break; case MSEED: setFileFilter(new MSEEDFilter()); setDialogTitle("Export to MSEED"); break; case SAC: setFileFilter(new SACFilter()); setDialogTitle("Export to SAC"); break; case ALL: setDialogTitle("Select file:"); break; } } private class PNGFilter extends FileFilter { public boolean accept(File f) { if (f.isDirectory()) { return true; } String extension = SourceFile.getExtension(f); if (extension != null) { if (extension.equals("png") || extension.equals("PNG")) { return true; } else { return false; } } return false; } // The description of this filter public String getDescription() { return "PNG Images"; } } private class JPEGFilter extends FileFilter { public boolean accept(File f) { if (f.isDirectory()) { return true; } String extension = SourceFile.getExtension(f); if (extension != null) { if (extension.equals("jpg") || extension.equals("JPG") || extension.equals("jpeg") || extension.equals("JPEG")) { return true; } else { return false; } } return false; } // The description of this filter public String getDescription() { return "JPEG Images"; } } private class BMPFilter extends FileFilter { public boolean accept(File f) { if (f.isDirectory()) { return true; } String extension = SourceFile.getExtension(f); if (extension != null) { if (extension.equals("bmp") || extension.equals("BMP")) { return true; } else { return false; } } return false; } // The description of this filter public String getDescription() { return "BMP Images"; } } private class HTMLFilter extends FileFilter { public boolean accept(File f) { if (f.isDirectory()) { return true; } String extension = SourceFile.getExtension(f); if (extension != null) { if (extension.equals("html") || extension.equals("HTML") || extension.equals("htm") || extension.equals("HTM")) { return true; } else { return false; } } return false; } // The description of this filter public String getDescription() { return "HTML files"; } } private class XMLFilter extends FileFilter { public boolean accept(File f) { if (f.isDirectory()) { return true; } String extension = SourceFile.getExtension(f); if (extension != null) { if (extension.equals("xml") || extension.equals("XML")) { return true; } else { return false; } } return false; } // The description of this filter public String getDescription() { return "XML files"; } } private class TXTFilter extends FileFilter { public boolean accept(File f) { if (f.isDirectory()) { return true; } String extension = SourceFile.getExtension(f); if (extension != null) { if (extension.equals("TXT") || extension.equals("txt")) { return true; } else { return false; } } return false; } // The description of this filter public String getDescription() { return "ASCII files"; } } private class MSEEDFilter extends FileFilter { public boolean accept(File f) { if (f.isDirectory()) { return true; } String extension = SourceFile.getExtension(f); if (extension != null) { if (extension.toLowerCase().equals("msd") || extension.toLowerCase().equals("mseed")) { return true; } else { return false; } } return false; } // The description of this filter public String getDescription() { return "MSEED files"; } } private class SACFilter extends FileFilter { public boolean accept(File f) { if (f.isDirectory()) { return true; } String extension = SourceFile.getExtension(f); if (extension != null) { if (extension.toLowerCase().equals("sac")) { return true; } else { return false; } } return false; } // The description of this filter public String getDescription() { return "SAC files"; } } }