home *** CD-ROM | disk | FTP | other *** search
/ PC World 2003 May / PCWorld_2003-05_cd.bin / Komunik / phoenix / chrome / browser.jar / content / browser / openLocation.js < prev    next >
Text File  |  2002-10-10  |  4KB  |  132 lines

  1.  
  2. var browser;
  3. var dialog = {};
  4. var pref = null;
  5. try {
  6.   pref = Components.classes["@mozilla.org/preferences-service;1"]
  7.                    .getService(Components.interfaces.nsIPrefBranch);
  8. } catch (ex) {
  9.   // not critical, remain silent
  10. }
  11.  
  12. function onLoad()
  13. {
  14.   dialog.input          = document.getElementById("dialog.input");
  15.   dialog.open           = document.documentElement.getButton("accept");
  16.   dialog.openAppList    = document.getElementById("openAppList");
  17.   dialog.openTopWindow  = document.getElementById("currentWindow");
  18.   dialog.bundle         = document.getElementById("openLocationBundle");
  19.  
  20.   if ("arguments" in window && window.arguments.length >= 1)
  21.     browser = window.arguments[0];
  22.    
  23.   dialog.openAppList.selectedItem = dialog.openTopWindow;
  24.  
  25.   // change OK button text to 'open'
  26.   dialog.open.label = dialog.bundle.getString("openButtonLabel");
  27.  
  28.   if (pref) {
  29.     try {
  30.       var value = pref.getIntPref("general.open_location.last_window_choice");
  31.       var element = dialog.openAppList.getElementsByAttribute("value", value)[0];
  32.       if (element)
  33.         dialog.openAppList.selectedItem = element;
  34.       dialog.input.value = pref.getComplexValue("general.open_location.last_url",
  35.                                                 Components.interfaces.nsISupportsString).data;
  36.     }
  37.     catch(ex) {
  38.     }
  39.     if (dialog.input.value)
  40.       dialog.input.select(); // XXX should probably be done automatically
  41.   }
  42.  
  43.   doEnabling();
  44. }
  45.  
  46. function doEnabling()
  47. {
  48.     dialog.open.disabled = !dialog.input.value;
  49. }
  50.  
  51. function open()
  52. {
  53.   var url;
  54.   if (browser)
  55.     url = browser.getShortcutOrURI(dialog.input.value);
  56.   else
  57.     url = dialog.input.value;
  58.  
  59.   try {
  60.     switch (dialog.openAppList.value) {
  61.       case "0":
  62.         browser.loadURI(url);
  63.         break;
  64.       case "1":
  65.         window.opener.delayedOpenWindow(getBrowserURL(), "all,dialog=no", url);
  66.         break;
  67.       case "3":
  68.         if (browser.getBrowser && browser.getBrowser().localName == "tabbrowser")
  69.           browser.delayedOpenTab(url);
  70.         else
  71.           browser.loadURI(url); // Just do a normal load.
  72.         break;
  73.     }
  74.   }
  75.   catch(exception) {
  76.   }
  77.  
  78.   if (pref) {
  79.     var str = Components.classes["@mozilla.org/supports-string;1"]
  80.                         .createInstance(Components.interfaces.nsISupportsString);
  81.     str.data = dialog.input.value;
  82.     pref.setComplexValue("general.open_location.last_url",
  83.                          Components.interfaces.nsISupportsString, str);
  84.     pref.setIntPref("general.open_location.last_window_choice", dialog.openAppList.value);
  85.   }
  86.  
  87.   // Delay closing slightly to avoid timing bug on Linux.
  88.   window.close();
  89.   return false;
  90. }
  91.  
  92. function createInstance(contractid, iidName)
  93. {
  94.   var iid = Components.interfaces[iidName];
  95.   return Components.classes[contractid].createInstance(iid);
  96. }
  97.  
  98. const nsIFilePicker = Components.interfaces.nsIFilePicker;
  99. function onChooseFile()
  100. {
  101.   try {
  102.     var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
  103.     fp.init(window, dialog.bundle.getString("chooseFileDialogTitle"), nsIFilePicker.modeOpen);
  104.     if (dialog.openAppList.value == "2") {
  105.       // When loading into Composer, direct user to prefer HTML files and text files,
  106.       // so we call separately to control the order of the filter list
  107.       fp.appendFilters(nsIFilePicker.filterHTML | nsIFilePicker.filterText);
  108.       fp.appendFilters(nsIFilePicker.filterText);
  109.       fp.appendFilters(nsIFilePicker.filterAll);
  110.     }
  111.     else {
  112.       fp.appendFilters(nsIFilePicker.filterHTML | nsIFilePicker.filterText |
  113.                        nsIFilePicker.filterAll | nsIFilePicker.filterImages | nsIFilePicker.filterXML);
  114.     }
  115.  
  116.     if (fp.show() == nsIFilePicker.returnOK && fp.fileURL.spec && fp.fileURL.spec.length > 0)
  117.       dialog.input.value = fp.fileURL.spec;
  118.   }
  119.   catch(ex) {
  120.   }
  121.   doEnabling();
  122. }
  123.  
  124. function useUBHistoryItem(aMenuItem)
  125. {
  126.   var urlbar = document.getElementById("dialog.input");
  127.   urlbar.value = aMenuItem.getAttribute("label");
  128.   urlbar.focus();
  129.   doEnabling();
  130. }
  131.  
  132.