NsIFilePicker

From MozillaZine Knowledge Base
Jump to navigationJump to search

This page is part of the extension development documentation project.

Ask your questions in MozillaZine Forums. Also try browsing example code.

Note: development documentation is in process of being moved to Mozilla Development Center (MDC).

Using nsIFilePicker

const nsIFilePicker = Components.interfaces.nsIFilePicker;

var fp = Components.classes["@mozilla.org/filepicker;1"]
	.createInstance(nsIFilePicker);
fp.init(windowHandle, "Dialog Title", nsIFilePicker.modeOpen);
fp.appendFilters(nsIFilePicker.filterAll | nsIFilePicker.filterText);

var rv = fp.show();
if (rv == nsIFilePicker.returnOK)
{
  var file = fp.file;
  // work with returned nsILocalFile...
}

// to get a simple windowHandle you may use .. (returns the any most recent one)

  const kWindowMediatorContractID = "@mozilla.org/appshell/window-mediator;1";
  const kWindowMediatorIID = Components.interfaces.nsIWindowMediator;
  const kWindowMediator = Components.classes[kWindowMediatorContractID].getService(kWindowMediatorIID);
  var windowHandle = kWindowMediator.getMostRecentWindow(null);

Notes

  • If you pass empty string as dialog title, the dialog will have default title
  • When checking return value for Save dialog, be sure to check for nsIFilePicker.returnReplace too.
  • Available modes: modeOpen, modeSave, modeGetFolder, modeOpenMultiple.
  • Available filters: filterAll, filterHTML, filterText, filterImages, filterXML, filterXUL, filterApps.

References