package tools.image; import java.io.File; import javax.swing.JFileChooser; import javax.swing.JOptionPane; public class FileOpen { private File file = null; /** * Default Constructor. * * @param title The title of the JFileChooser. * @exception java.lang.Exception * ex * Creates a file selection dialog starting at the current * working directory. Filters out all non-txt files and * handles possible file load errors. */ public FileOpen(final String title) { this(title, ".txt", ".gif", ".png"); } public FileOpen(final String title, final String... extensions) { this(title, new File(System.getProperties().getProperty("user.dir")), extensions); } public FileOpen(final String title, final File currentDirectory) { this(title, currentDirectory, ".txt", ".gif", ".png"); } public FileOpen(final String title, final File currentDirectory, final String... extensions) { this(title, currentDirectory, null, extensions); } public FileOpen(final String title, final File currentDirectory, final File selectedFile, final String... extensions) { final JFileChooser chooser = new JFileChooser(); chooser.setDialogTitle(title); if (selectedFile != null) { chooser.setSelectedFile(selectedFile); } chooser.setCurrentDirectory(((currentDirectory == null || !currentDirectory.exists()) ? new File(System.getProperties().getProperty("user.dir")) : currentDirectory)); /* * Show only text and gif files */ chooser.setFileFilter(new javax.swing.filechooser.FileFilter() { @Override public boolean accept(final File f) { if (f.isDirectory()) { return true; } for (final String ex : extensions) { if (f.getName().endsWith(ex)) { return true; } } return false; } @Override public String getDescription() { final StringBuffer buf = new StringBuffer(); for (final String ex : extensions) { buf.append("*").append(ex).append(" "); } return buf.toString(); } }); final int result = chooser.showOpenDialog(null); if (result == JFileChooser.CANCEL_OPTION) { return; } try { // get the file file = chooser.getSelectedFile(); } catch (final Exception ex) { final String ERR_MSG_1 = "Warning! Could not load the file!"; JOptionPane.showMessageDialog(null, ERR_MSG_1, "Warning!", JOptionPane.WARNING_MESSAGE); file = null; } } // constructor /** * Returns the newly selected file. * Will return null if no file is selected. * * @return java.io.File */ public File getFile() { return file; } /** * Returns the newly selected file. * Will return null if no file is selected. * * @return java.lang.String */ public String getPathString() { if (file == null) { return null; } else { return file.getPath(); } } }