2006-07-29 09:33:39 +04:00
|
|
|
/**
|
|
|
|
* Communicator Shared Utility Library
|
|
|
|
* for shared application glue for the Communicator suite of applications
|
|
|
|
**/
|
2006-07-29 09:33:20 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Go into online/offline mode
|
|
|
|
**/
|
|
|
|
function setOfflineStatus(aToggleFlag)
|
|
|
|
{
|
|
|
|
var ioService = nsJSComponentManager.getServiceByID("{9ac9e770-18bc-11d3-9337-00104ba0fd40}",
|
|
|
|
"nsIIOService");
|
|
|
|
var broadcaster = document.getElementById("Communicator:WorkMode");
|
|
|
|
if (aToggleFlag)
|
|
|
|
ioService.offline = !ioService.offline;
|
|
|
|
|
2006-07-29 09:33:42 +04:00
|
|
|
var bundle = srGetStrBundle("chrome://communicator/locale/utilityOverlay.properties");
|
2006-07-29 09:33:20 +04:00
|
|
|
if (ioService.offline && broadcaster)
|
|
|
|
{
|
|
|
|
broadcaster.setAttribute("offline", "true");
|
2006-07-29 09:33:42 +04:00
|
|
|
broadcaster.setAttribute("tooltiptext", bundle.GetStringFromName("offlineTooltip"));
|
2006-07-29 09:33:20 +04:00
|
|
|
broadcaster.setAttribute("value", bundle.GetStringFromName("goonline"));
|
2006-07-29 09:33:44 +04:00
|
|
|
FillInTooltip(broadcaster);
|
2006-07-29 09:33:20 +04:00
|
|
|
}
|
|
|
|
else if (broadcaster)
|
|
|
|
{
|
|
|
|
broadcaster.removeAttribute("offline");
|
2006-07-29 09:33:42 +04:00
|
|
|
broadcaster.setAttribute("tooltiptext", bundle.GetStringFromName("onlineTooltip"));
|
2006-07-29 09:33:20 +04:00
|
|
|
broadcaster.setAttribute("value", bundle.GetStringFromName("gooffline"));
|
2006-07-29 09:33:44 +04:00
|
|
|
FillInTooltip(broadcaster);
|
2006-07-29 09:33:20 +04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2006-07-29 09:33:39 +04:00
|
|
|
var goPrefWindow = 0;
|
|
|
|
|
|
|
|
function getBrowserURL() {
|
|
|
|
|
|
|
|
try {
|
2006-07-29 09:34:40 +04:00
|
|
|
var prefs = Components.classes["@mozilla.org/preferences;1"];
|
2006-07-29 09:33:39 +04:00
|
|
|
if (prefs) {
|
|
|
|
prefs = prefs.getService();
|
|
|
|
if (prefs)
|
|
|
|
prefs = prefs.QueryInterface(Components.interfaces.nsIPref);
|
|
|
|
}
|
|
|
|
if (prefs) {
|
|
|
|
var url = prefs.CopyCharPref("browser.chromeURL");
|
|
|
|
if (url)
|
|
|
|
return url;
|
|
|
|
}
|
|
|
|
} catch(e) {
|
|
|
|
}
|
|
|
|
return "chrome://navigator/content/navigator.xul";
|
|
|
|
}
|
|
|
|
|
|
|
|
function goPageSetup()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
function goEditCardDialog(abURI, card, okCallback)
|
|
|
|
{
|
|
|
|
window.openDialog("chrome://messenger/content/addressbook/abEditCardDialog.xul",
|
|
|
|
"",
|
2006-07-29 09:34:31 +04:00
|
|
|
"chrome,resizeable=no,modal,titlebar",
|
2006-07-29 09:33:39 +04:00
|
|
|
{abURI:abURI, card:card, okCallback:okCallback});
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2006-07-29 09:34:41 +04:00
|
|
|
function okToCapture2(formsArray) {
|
|
|
|
if (!formsArray) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
var form;
|
|
|
|
for (form=0; form<formsArray.length; form++) {
|
|
|
|
var elementsArray = formsArray[form].elements;
|
|
|
|
var element;
|
|
|
|
for (element=0; element<elementsArray.length; element++) {
|
|
|
|
var type = elementsArray[element].type;
|
|
|
|
var value = elementsArray[element].value;
|
|
|
|
if ((type=="" || type=="text") && value!="") {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
function okToPrefill2(formsArray) {
|
|
|
|
if (!formsArray) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
var form;
|
|
|
|
for (form=0; form<formsArray.length; form++) {
|
|
|
|
var elementsArray = formsArray[form].elements;
|
|
|
|
var element;
|
|
|
|
for (element=0; element<elementsArray.length; element++) {
|
|
|
|
var type = elementsArray[element].type;
|
|
|
|
var value = elementsArray[element].value;
|
|
|
|
if (type=="" || type=="text" || type=="select-one") {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2006-07-29 09:33:39 +04:00
|
|
|
function goPreferences(id, paneURL, paneID)
|
|
|
|
{
|
|
|
|
var prefWindowModalityPref;
|
|
|
|
try {
|
2006-07-29 09:34:40 +04:00
|
|
|
var pref = Components.classes["@mozilla.org/preferences;1"].getService();
|
2006-07-29 09:33:39 +04:00
|
|
|
if( pref )
|
|
|
|
pref = pref.QueryInterface( Components.interfaces.nsIPref );
|
|
|
|
if( pref )
|
|
|
|
prefWindowModalityPref = pref.GetBoolPref( "browser.prefWindowModal");
|
|
|
|
}
|
|
|
|
catch(e) {
|
|
|
|
prefWindowModalityPref = true;
|
|
|
|
}
|
|
|
|
var modality = prefWindowModalityPref ? "yes" : "no";
|
|
|
|
|
2006-07-29 09:34:31 +04:00
|
|
|
var prefWindow = window.openDialog("chrome://communicator/content/pref/pref.xul","PrefWindow", "chrome,titlebar,modal=" + modality+ ",resizable=yes", paneURL, paneID);
|
2006-07-29 09:33:39 +04:00
|
|
|
}
|
|
|
|
|
2006-07-29 09:34:27 +04:00
|
|
|
function okToCapture() {
|
|
|
|
var capture = document.getElementById("menu_capture");
|
2006-07-29 09:34:28 +04:00
|
|
|
if (!capture) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (!window._content || !window._content.document) {
|
2006-07-29 09:34:27 +04:00
|
|
|
capture.setAttribute("disabled", "true");
|
|
|
|
return;
|
|
|
|
}
|
2006-07-29 09:34:41 +04:00
|
|
|
|
|
|
|
// process frames if any
|
|
|
|
var formsArray;
|
|
|
|
var framesArray = window._content.frames;
|
|
|
|
if (framesArray.length != 0) {
|
|
|
|
var frame;
|
|
|
|
for (frame=0; frame<framesArray.length; frame++) {
|
|
|
|
formsArray = framesArray[frame].document.forms;
|
|
|
|
if (okToCapture2(formsArray)) {
|
2006-07-29 09:34:27 +04:00
|
|
|
capture.setAttribute("disabled", "false");
|
|
|
|
return;
|
2006-07-29 09:34:41 +04:00
|
|
|
}
|
2006-07-29 09:34:27 +04:00
|
|
|
}
|
|
|
|
}
|
2006-07-29 09:34:41 +04:00
|
|
|
|
|
|
|
// process top-level document
|
|
|
|
formsArray = window._content.document.forms;
|
|
|
|
if (okToCapture2(formsArray)) {
|
|
|
|
capture.setAttribute("disabled", "false");
|
|
|
|
} else {
|
|
|
|
capture.setAttribute("disabled", "true");
|
|
|
|
}
|
|
|
|
return;
|
2006-07-29 09:34:27 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
function okToPrefill() {
|
|
|
|
var prefill = document.getElementById("menu_prefill");
|
2006-07-29 09:34:28 +04:00
|
|
|
if (!prefill) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (!window._content || !window._content.document) {
|
2006-07-29 09:34:27 +04:00
|
|
|
prefill.setAttribute("disabled", "true");
|
|
|
|
return;
|
|
|
|
}
|
2006-07-29 09:34:41 +04:00
|
|
|
|
|
|
|
// process frames if any
|
|
|
|
var formsArray;
|
|
|
|
var framesArray = window._content.frames;
|
|
|
|
if (framesArray.length != 0) {
|
|
|
|
var frame;
|
|
|
|
for (frame=0; frame<framesArray.length; frame++) {
|
|
|
|
formsArray = framesArray[frame].document.forms;
|
|
|
|
if (okToPrefill2(formsArray)) {
|
2006-07-29 09:34:27 +04:00
|
|
|
prefill.setAttribute("disabled", "false");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2006-07-29 09:34:41 +04:00
|
|
|
|
|
|
|
// process top-level document
|
|
|
|
formsArray = window._content.document.forms;
|
|
|
|
if (okToPrefill2(formsArray)) {
|
|
|
|
prefill.setAttribute("disabled", "false");
|
|
|
|
} else {
|
|
|
|
prefill.setAttribute("disabled", "true");
|
|
|
|
}
|
|
|
|
return;
|
2006-07-29 09:34:27 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
function capture()
|
|
|
|
{
|
|
|
|
if( appCore ) {
|
|
|
|
status = appCore.walletRequestToCapture(window._content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function prefill()
|
|
|
|
{
|
|
|
|
if( appCore ) {
|
|
|
|
appCore.walletPreview(window, window._content);
|
|
|
|
}
|
|
|
|
}
|
2006-07-29 09:33:39 +04:00
|
|
|
|
|
|
|
function goToggleToolbar( id, elementID )
|
|
|
|
{
|
|
|
|
dump( "toggling toolbar "+id+"\n");
|
|
|
|
var toolbar = document.getElementById( id );
|
|
|
|
var element = document.getElementById( elementID );
|
|
|
|
if ( toolbar )
|
|
|
|
{
|
|
|
|
var attribValue = toolbar.getAttribute("hidden") ;
|
|
|
|
|
|
|
|
//dump("set hidden to "+!attribValue+"\n");
|
2006-07-29 09:34:32 +04:00
|
|
|
if ( attribValue == "true" )
|
2006-07-29 09:33:39 +04:00
|
|
|
{
|
|
|
|
// dump( "Show \n");
|
2006-07-29 09:34:32 +04:00
|
|
|
toolbar.setAttribute("hidden", "false" );
|
2006-07-29 09:33:39 +04:00
|
|
|
if ( element )
|
|
|
|
element.setAttribute("checked","true")
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
// dump("hide \n");
|
|
|
|
toolbar.setAttribute("hidden", true );
|
|
|
|
if ( element )
|
|
|
|
element.setAttribute("checked","false")
|
|
|
|
}
|
|
|
|
document.persist(id, 'hidden');
|
|
|
|
document.persist(elementID, 'checked');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function goClickThrobber( urlPref )
|
|
|
|
{
|
|
|
|
var url;
|
|
|
|
try {
|
2006-07-29 09:34:40 +04:00
|
|
|
var pref = Components.classes["@mozilla.org/preferences;1"].getService();
|
2006-07-29 09:33:39 +04:00
|
|
|
if( pref )
|
|
|
|
pref = pref.QueryInterface( Components.interfaces.nsIPref );
|
2006-07-29 09:33:50 +04:00
|
|
|
url = pref.getLocalizedUnicharPref(urlPref);
|
2006-07-29 09:33:39 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
catch(e) {
|
|
|
|
url = null;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( url )
|
|
|
|
openTopWin(url);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//No longer needed. Rip this out since we are using openTopWin
|
|
|
|
function goHelpMenu( url )
|
|
|
|
{
|
|
|
|
/* note that this chrome url should probably change to not have all of the navigator controls */
|
|
|
|
/* also, do we want to limit the number of help windows that can be spawned? */
|
|
|
|
window.openDialog( getBrowserURL(), "_blank", "chrome,all,dialog=no", url );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function openTopWin( url )
|
|
|
|
{
|
|
|
|
/* note that this chrome url should probably change to not have all of the navigator controls,
|
|
|
|
but if we do this we need to have the option for chrome controls because goClickThrobber()
|
|
|
|
needs to use this function with chrome controls */
|
|
|
|
/* also, do we want to limit the number of help windows that can be spawned? */
|
2006-07-29 09:34:43 +04:00
|
|
|
// dump("SetPrefToCurrentPage("+ url +")\n");
|
2006-07-29 09:33:39 +04:00
|
|
|
if ((url == null) || (url == "")) return;
|
2006-07-29 09:34:43 +04:00
|
|
|
|
|
|
|
// xlate the URL if necessary
|
|
|
|
if (url.indexOf("urn:") == 0)
|
|
|
|
{
|
|
|
|
url = xlateURL(url); // does RDF urn expansion
|
|
|
|
}
|
|
|
|
|
|
|
|
// avoid loading "", since this loads a directory listing
|
|
|
|
if (url == "") {
|
|
|
|
dump("openTopWin told to load an empty URL, so loading about:blank instead\n");
|
|
|
|
url = "about:blank";
|
|
|
|
}
|
|
|
|
|
2006-07-29 09:34:40 +04:00
|
|
|
var windowManager = Components.classes['@mozilla.org/rdf/datasource;1?name=window-mediator'].getService();
|
2006-07-29 09:33:39 +04:00
|
|
|
var windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator);
|
|
|
|
|
|
|
|
var topWindowOfType = windowManagerInterface.getMostRecentWindow( "navigator:browser" );
|
|
|
|
if ( topWindowOfType )
|
|
|
|
{
|
|
|
|
topWindowOfType.focus();
|
2006-07-29 09:34:43 +04:00
|
|
|
topWindowOfType._content.location.href = url;
|
2006-07-29 09:33:39 +04:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
window.openDialog( getBrowserURL(), "_blank", "chrome,all,dialog=no", url );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function goAboutDialog()
|
|
|
|
{
|
|
|
|
var defaultAboutState = false;
|
|
|
|
try {
|
2006-07-29 09:34:40 +04:00
|
|
|
var pref = Components.classes["@mozilla.org/preferences;1"].getService();
|
2006-07-29 09:33:39 +04:00
|
|
|
if( pref )
|
|
|
|
pref = pref.QueryInterface( Components.interfaces.nsIPref );
|
|
|
|
defaultAboutState = pref.GetBoolPref("browser.show_about_as_stupid_modal_window");
|
|
|
|
}
|
|
|
|
catch(e) {
|
|
|
|
defaultAboutState = false;
|
|
|
|
}
|
|
|
|
if( defaultAboutState )
|
|
|
|
window.openDialog("chrome:global/content/about.xul", "About", "modal,chrome,resizable=yes,height=450,width=550");
|
|
|
|
else
|
2006-07-29 09:34:29 +04:00
|
|
|
window.openDialog( getBrowserURL(), "_blank", "chrome,all,dialog=no", 'chrome://global/locale/about.html' );
|
2006-07-29 09:33:39 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function goUpdateGlobalEditMenuItems()
|
|
|
|
{
|
|
|
|
//dump("Updating edit menu items\n");
|
|
|
|
goUpdateCommand('cmd_undo');
|
|
|
|
goUpdateCommand('cmd_redo');
|
|
|
|
goUpdateCommand('cmd_cut');
|
|
|
|
goUpdateCommand('cmd_copy');
|
|
|
|
goUpdateCommand('cmd_paste');
|
|
|
|
goUpdateCommand('cmd_selectAll');
|
|
|
|
goUpdateCommand('cmd_delete');
|
|
|
|
}
|
|
|
|
|
2006-07-29 09:34:27 +04:00
|
|
|
function goUpdateFormsEditMenuItems() {
|
|
|
|
okToCapture();
|
|
|
|
okToPrefill();
|
|
|
|
}
|
|
|
|
|
2006-07-29 09:33:39 +04:00
|
|
|
// update menu items that rely on the current selection
|
|
|
|
function goUpdateSelectEditMenuItems()
|
|
|
|
{
|
|
|
|
//dump("Updating select menu items\n");
|
|
|
|
goUpdateCommand('cmd_cut');
|
|
|
|
goUpdateCommand('cmd_copy');
|
|
|
|
goUpdateCommand('cmd_delete');
|
|
|
|
}
|
|
|
|
|
|
|
|
// update menu items that relate to undo/redo
|
|
|
|
function goUpdateUndoEditMenuItems()
|
|
|
|
{
|
|
|
|
//dump("Updating undo/redo menu items\n");
|
|
|
|
goUpdateCommand('cmd_undo');
|
|
|
|
goUpdateCommand('cmd_redo');
|
2006-07-29 09:34:24 +04:00
|
|
|
}
|
2006-07-29 09:33:39 +04:00
|
|
|
|
2006-07-29 09:34:24 +04:00
|
|
|
// update menu items that depend on clipboard contents
|
|
|
|
function goUpdatePasteMenuItems()
|
|
|
|
{
|
|
|
|
//dump("Updating clipboard menu items\n");
|
2006-07-29 09:33:39 +04:00
|
|
|
goUpdateCommand('cmd_paste');
|
|
|
|
}
|
|
|
|
|
|
|
|
// This used to be BrowserNewEditorWindow in navigator.js
|
|
|
|
function NewEditorWindow()
|
|
|
|
{
|
|
|
|
dump("In NewEditorWindow()...\n");
|
|
|
|
// Open editor window with blank page
|
|
|
|
// Kludge to leverage openDialog non-modal!
|
|
|
|
window.openDialog( "chrome://editor/content", "_blank", "chrome,all,dialog=no", "about:blank");
|
|
|
|
}
|
|
|
|
|
|
|
|
function NewEditorFromTemplate()
|
|
|
|
{
|
|
|
|
dump("NOT IMPLEMENTED: Write NewEditorFromTemplate()!\n")
|
|
|
|
}
|
|
|
|
|
|
|
|
function NewEditorFromDraft()
|
|
|
|
{
|
|
|
|
dump("NOT IMPLEMENTED: Write NewEditorFromDraft()!\n")
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function helpMenuCreate()
|
|
|
|
{
|
|
|
|
//adding the brand string to the about
|
|
|
|
var BrandBundle = srGetStrBundle("chrome://global/locale/brand.properties");
|
|
|
|
var aboutStrName = BrandBundle.GetStringFromName("aboutStrName");
|
|
|
|
var aboutItem = document.getElementById( "releaseName" );
|
|
|
|
aboutItem.setAttribute("value", aboutStrName);
|
|
|
|
|
|
|
|
//Adding the release url since it will change based on brand
|
|
|
|
var BrandRelUrl = BrandBundle.GetStringFromName("releaseUrl");
|
|
|
|
var relCommand = "openTopWin(\'" + BrandRelUrl + "\')";
|
|
|
|
var relItem = document.getElementById( "releaseUrl" );
|
|
|
|
relItem.setAttribute("oncommand", relCommand);
|
|
|
|
}
|
|
|
|
|