Beispiel #1
0
 @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;
 }
Beispiel #2
0
  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;
  }