home *** CD-ROM | disk | FTP | other *** search
/ ftp.swcp.com / ftp.swcp.com.zip / ftp.swcp.com / mac / mozilla-macos9-1.3.1.sea.bin / Mozilla1.3.1 / Chrome / comm.jar / content / communicator / openLocation.js < prev    next >
Text File  |  2003-06-08  |  6KB  |  181 lines

  1. /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
  2.  *
  3.  * The contents of this file are subject to the Netscape Public
  4.  * License Version 1.1 (the "License"); you may not use this file
  5.  * except in compliance with the License. You may obtain a copy of
  6.  * the License at http://www.mozilla.org/NPL/
  7.  *
  8.  * Software distributed under the License is distributed on an "AS
  9.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  10.  * implied. See the License for the specific language governing
  11.  * rights and limitations under the License.
  12.  *
  13.  * The Original Code is Mozilla Communicator client code, released March
  14.  * 31, 1998.
  15.  *
  16.  * The Initial Developer of the Original Code is Netscape Communications
  17.  * Corporation. Portions created by Netscape are
  18.  * Copyright (C) 1998 Netscape Communications Corporation. All
  19.  * Rights Reserved.
  20.  *
  21.  * Contributor(s): Michael Lowe <michael.lowe@bigfoot.com>
  22.  *                 Blake Ross   <blaker@netscape.com>
  23.  */
  24.  
  25. var browser;
  26. var dialog = {};
  27. var pref = null;
  28. try {
  29.   pref = Components.classes["@mozilla.org/preferences-service;1"]
  30.                    .getService(Components.interfaces.nsIPrefBranch);
  31. } catch (ex) {
  32.   // not critical, remain silent
  33. }
  34.  
  35. function onLoad()
  36. {
  37.   dialog.input          = document.getElementById("dialog.input");
  38.   dialog.open           = document.documentElement.getButton("accept");
  39.   dialog.openAppList    = document.getElementById("openAppList");
  40.   dialog.openTopWindow  = document.getElementById("currentWindow");
  41.   dialog.openEditWindow = document.getElementById("editWindow");
  42.   dialog.bundle         = document.getElementById("openLocationBundle");
  43.  
  44.   if ("arguments" in window && window.arguments.length >= 1)
  45.     browser = window.arguments[0];
  46.    
  47.   if (!browser) {
  48.     // No browser supplied - we are calling from Composer
  49.     dialog.openAppList.selectedItem = dialog.openEditWindow;
  50.  
  51.     // Change string to make more sense for Composer
  52.     dialog.openTopWindow.setAttribute("label", dialog.bundle.getString("existingNavigatorWindow"));
  53.  
  54.     // Find most recent browser window
  55.     var windowManager = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService();
  56.     var windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator);
  57.     if (windowManagerInterface)
  58.       browser = windowManagerInterface.getMostRecentWindow( "navigator:browser" );
  59.  
  60.     // Disable "current browser" item if no browser is open
  61.     if (!browser)
  62.       dialog.openTopWindow.setAttribute("disabled", "true");
  63.   }
  64.   else {
  65.     dialog.openAppList.selectedItem = dialog.openTopWindow;
  66.   }
  67.  
  68.   // change OK button text to 'open'
  69.   dialog.open.label = dialog.bundle.getString("openButtonLabel");
  70.  
  71.   if (pref) {
  72.     try {
  73.       var value = pref.getIntPref("general.open_location.last_window_choice");
  74.       var element = dialog.openAppList.getElementsByAttribute("value", value)[0];
  75.       if (element)
  76.         dialog.openAppList.selectedItem = element;
  77.       dialog.input.value = pref.getComplexValue("general.open_location.last_url",
  78.                                                 Components.interfaces.nsISupportsString).data;
  79.     }
  80.     catch(ex) {
  81.     }
  82.     if (dialog.input.value)
  83.       dialog.input.select(); // XXX should probably be done automatically
  84.   }
  85.  
  86.   doEnabling();
  87. }
  88.  
  89. function doEnabling()
  90. {
  91.     dialog.open.disabled = !dialog.input.value;
  92. }
  93.  
  94. function open()
  95. {
  96.   var url;
  97.   if (browser)
  98.     url = browser.getShortcutOrURI(dialog.input.value);
  99.   else
  100.     url = dialog.input.value;
  101.  
  102.   try {
  103.     switch (dialog.openAppList.value) {
  104.       case "0":
  105.         browser.loadURI(url);
  106.         break;
  107.       case "1":
  108.         window.opener.delayedOpenWindow(getBrowserURL(), "all,dialog=no", url);
  109.         break;
  110.       case "2":
  111.         // editPage is in editorApplicationOverlay.js 
  112.         // 3rd param tells editPage to use "delayedOpenWindow"
  113.         if ("editPage" in window.opener)
  114.           window.opener.editPage(url, window.opener, true);
  115.         break;
  116.       case "3":
  117.         if (browser.getBrowser && browser.getBrowser().localName == "tabbrowser")
  118.           browser.delayedOpenTab(url);
  119.         else
  120.           browser.loadURI(url); // Just do a normal load.
  121.         break;
  122.     }
  123.   }
  124.   catch(exception) {
  125.   }
  126.  
  127.   if (pref) {
  128.     var str = Components.classes["@mozilla.org/supports-string;1"]
  129.                         .createInstance(Components.interfaces.nsISupportsString);
  130.     str.data = dialog.input.value;
  131.     pref.setComplexValue("general.open_location.last_url",
  132.                          Components.interfaces.nsISupportsString, str);
  133.     pref.setIntPref("general.open_location.last_window_choice", dialog.openAppList.value);
  134.   }
  135.  
  136.   // Delay closing slightly to avoid timing bug on Linux.
  137.   window.close();
  138.   return false;
  139. }
  140.  
  141. function createInstance(contractid, iidName)
  142. {
  143.   var iid = Components.interfaces[iidName];
  144.   return Components.classes[contractid].createInstance(iid);
  145. }
  146.  
  147. const nsIFilePicker = Components.interfaces.nsIFilePicker;
  148. function onChooseFile()
  149. {
  150.   try {
  151.     var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
  152.     fp.init(window, dialog.bundle.getString("chooseFileDialogTitle"), nsIFilePicker.modeOpen);
  153.     if (dialog.openAppList.value == "2") {
  154.       // When loading into Composer, direct user to prefer HTML files and text files,
  155.       // so we call separately to control the order of the filter list
  156.       fp.appendFilters(nsIFilePicker.filterHTML | nsIFilePicker.filterText);
  157.       fp.appendFilters(nsIFilePicker.filterText);
  158.       fp.appendFilters(nsIFilePicker.filterAll);
  159.     }
  160.     else {
  161.       fp.appendFilters(nsIFilePicker.filterHTML | nsIFilePicker.filterText |
  162.                        nsIFilePicker.filterAll | nsIFilePicker.filterImages | nsIFilePicker.filterXML);
  163.     }
  164.  
  165.     if (fp.show() == nsIFilePicker.returnOK && fp.fileURL.spec && fp.fileURL.spec.length > 0)
  166.       dialog.input.value = fp.fileURL.spec;
  167.   }
  168.   catch(ex) {
  169.   }
  170.   doEnabling();
  171. }
  172.  
  173. function useUBHistoryItem(aMenuItem)
  174. {
  175.   var urlbar = document.getElementById("dialog.input");
  176.   urlbar.value = aMenuItem.getAttribute("label");
  177.   urlbar.focus();
  178.   doEnabling();
  179. }
  180.  
  181.