forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			199 lines
		
	
	
	
		
			5.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			199 lines
		
	
	
	
		
			5.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| function closeWindow(aClose, aPromptFunction)
 | |
| {
 | |
|   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();
 | |
|     if (++windowCount == 2) 
 | |
|       break;
 | |
|   }
 | |
| 
 | |
| # Closing the last window doesn't quit the application on OS X.
 | |
| #ifndef XP_MACOSX
 | |
|   // 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;
 | |
|   else if (windowCount != 1)
 | |
| #endif
 | |
|     if (typeof(aPromptFunction) == "function" && !aPromptFunction())
 | |
|       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) return true;
 | |
|   
 | |
|   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 false;
 | |
| 
 | |
|   var appStartup = Components.classes['@mozilla.org/toolkit/app-startup;1'].
 | |
|                      getService(Components.interfaces.nsIAppStartup);
 | |
| 
 | |
|   appStartup.quit(Components.interfaces.nsIAppStartup.eAttemptQuit);
 | |
|   return true;
 | |
| }
 | |
| 
 | |
| //
 | |
| // Command Updater functions
 | |
| //
 | |
| function goUpdateCommand(aCommand)
 | |
| {
 | |
|   try {
 | |
|     var controller = top.document.commandDispatcher
 | |
|                         .getControllerForCommand(aCommand);
 | |
| 
 | |
|     var enabled = false;
 | |
|     if (controller)
 | |
|       enabled = controller.isCommandEnabled(aCommand);
 | |
| 
 | |
|     goSetCommandEnabled(aCommand, enabled);
 | |
|   }
 | |
|   catch (e) {
 | |
|     dump("An error occurred updating the " + aCommand + " command\n");
 | |
|   }
 | |
| }
 | |
| 
 | |
| function goDoCommand(aCommand)
 | |
| {
 | |
|   try {
 | |
|     var controller = top.document.commandDispatcher
 | |
|                         .getControllerForCommand(aCommand);
 | |
|     if (controller && controller.isCommandEnabled(aCommand))
 | |
|       controller.doCommand(aCommand);
 | |
|   }
 | |
|   catch (e) {
 | |
|     dump("An error occurred executing the " + aCommand + " command\n" + e + "\n");
 | |
|   }
 | |
| }
 | |
| 
 | |
| 
 | |
| function goSetCommandEnabled(aID, aEnabled)
 | |
| {
 | |
|   var node = document.getElementById(aID);
 | |
| 
 | |
|   if (node) {
 | |
|     if (aEnabled)
 | |
|       node.removeAttribute("disabled");
 | |
|     else
 | |
|       node.setAttribute("disabled", "true");
 | |
|   }
 | |
| }
 | |
| 
 | |
| function goSetMenuValue(aCommand, aLabelAttribute)
 | |
| {
 | |
|   var commandNode = top.document.getElementById(aCommand);
 | |
|   if (commandNode) {
 | |
|     var label = commandNode.getAttribute(aLabelAttribute);
 | |
|     if (label)
 | |
|       commandNode.setAttribute("label", label);
 | |
|   }
 | |
| }
 | |
| 
 | |
| function goSetAccessKey(aCommand, aValueAttribute)
 | |
| {
 | |
|   var commandNode = top.document.getElementById(aCommand);
 | |
|   if (commandNode) {
 | |
|     var value = commandNode.getAttribute(aValueAttribute);
 | |
|     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(aNode, aEvent)
 | |
| {
 | |
|   var numControllers = aNode.controllers.getControllerCount();
 | |
|   var controller;
 | |
| 
 | |
|   for (var controllerIndex = 0; controllerIndex < numControllers; controllerIndex++) {
 | |
|     controller = aNode.controllers.getControllerAt(controllerIndex);
 | |
|     if (controller)
 | |
|       controller.onEvent(aEvent);
 | |
|   }
 | |
| }
 | |
| 
 | |
| function visitLink(aEvent) {
 | |
|   var node = aEvent.target;
 | |
|   while (node.nodeType != Node.ELEMENT_NODE)
 | |
|     node = node.parentNode;
 | |
|   var url = node.getAttribute("link");
 | |
|   if (!url)
 | |
|     return;
 | |
| 
 | |
|   var protocolSvc = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"]
 | |
|                               .getService(Components.interfaces.nsIExternalProtocolService);
 | |
|   var ioService = Components.classes["@mozilla.org/network/io-service;1"]
 | |
|                             .getService(Components.interfaces.nsIIOService);
 | |
|   var uri = ioService.newURI(url, null, null);
 | |
| 
 | |
|   // if the scheme is not an exposed protocol, then opening this link
 | |
|   // should be deferred to the system's external protocol handler
 | |
|   if (protocolSvc.isExposedProtocol(uri.scheme)) {
 | |
|     var win = window.top;
 | |
|     if (win instanceof Components.interfaces.nsIDOMChromeWindow) {
 | |
|       while (win.opener && !win.opener.closed)
 | |
|         win = win.opener;
 | |
|     }
 | |
|     win.open(uri.spec);
 | |
|   }
 | |
|   else
 | |
|     protocolSvc.loadUrl(uri);
 | |
| }
 | |
| 
 | |
| 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;
 | |
| }
 | |
| 
 | |
| #include debug.js
 | 
