home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2005 December
/
PCWorld_2005-12_cd.bin
/
komunikace
/
netscape
/
nsb-install-8-0.exe
/
chrome
/
toolkit.jar
/
content
/
global
/
globalOverlay.js
< prev
next >
Wrap
Text File
|
2005-09-26
|
8KB
|
289 lines
function closeWindow(aClose)
{
var windowCount = 0;
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
var e = wm.getEnumerator(null);
while (e.hasMoreElements()) {
var w = e.getNext();
++windowCount;
if (windowCount == 2)
break;
}
// If we're down to the last window and someone tries to shut down, check to make sure we can!
if (windowCount == 1 && !canQuitApplication())
return false;
if (aClose)
window.close();
return true;
}
function canQuitApplication()
{
var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
if (os) {
try {
var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"].createInstance(Components.interfaces.nsISupportsPRBool);
os.notifyObservers(cancelQuit, "quit-application-requested", null);
// Something aborted the quit process.
if (cancelQuit.data)
return false;
}
catch (ex) {
}
}
return true;
}
function goQuitApplication()
{
if (!canQuitApplication())
return;
var windowManager = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService();
var windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator);
var enumerator = windowManagerInterface.getEnumerator( null );
var appShell = Components.classes['@mozilla.org/appshell/appShellService;1'].getService();
appShell = appShell.QueryInterface( Components.interfaces.nsIAppShellService );
// flag to see if the user clicked no on confirmation to close any of the windows
var stillExit = true;
var nativeAppSupport = null;
try {
nativeAppSupport = appShell.nativeAppSupport;
}
catch ( ex ) {
}
//loop through each window in the application
while ( enumerator.hasMoreElements() && stillExit)
{
var domWindow = enumerator.getNext();
if (("tryToClose" in domWindow) && !domWindow.tryToClose())
return false;
// if the user has multiple tabs open in a window confirm
if (userConfirms(domWindow)) {
domWindow.close();
} else {
var stillExit = false;
}
};
// closed all app windows, now quit the app
if (stillExit) {
appShell.quit(Components.interfaces.nsIAppShellService.eAttemptQuit);
return false;
}
return true;
}
//
// Command Updater functions
//
function goUpdateCommand(command)
{
//JA
//dump("\nJA Update Menu Command: "+command+"\n");
var TabBrowser = document.getElementById("content");
//dump("JA TabBrowser =: "+TabBrowser+"\n");
if(TabBrowser)
{
var hpDoc;
try{
hpDoc=TabBrowser.contentDocument.QueryInterface(Components.interfaces.nsIHTMLPluginDocument);
}
catch(ex){}
//dump("JA hpDoc = "+hpDoc+"\n");
if(hpDoc)
{
try{
var enabled = hpDoc.isCommandEnabled(command);
goSetCommandEnabled(command, enabled);
return;
}catch(e){
// dump("JA hpDoc has no focus or couldn't update command"+command+"\n");
}
}
}
//end JA
try {
var controller = top.document.commandDispatcher.getControllerForCommand(command);
var enabled = false;
if ( controller )
enabled = controller.isCommandEnabled(command);
goSetCommandEnabled(command, enabled);
}
catch (e) {
dump("An error occurred updating the "+command+" command\n");
}
}
function goDoCommand(command)
{
//JA
//dump("\nJA Menu Command: "+command+"\n");
var TabBrowser = document.getElementById("content");
//dump("JA TabBrowser =: "+TabBrowser+"\n");
if(TabBrowser)
{
var hpDoc;
try{
hpDoc=TabBrowser.contentDocument.QueryInterface(Components.interfaces.nsIHTMLPluginDocument);
}
catch(ex){}
//dump("JA hpDoc = "+hpDoc+"\n");
if(hpDoc)
{
try{
hpDoc.doMenuCmd(command);
return;//exception is thrown if not handled
}catch(e){
dump("hpDoc couldn't execute command"+command+"\n");
}
}
}
//end JA
try {
var controller = top.document.commandDispatcher.getControllerForCommand(command);
if ( controller && controller.isCommandEnabled(command))
controller.doCommand(command);
}
catch (e) {
dump("An error occurred executing the "+command+" command\n");
dump(e+"\n")
}
}
function goSetCommandEnabled(id, enabled)
{
var node = document.getElementById(id);
if ( node )
{
if ( enabled )
node.removeAttribute("disabled");
else
node.setAttribute('disabled', 'true');
}
}
function goSetMenuValue(command, labelAttribute)
{
var commandNode = top.document.getElementById(command);
if ( commandNode )
{
var label = commandNode.getAttribute(labelAttribute);
if ( label )
commandNode.setAttribute('label', label);
}
}
function goSetAccessKey(command, valueAttribute)
{
var commandNode = top.document.getElementById(command);
if ( commandNode )
{
var value = commandNode.getAttribute(valueAttribute);
if ( value )
commandNode.setAttribute('accesskey', value);
}
}
// this function is used to inform all the controllers attached to a node that an event has occurred
// (e.g. the tree controllers need to be informed of blur events so that they can change some of the
// menu items back to their default values)
function goOnEvent(node, event)
{
var numControllers = node.controllers.getControllerCount();
var controller;
for ( var controllerIndex = 0; controllerIndex < numControllers; controllerIndex++ )
{
controller = node.controllers.getControllerAt(controllerIndex);
if ( controller )
controller.onEvent(event);
}
}
function visitLink(aEvent) {
var node = aEvent.target;
while (node.nodeType != Node.ELEMENT_NODE)
node = node.parentNode;
var url = node.getAttribute("link");
if (url != "")
top.opener.openNewWindowWith(url, null, false);
}
function isValidLeftClick(aEvent, aName)
{
return (aEvent.button == 0 && aEvent.originalTarget.localName == aName);
}
function setTooltipText(aID, aTooltipText)
{
var element = document.getElementById(aID);
if (element)
element.setAttribute("tooltiptext", aTooltipText);
}
function FillInTooltip ( tipElement )
{
var retVal = false;
var textNode = document.getElementById("TOOLTIP-tooltipText");
if (textNode) {
while (textNode.hasChildNodes())
textNode.removeChild(textNode.firstChild);
var tipText = tipElement.getAttribute("tooltiptext");
if (tipText) {
var node = document.createTextNode(tipText);
textNode.appendChild(node);
retVal = true;
}
}
return retVal;
}
function TrackData(commandObject)
{
try
{
if (perfmon)
{
// Cases arise from command elements, from button elements and from menuitem elements
// Never track twice :p
if (commandObject.hasAttribute("oncommand") || commandObject.localName == 'menuitem')
perfmon.trackData(commandObject);
}
} catch (ex) {
dump("TrackData failed... \n\n\n");
}
}
function userConfirms(currWindow)
{
var browser = currWindow.document.getElementById("content");
var cn = browser.tabContainer.childNodes;
var numtabs = cn.length;
var reallyClose = browser.warnAboutClosingTabs(true);
for (var i = 0; reallyClose && i < numtabs; ++i) {
var ds = browser.getBrowserForTab(cn[i]).docShell;
if (ds.contentViewer && !ds.contentViewer.permitUnload())
reallyClose = false;
}
return reallyClose;
}