@Override public boolean accept(File pathname) { String name = pathname.getName(); int n = name.lastIndexOf("."); String suffix = name.substring(1 + n).toLowerCase(); if (fileSuffixes_ == null || fileSuffixes_.length == 0) { return true; } if (!JavaUtils.isMac() && pathname.isDirectory()) { return true; } for (int i = 0; i < fileSuffixes_.length; ++i) { if (fileSuffixes_[i] != null && fileSuffixes_[i].toLowerCase().contentEquals(suffix)) { return true; } } return false; }
public static File show( Window parent, String title, File startFile, boolean selectDirectories, boolean load, final String fileDescription, final String[] fileSuffixes, boolean suggestFileName) { File selectedFile = null; GeneralFileFilter filter = new GeneralFileFilter(fileDescription, fileSuffixes); if (JavaUtils.isMac()) { if (selectDirectories) { // For Mac we only select directories, unfortunately! System.setProperty("apple.awt.fileDialogForDirectories", "true"); } int mode = load ? FileDialog.LOAD : FileDialog.SAVE; FileDialog fd; if (parent instanceof Dialog) { fd = new FileDialog((Dialog) parent, title, mode); } else if (parent instanceof Frame) { fd = new FileDialog((Frame) parent, title, mode); } else { fd = new FileDialog((Dialog) null, title, mode); } if (startFile != null) { if (startFile.isDirectory()) { fd.setDirectory(startFile.getAbsolutePath()); } else { fd.setDirectory(startFile.getParent()); } if (!load && suggestFileName) { fd.setFile(startFile.getName()); } } if (fileSuffixes != null) { fd.setFilenameFilter(filter); } fd.setVisible(true); if (selectDirectories) { System.setProperty("apple.awt.fileDialogForDirectories", "false"); } if (fd.getFile() != null) { selectedFile = new File(fd.getDirectory() + "/" + fd.getFile()); if (mode == FileDialog.SAVE) { if (!filter.accept(selectedFile)) { selectedFile = new File(selectedFile.getAbsolutePath() + "." + fileSuffixes[0]); } } } fd.dispose(); } else { JFileChooser fc = new JFileChooser(); if (startFile != null) { if ((!load && suggestFileName) || startFile.isDirectory()) { fc.setSelectedFile(startFile); } else { fc.setSelectedFile(startFile.getParentFile()); } } fc.setDialogTitle(title); if (selectDirectories) { fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); } if (fileSuffixes != null) { fc.setFileFilter(filter); } int returnVal; if (load) { returnVal = fc.showOpenDialog(parent); } else { returnVal = fc.showSaveDialog(parent); } if (returnVal == JFileChooser.APPROVE_OPTION) { selectedFile = fc.getSelectedFile(); } } return selectedFile; }