public synchronized boolean addImages(ArrayList<File> files) {
    if (!files.isEmpty()) {
      ArrayList<File> vector = new ArrayList<File>();

      for (File f : files) {
        if (f.isFile()) {
          String name = f.getName();
          String ext = name.substring(name.lastIndexOf('.') + 1).toLowerCase();

          if (FileFilters.AllFilter.isMatching(ext)) {
            boolean dupe = false;
            for (PFile ff : Data.getFiles()) {
              if (ff.file.equals(f)) {
                dupe = true;
                break;
              }
            }
            if (!dupe) vector.add(f);
          }
        }
      }

      if (vector.isEmpty()) {
        JOptionPane.showMessageDialog(rootPane, Data.text("loading-nofiles"), Data.text("loading"), JOptionPane.INFORMATION_MESSAGE);
        return false;
      } else {
        new FFileLoading(vector);
        lStartInfo.setVisible(false);
        mEdit.setEnabled(true);
        mFileUploadSelect.setEnabled(true);
        mUpload.setEnabled(true);
        return true;
      }
    } else {
      JOptionPane.showMessageDialog(rootPane, Data.text("loading-nofiles"), Data.text("loading"), JOptionPane.INFORMATION_MESSAGE);
      return false;
    }
  }