NSSavePanel (and NSOpenPanel, as a subclass) supports a `message` (via `setMessage:message` in Obj-C), which allows a message to be displayed even when the panel is attached to a parent. Right now, `title` is useless for attached dialogs.

atom/browser/ui/file_dialog.h
FILE_DIALOG_OPEN_FILE         = 1 << 0,
  FILE_DIALOG_OPEN_DIRECTORY    = 1 << 1,
  FILE_DIALOG_MULTI_SELECTIONS  = 1 << 2,
  FILE_DIALOG_CREATE_DIRECTORY  = 1 << 3,
  FILE_DIALOG_SHOW_HIDDEN_FILES = 1 << 4,
  FILE_DIALOG_PROMPT_TO_CREATE  = 1 << 5,
};
typedef base::Callback<void(
    bool result, const std::vector<base::FilePath>& paths)> OpenDialogCallback;
typedef base::Callback<void(
    bool result, const base::FilePath& path)> SaveDialogCallback;
struct DialogSettings {
  atom::NativeWindow* parent_window = nullptr;
  std::string title;
  std::string button_label;
  base::FilePath default_path;
  Filters filters;
  int properties = 0;
};
bool ShowOpenDialog(const DialogSettings& settings,
                    std::vector<base::FilePath>* paths);
void ShowOpenDialog(const DialogSettings& settings,
                    const OpenDialogCallback& callback);
bool ShowSaveDialog(const DialogSettings& settings,
                    base::FilePath* path);
void ShowSaveDialog(const DialogSettings& settings,
                    const SaveDialogCallback& callback);
}  
#endif