зеркало из https://github.com/mozilla/gecko-dev.git
adding open location dialog.
This commit is contained in:
Родитель
bb74620250
Коммит
c42ec0dff2
|
@ -824,7 +824,7 @@ function OpenSearch(tabName, forceDialogFlag, searchStr, newWindowFlag)
|
|||
function BrowserOpenWindow()
|
||||
{
|
||||
//opens a window where users can select a web location to open
|
||||
openDialog("chrome://communicator/content/openLocation.xul", "_blank", "chrome,modal,titlebar", window);
|
||||
openDialog("chrome://browser/content/openLocation.xul", "_blank", "chrome,modal,titlebar", window);
|
||||
}
|
||||
|
||||
function BrowserOpenTab()
|
||||
|
|
|
@ -146,6 +146,7 @@ Contributor(s): ______________________________________. -->
|
|||
oncommand="BrowserStop();" observes="canStop"
|
||||
tooltiptext="&stopButton.tooltip;"/>
|
||||
</hbox>
|
||||
<toolbarseparator/>
|
||||
<toolbarbutton id="print-button" class="toolbarbutton-1"
|
||||
label="&printButton.label;" persist="hidden"
|
||||
oncommand="BrowserPrint();"
|
||||
|
|
|
@ -0,0 +1,174 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator client code, released March
|
||||
* 31, 1998.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape Communications
|
||||
* Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s): Michael Lowe <michael.lowe@bigfoot.com>
|
||||
* Blake Ross <blaker@netscape.com>
|
||||
*/
|
||||
|
||||
var browser;
|
||||
var dialog = {};
|
||||
var pref = null;
|
||||
try {
|
||||
pref = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefBranch);
|
||||
} catch (ex) {
|
||||
// not critical, remain silent
|
||||
}
|
||||
|
||||
function onLoad()
|
||||
{
|
||||
dialog.input = document.getElementById("dialog.input");
|
||||
dialog.open = document.documentElement.getButton("accept");
|
||||
dialog.openAppList = document.getElementById("openAppList");
|
||||
dialog.openTopWindow = document.getElementById("currentWindow");
|
||||
dialog.openEditWindow = document.getElementById("editWindow");
|
||||
dialog.bundle = document.getElementById("openLocationBundle");
|
||||
|
||||
if ("arguments" in window && window.arguments.length >= 1)
|
||||
browser = window.arguments[0];
|
||||
|
||||
if (!browser) {
|
||||
// No browser supplied - we are calling from Composer
|
||||
dialog.openAppList.selectedItem = dialog.openEditWindow;
|
||||
|
||||
// Change string to make more sense for Composer
|
||||
dialog.openTopWindow.setAttribute("label", dialog.bundle.getString("existingNavigatorWindow"));
|
||||
|
||||
// Find most recent browser window
|
||||
var windowManager = Components.classes['@mozilla.org/rdf/datasource;1?name=window-mediator'].getService();
|
||||
var windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator);
|
||||
if (windowManagerInterface)
|
||||
browser = windowManagerInterface.getMostRecentWindow( "navigator:browser" );
|
||||
|
||||
// Disable "current browser" item if no browser is open
|
||||
if (!browser)
|
||||
dialog.openTopWindow.setAttribute("disabled", "true");
|
||||
}
|
||||
else {
|
||||
dialog.openAppList.selectedItem = dialog.openTopWindow;
|
||||
}
|
||||
|
||||
// change OK button text to 'open'
|
||||
dialog.open.label = dialog.bundle.getString("openButtonLabel");
|
||||
|
||||
if (pref) {
|
||||
try {
|
||||
var value = pref.getIntPref("general.open_location.last_window_choice");
|
||||
var element = dialog.openAppList.getElementsByAttribute("value", value)[0];
|
||||
if (element)
|
||||
dialog.openAppList.selectedItem = element;
|
||||
dialog.input.value = pref.getComplexValue("general.open_location.last_url",
|
||||
Components.interfaces.nsISupportsWString).data;
|
||||
}
|
||||
catch(ex) {
|
||||
}
|
||||
if (dialog.input.value)
|
||||
dialog.input.select(); // XXX should probably be done automatically
|
||||
}
|
||||
|
||||
doEnabling();
|
||||
}
|
||||
|
||||
function doEnabling()
|
||||
{
|
||||
dialog.open.disabled = !dialog.input.value;
|
||||
}
|
||||
|
||||
function open()
|
||||
{
|
||||
var url;
|
||||
if (browser)
|
||||
url = browser.getShortcutOrURI(dialog.input.value);
|
||||
else
|
||||
url = dialog.input.value;
|
||||
|
||||
try {
|
||||
switch (dialog.openAppList.value) {
|
||||
case "0":
|
||||
browser.loadURI(url);
|
||||
break;
|
||||
case "1":
|
||||
window.opener.delayedOpenWindow(getBrowserURL(), "all,dialog=no", url);
|
||||
break;
|
||||
case "3":
|
||||
if (browser.getBrowser && browser.getBrowser().localName == "tabbrowser")
|
||||
browser.delayedOpenTab(url);
|
||||
else
|
||||
browser.loadURI(url); // Just do a normal load.
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch(exception) {
|
||||
}
|
||||
|
||||
if (pref) {
|
||||
var str = Components.classes["@mozilla.org/supports-wstring;1"]
|
||||
.createInstance(Components.interfaces.nsISupportsWString);
|
||||
str.data = dialog.input.value;
|
||||
pref.setComplexValue("general.open_location.last_url",
|
||||
Components.interfaces.nsISupportsWString, str);
|
||||
pref.setIntPref("general.open_location.last_window_choice", dialog.openAppList.value);
|
||||
}
|
||||
|
||||
// Delay closing slightly to avoid timing bug on Linux.
|
||||
window.close();
|
||||
return false;
|
||||
}
|
||||
|
||||
function createInstance(contractid, iidName)
|
||||
{
|
||||
var iid = Components.interfaces[iidName];
|
||||
return Components.classes[contractid].createInstance(iid);
|
||||
}
|
||||
|
||||
const nsIFilePicker = Components.interfaces.nsIFilePicker;
|
||||
function onChooseFile()
|
||||
{
|
||||
try {
|
||||
var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
|
||||
fp.init(window, dialog.bundle.getString("chooseFileDialogTitle"), nsIFilePicker.modeOpen);
|
||||
if (dialog.openAppList.value == "2") {
|
||||
// When loading into Composer, direct user to prefer HTML files and text files,
|
||||
// so we call separately to control the order of the filter list
|
||||
fp.appendFilters(nsIFilePicker.filterHTML | nsIFilePicker.filterText);
|
||||
fp.appendFilters(nsIFilePicker.filterText);
|
||||
fp.appendFilters(nsIFilePicker.filterAll);
|
||||
}
|
||||
else {
|
||||
fp.appendFilters(nsIFilePicker.filterHTML | nsIFilePicker.filterText |
|
||||
nsIFilePicker.filterAll | nsIFilePicker.filterImages | nsIFilePicker.filterXML);
|
||||
}
|
||||
|
||||
if (fp.show() == nsIFilePicker.returnOK && fp.fileURL.spec && fp.fileURL.spec.length > 0)
|
||||
dialog.input.value = fp.fileURL.spec;
|
||||
}
|
||||
catch(ex) {
|
||||
}
|
||||
doEnabling();
|
||||
}
|
||||
|
||||
function useUBHistoryItem(aMenuItem)
|
||||
{
|
||||
var urlbar = document.getElementById("dialog.input");
|
||||
urlbar.value = aMenuItem.getAttribute("label");
|
||||
urlbar.focus();
|
||||
doEnabling();
|
||||
}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!--
|
||||
The contents of this file are subject to the Netscape Public
|
||||
License Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License. You may obtain a copy of
|
||||
the License at http://www.mozilla.org/NPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS
|
||||
IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
implied. See the License for the specific language governing
|
||||
rights and limitations under the License.
|
||||
|
||||
The Original Code is Mozilla Communicator client code, released
|
||||
March 31, 1998.
|
||||
|
||||
The Initial Developer of the Original Code is Netscape
|
||||
Communications Corporation. Portions created by Netscape are
|
||||
Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
Ben Goodger <ben@netscape.com>
|
||||
Michael Lowe <michael.lowe@bigfoot.com>
|
||||
|
||||
-->
|
||||
|
||||
<?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
|
||||
|
||||
<!DOCTYPE window [
|
||||
<!ENTITY % brandDTD SYSTEM "chrome://global/locale/brand.dtd" >
|
||||
%brandDTD;
|
||||
<!ENTITY % openDialogDTD SYSTEM "chrome://browser/locale/openLocation.dtd" >
|
||||
%openDialogDTD;
|
||||
]>
|
||||
|
||||
<dialog id="openLocation"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
title="&caption.label;"
|
||||
onload="onLoad()"
|
||||
ondialogaccept="open()"
|
||||
style="width: 40em;"
|
||||
persist="screenX screenY"
|
||||
screenX="24" screenY="24">
|
||||
|
||||
<script type="application/x-javascript" src="chrome://global/content/globalOverlay.js"/>
|
||||
<script type="application/x-javascript" src="chrome://browser/content/openLocation.js"/>
|
||||
<script type="application/x-javascript" src="chrome://communicator/content/utilityOverlay.js"/>
|
||||
<script type="application/x-javascript" src="chrome://navigator/content/sessionHistoryUI.js"/>
|
||||
|
||||
<stringbundle id="openLocationBundle" src="chrome://communicator/locale/openLocation.properties"/>
|
||||
|
||||
<hbox>
|
||||
<separator orient="vertical" class="thin"/>
|
||||
<vbox flex="1">
|
||||
<description>&enter.label;</description>
|
||||
<separator class="thin"/>
|
||||
|
||||
<hbox align="center">
|
||||
<textbox id="dialog.input" flex="1" type="autocomplete"
|
||||
searchSessions="history" timeout="50" maxrows="6"
|
||||
disablehistory="false"
|
||||
oninput="doEnabling();">
|
||||
<menupopup id="ubhist-popup" class="autocomplete-history-popup"
|
||||
popupalign="topleft" popupanchor="bottomleft"
|
||||
onpopupshowing="createUBHistoryMenu(event.target);"
|
||||
oncommand="useUBHistoryItem(event.target)"/>
|
||||
</textbox>
|
||||
<button label="&chooseFile.label;" oncommand="onChooseFile();"/>
|
||||
</hbox>
|
||||
<hbox align="center">
|
||||
<label value="&openWhere.label;"/>
|
||||
<menulist id="openAppList">
|
||||
<menupopup>
|
||||
<menuitem value="0" id="currentWindow" label="&topWindow.label;"/>
|
||||
<menuitem value="1" label="&newWindow.label;"/>
|
||||
<menuitem value="3" label="&newTab.label;"/>
|
||||
</menupopup>
|
||||
</menulist>
|
||||
<spacer flex="1"/>
|
||||
</hbox>
|
||||
</vbox>
|
||||
</hbox>
|
||||
|
||||
</dialog>
|
|
@ -18,7 +18,8 @@ browser.jar:
|
|||
content/browser/turboDialog.xul (content/turboDialog.xul)
|
||||
content/browser/viewsource.js (content/viewsource.js)
|
||||
content/browser/viewSource.xul (content/viewSource.xul)
|
||||
|
||||
content/browser/openLocation.xul (content/openLocation.xul)
|
||||
content/browser/openLocation.js (content/openLocation.js)
|
||||
en-US.jar:
|
||||
locale/en-US/browser/contents.rdf (locale/contents.rdf)
|
||||
locale/en-US/browser/viewSource.dtd (locale/viewSource.dtd)
|
||||
|
@ -30,4 +31,6 @@ en-US.jar:
|
|||
locale/en-US/browser/metadata.properties (locale/metadata.properties)
|
||||
locale/en-US/browser/turboDialog.dtd (locale/turboDialog.dtd)
|
||||
locale/en-US/browser/turboMenu.properties (locale/turboMenu.properties)
|
||||
locale/en-US/browser/openLocation.dtd (locale/openLocation.dtd)
|
||||
locale/en-US/browser/openLocation.properties (locale/openLocation.properties)
|
||||
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
<!-- extracted from content/openLocation.xul -->
|
||||
|
||||
<!ENTITY enter.label "Enter the web location (URL), or specify the local file you would like to open:">
|
||||
<!ENTITY chooseFile.label "Choose File...">
|
||||
<!ENTITY newWindow.label "New Navigator window">
|
||||
<!ENTITY newTab.label "New Navigator tab">
|
||||
<!ENTITY topWindow.label "Current Navigator window">
|
||||
<!ENTITY cancel.label "Cancel">
|
||||
<!ENTITY caption.label "Open Web Location">
|
||||
<!ENTITY openWhere.label "Open in:">
|
||||
<!ENTITY example.label "Example: &vendorURL;">
|
|
@ -0,0 +1,3 @@
|
|||
openButtonLabel=Open
|
||||
chooseFileDialogTitle=Choose File
|
||||
existingNavigatorWindow=Existing Navigator window
|
Загрузка…
Ссылка в новой задаче