home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 July & August / PCWorld_2005-07-08_cd.bin / komunikace / netscape / nsb-install-8-0.exe / chrome / toolkit.jar / content / global / globalOverlay.js < prev    next >
Text File  |  2005-03-23  |  8KB  |  289 lines

  1. function closeWindow(aClose)
  2. {
  3.   var windowCount = 0;
  4.   var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
  5.   var e = wm.getEnumerator(null);
  6.   
  7.   while (e.hasMoreElements()) {
  8.     var w = e.getNext();
  9.     ++windowCount;
  10.     if (windowCount == 2) 
  11.       break;
  12.   }
  13.  
  14.   // If we're down to the last window and someone tries to shut down, check to make sure we can!
  15.   if (windowCount == 1 && !canQuitApplication()) 
  16.     return false;
  17.  
  18.   if (aClose)    
  19.     window.close();
  20.   
  21.   return true;
  22. }
  23.  
  24. function canQuitApplication()
  25. {
  26.   var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
  27.   if (os) {
  28.     try {
  29.       var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"].createInstance(Components.interfaces.nsISupportsPRBool);
  30.       os.notifyObservers(cancelQuit, "quit-application-requested", null);
  31.       
  32.       // Something aborted the quit process. 
  33.       if (cancelQuit.data)
  34.         return false;
  35.     }
  36.     catch (ex) {
  37.     }
  38.   }
  39.   return true;
  40. }
  41.  
  42. function goQuitApplication()
  43. {
  44.   if (!canQuitApplication())
  45.     return;
  46.     
  47.   var windowManager = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService();
  48.   var windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator);
  49.   var enumerator = windowManagerInterface.getEnumerator( null );
  50.   var appShell = Components.classes['@mozilla.org/appshell/appShellService;1'].getService();
  51.   appShell = appShell.QueryInterface( Components.interfaces.nsIAppShellService );
  52.   
  53.   // flag to see if the user clicked no on confirmation to close any of the windows
  54.   var stillExit = true;
  55.  
  56.   var nativeAppSupport = null;
  57.   try {
  58.     nativeAppSupport = appShell.nativeAppSupport;
  59.   }
  60.   catch ( ex ) {
  61.   }
  62.  
  63.   //loop through each window in the application
  64.   while ( enumerator.hasMoreElements()  && stillExit)
  65.   {
  66.      var domWindow = enumerator.getNext();
  67.      if (("tryToClose" in domWindow) && !domWindow.tryToClose())
  68.        return false;          
  69.     
  70.     // if the user has multiple tabs open in a window confirm 
  71.     if (userConfirms(domWindow)) {
  72.          domWindow.close();
  73.     } else {
  74.         var stillExit = false;    
  75.     }    
  76.   };
  77.    
  78.   // closed all app windows, now quit the app  
  79.   if (stillExit) {
  80.       appShell.quit(Components.interfaces.nsIAppShellService.eAttemptQuit);
  81.       return false;
  82.   }
  83.   
  84.   return true;
  85. }
  86.  
  87. //
  88. // Command Updater functions
  89. //
  90. function goUpdateCommand(command)
  91. {
  92.   //JA 
  93.     //dump("\nJA Update Menu Command: "+command+"\n");
  94.     var TabBrowser = document.getElementById("content");
  95.     //dump("JA TabBrowser =: "+TabBrowser+"\n");
  96.     if(TabBrowser)
  97.     {
  98.         var hpDoc; 
  99.         try{
  100.             hpDoc=TabBrowser.contentDocument.QueryInterface(Components.interfaces.nsIHTMLPluginDocument);
  101.         }
  102.         catch(ex){}
  103.         //dump("JA hpDoc = "+hpDoc+"\n");
  104.         if(hpDoc)
  105.         {
  106.             try{
  107.                 var enabled = hpDoc.isCommandEnabled(command);
  108.                 goSetCommandEnabled(command, enabled);
  109.                 return;
  110.             }catch(e){
  111.             //    dump("JA hpDoc has no focus or couldn't update command"+command+"\n");
  112.             }
  113.         }
  114.     }
  115.     //end JA 
  116.  
  117.   try {
  118.     var controller = top.document.commandDispatcher.getControllerForCommand(command);
  119.  
  120.     var enabled = false;
  121.  
  122.     if ( controller )
  123.       enabled = controller.isCommandEnabled(command);
  124.  
  125.     goSetCommandEnabled(command, enabled);
  126.   }
  127.   catch (e) {
  128.     dump("An error occurred updating the "+command+" command\n");
  129.   }
  130. }
  131.  
  132. function goDoCommand(command)
  133. {
  134.   //JA 
  135.     //dump("\nJA Menu Command: "+command+"\n");
  136.     var TabBrowser = document.getElementById("content");
  137.     //dump("JA TabBrowser =: "+TabBrowser+"\n");
  138.     if(TabBrowser)
  139.     {
  140.         var hpDoc; 
  141.         try{
  142.             hpDoc=TabBrowser.contentDocument.QueryInterface(Components.interfaces.nsIHTMLPluginDocument);
  143.         }
  144.         catch(ex){}
  145.         //dump("JA hpDoc = "+hpDoc+"\n");
  146.         if(hpDoc)
  147.         {
  148.             try{
  149.                 hpDoc.doMenuCmd(command);
  150.                 return;//exception is thrown if not handled
  151.             }catch(e){
  152.                 dump("hpDoc couldn't execute command"+command+"\n");
  153.             }
  154.         }
  155.     }
  156.     //end JA 
  157.   try {
  158.     var controller = top.document.commandDispatcher.getControllerForCommand(command);
  159.     if ( controller && controller.isCommandEnabled(command))
  160.       controller.doCommand(command);
  161.   }
  162.   catch (e) {
  163.     dump("An error occurred executing the "+command+" command\n");
  164.     dump(e+"\n")
  165.   }
  166. }
  167.  
  168.  
  169. function goSetCommandEnabled(id, enabled)
  170. {
  171.   var node = document.getElementById(id);
  172.  
  173.   if ( node )
  174.   {
  175.     if ( enabled )
  176.       node.removeAttribute("disabled");
  177.     else
  178.       node.setAttribute('disabled', 'true');
  179.   }
  180. }
  181.  
  182. function goSetMenuValue(command, labelAttribute)
  183. {
  184.   var commandNode = top.document.getElementById(command);
  185.   if ( commandNode )
  186.   {
  187.     var label = commandNode.getAttribute(labelAttribute);
  188.     if ( label )
  189.       commandNode.setAttribute('label', label);
  190.   }
  191. }
  192.  
  193. function goSetAccessKey(command, valueAttribute)
  194. {
  195.   var commandNode = top.document.getElementById(command);
  196.   if ( commandNode )
  197.   {
  198.     var value = commandNode.getAttribute(valueAttribute);
  199.     if ( value )
  200.       commandNode.setAttribute('accesskey', value);
  201.   }
  202. }
  203.  
  204. // this function is used to inform all the controllers attached to a node that an event has occurred
  205. // (e.g. the tree controllers need to be informed of blur events so that they can change some of the
  206. // menu items back to their default values)
  207. function goOnEvent(node, event)
  208. {
  209.   var numControllers = node.controllers.getControllerCount();
  210.   var controller;
  211.  
  212.   for ( var controllerIndex = 0; controllerIndex < numControllers; controllerIndex++ )
  213.   {
  214.     controller = node.controllers.getControllerAt(controllerIndex);
  215.     if ( controller )
  216.       controller.onEvent(event);
  217.   }
  218. }
  219.  
  220. function visitLink(aEvent) {
  221.   var node = aEvent.target;
  222.   while (node.nodeType != Node.ELEMENT_NODE)
  223.     node = node.parentNode;
  224.   var url = node.getAttribute("link");
  225.   if (url != "")
  226.     top.opener.openNewWindowWith(url, null, false);
  227. }
  228.  
  229. function isValidLeftClick(aEvent, aName)
  230. {
  231.   return (aEvent.button == 0 && aEvent.originalTarget.localName == aName);
  232. }
  233.  
  234. function setTooltipText(aID, aTooltipText)
  235. {
  236.   var element = document.getElementById(aID);
  237.   if (element)
  238.     element.setAttribute("tooltiptext", aTooltipText);
  239. }
  240.  
  241. function FillInTooltip ( tipElement )
  242. {
  243.   var retVal = false;
  244.   var textNode = document.getElementById("TOOLTIP-tooltipText");
  245.   if (textNode) {
  246.     while (textNode.hasChildNodes())
  247.       textNode.removeChild(textNode.firstChild);
  248.     var tipText = tipElement.getAttribute("tooltiptext");
  249.     if (tipText) {
  250.       var node = document.createTextNode(tipText);
  251.       textNode.appendChild(node);
  252.       retVal = true;
  253.     }
  254.   }
  255.   return retVal;
  256. }
  257.  
  258. function TrackData(commandObject)
  259. {
  260.   try
  261.   {
  262.     if (perfmon)
  263.     {            
  264.         // Cases arise from command elements, from button elements and from menuitem elements
  265.         // Never track twice :p
  266.         if (commandObject.hasAttribute("oncommand") || commandObject.localName == 'menuitem')
  267.           perfmon.trackData(commandObject);        
  268.     }
  269.   } catch (ex) { 
  270.           dump("TrackData failed... \n\n\n");
  271.       }
  272. }
  273.  
  274. function userConfirms(currWindow) 
  275. {
  276.     var browser = currWindow.document.getElementById("content");
  277.     var cn = browser.tabContainer.childNodes;
  278.     var numtabs = cn.length;
  279.     var reallyClose = browser.warnAboutClosingTabs(true);
  280.  
  281.     for (var i = 0; reallyClose && i < numtabs; ++i) {
  282.         var ds = browser.getBrowserForTab(cn[i]).docShell;
  283.         if (ds.contentViewer && !ds.contentViewer.permitUnload())
  284.         reallyClose = false;
  285.     }
  286.     
  287.     return reallyClose;
  288.     
  289. }