Mega Code Archive

 
Categories / Java / Swing JFC
 

See what it takes to make one of these filters work

/* Java Swing, 2nd Edition By Marc Loy, Robert Eckstein, Dave Wood, James Elliott, Brian Cole ISBN: 0-596-00408-7 Publisher: O'Reilly  */ // MyFilterChooser.java //Just a simple example to see what it takes to make one of these filters work. // import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.filechooser.FileFilter; public class MyFilterChooser extends JFrame {   public MyFilterChooser() {     super("Filter Test Frame");     setSize(350, 200);     setDefaultCloseOperation(EXIT_ON_CLOSE);     Container c = getContentPane();     c.setLayout(new FlowLayout());     JButton openButton = new JButton("Open");     final JLabel statusbar = new JLabel(         "Output of your selection will go here");     openButton.addActionListener(new ActionListener() {       public void actionPerformed(ActionEvent ae) {         String[] pics = new String[] { "gif", "jpg", "tif" };         String[] audios = new String[] { "au", "aiff", "wav" };         JFileChooser chooser = new JFileChooser();         chooser.addChoosableFileFilter(new SimpleFileFilter(pics,             "Images (*.gif, *.jpg, *.tif)"));         chooser.addChoosableFileFilter(new SimpleFileFilter(".MOV"));         chooser.addChoosableFileFilter(new SimpleFileFilter(audios,             "Sounds (*.aiff, *.au, *.wav)"));         int option = chooser.showOpenDialog(MyFilterChooser.this);         if (option == JFileChooser.APPROVE_OPTION) {           if (chooser.getSelectedFile() != null)             statusbar.setText("You chose "                 + chooser.getSelectedFile().getName());         } else {           statusbar.setText("You canceled.");         }       }     });     c.add(openButton);     c.add(statusbar);     setVisible(true);   }   public static void main(String args[]) {     MyFilterChooser mfc = new MyFilterChooser();   } } //SimpleFileFilter.java //A straightforward extension-based example of a file filter. This should be //replaced by a "first class" Swing class in a later release of Swing. // class SimpleFileFilter extends FileFilter {   String[] extensions;   String description;   public SimpleFileFilter(String ext) {     this(new String[] { ext }, null);   }   public SimpleFileFilter(String[] exts, String descr) {     // Clone and lowercase the extensions     extensions = new String[exts.length];     for (int i = exts.length - 1; i >= 0; i--) {       extensions[i] = exts[i].toLowerCase();     }     // Make sure we have a valid (if simplistic) description     description = (descr == null ? exts[0] + " files" : descr);   }   public boolean accept(File f) {     // We always allow directories, regardless of their extension     if (f.isDirectory()) {       return true;     }     // Ok, it's a regular file, so check the extension     String name = f.getName().toLowerCase();     for (int i = extensions.length - 1; i >= 0; i--) {       if (name.endsWith(extensions[i])) {         return true;       }     }     return false;   }   public String getDescription() {     return description;   } }