home *** CD-ROM | disk | FTP | other *** search
/ Clickx 47 / Clickx 47.iso / assets / software / switchproxy.xpi / chrome / switchproxy.jar / content / tabmanager.js < prev   
Encoding:
JavaScript  |  2006-04-11  |  3.8 KB  |  146 lines

  1.  
  2. /* 
  3. * Tab Manager Object
  4. */
  5. function switchproxy_TabManager(){
  6.     this.manage    = false;
  7.     this.tabs     = new Array();
  8.     
  9.     // Read Preferences (toggle manager on/off)
  10.     try{
  11.         var    oPrefs    = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  12.             manage    = (oPrefs.prefHasUserValue("switchproxy.tabs.manager") && oPrefs.getBoolPref("switchproxy.tabs.manager") == true);
  13.         
  14.         // Add Pref Observer
  15.         var oTabManagerPrefObserver = {
  16.             observe : function(subject, topic, data){ if(data == true && manage == false) { manage = true; /*switchproxy_setProxy(false)*/; } }
  17.         };
  18.         oPrefs    = Components.classes["@mozilla.org/preferences-service;1"].createInstance(Components.interfaces.nsIPrefBranchInternal);
  19.         oPrefs.addObserver("switchproxy.tabs.manager", oTabManagerPrefObserver, false);
  20.     } catch(err){}
  21.     
  22.     
  23.     this.getTabForBrowser    = switchproxy_tab_getTabForBrowser;
  24.     this.getTabForDocument    = switchproxy_tab_getTabForDocument;
  25.     this.tabLoading         = switchproxy_tab_tabLoading;
  26. }
  27.  
  28. // Called on new Window/Tab 
  29. function switchproxy_tab_tabLoading(){
  30.     
  31.     try{
  32.         // Verify all tabs are in list
  33.         var aBrowsers     = gBrowser.browsers;
  34.         for(var i = 0; i < aBrowsers.length; i++){
  35.             if(this.getTabForBrowser(aBrowsers[i]) == null){
  36.                 var index = this.tabs.length;
  37.                 this.tabs[index] = new switchproxy_Tab(aBrowsers[i], null, index);
  38.             }
  39.         }
  40.     } catch(err) {alert(err)}
  41.  
  42. }
  43.  
  44. // Return switchproxy_Tab object for oBrowser
  45. function switchproxy_tab_getTabForBrowser(oBrowser){
  46.     for(var t = 0; t < this.tabs.length; t++){
  47.         if(this.tabs[t].browser == oBrowser)
  48.             return this.tabs[t];
  49.     }    
  50.     return null;
  51. }
  52.  
  53. // Return switchproxy_Tab object for oDocument
  54. function switchproxy_tab_getTabForDocument(oDocument){
  55.     for(var t = 0; t < this.tabs.length; t++){
  56.         if(this.tabs[t].browser.contentDocument == oDocument)
  57.             return this.tabs[t];
  58.     }    
  59.     return null;
  60. }
  61.  
  62. /*
  63. * Tab Object
  64. */
  65. function switchproxy_Tab(browser, proxy, index){
  66.     this.browser     = browser;
  67.     this.proxy        = proxy;
  68.     this.title        = "";
  69.     this.index        = index;
  70.     
  71.     //alert(this.browser.contentDocument)
  72.     
  73.     if(this.browser != null){
  74.         try{
  75.             this.browser.addEventListener("focus", switchproxy_tab_onfocus, true);
  76.             this.browser.addEventListener("unload", switchproxy_tab_onunload, true);
  77.             this.browser.addEventListener("load", switchproxy_tab_onloaded, true);
  78.         } catch(err) { alert(err); }
  79.     }
  80.     
  81.     this.updateTitle = function(){
  82.         
  83.         if(this.proxy != null && this.proxy != ""){
  84.             
  85.             // Get label for proxy uri
  86.             var    oRes        = switchProxy_ds_getResource(aProxies[i]);
  87.             var sProxyName    = switchProxy_ds_getValueFor(oRes, switchProxy_ds_getResource(gSProxyRdfNodeName));
  88.             
  89.             // Set title
  90.             if(sProxyName != null){
  91.                 this.browser.contentDocument.title = "["+ sProxyName +"] " +this.title;
  92.             }
  93.         }        
  94.     }
  95. }
  96.  
  97.  
  98. /*
  99. * Utilities
  100. */
  101.     // Notify current tab of proxy change
  102.     function switchproxy_tab_notify(sUri){
  103.         var oTab = switchproxy_getTabManager().getTabForBrowser(gBrowser.selectedBrowser);
  104.         
  105.         oTab.proxyUri = sUri;
  106.         oTab.updateTitle();
  107.     }
  108.  
  109. /*
  110. * Event Handlers
  111. */
  112.  
  113.     // On Tab Focus
  114.     function switchproxy_tab_onfocus(event){
  115.         try{
  116.             var oTab = switchproxy_getTabManager().getTabForBrowser(gBrowser.selectedBrowser)
  117.             //oTab.browser.contentDocument.title = oTab.index;
  118.             
  119.             //switchproxy_setProxy();
  120.         }catch(err) { }
  121.     }
  122.     
  123.     // On Window Focus
  124.     function switchproxy_tab_windowFocus(event){
  125.         try{
  126.             if(event.target.nodeName = "tabbrowser"){
  127.                 
  128.             }
  129.         }catch(err) { }
  130.     }
  131.     
  132.     // On tab unload
  133.     function switchproxy_tab_onunload(event){
  134.         try{
  135.             var oTab = switchproxy_getTabManager().getTabForDocument(event.target);
  136.             //oTab.browser.contentDocument.title = "Refreshing...";
  137.         }catch(err) { }
  138.     }
  139.     
  140.     // On tab load
  141.     function switchproxy_tab_onloaded(event){
  142.         try{
  143.             var oTab = switchproxy_getTabManager().getTabForDocument(event.target);
  144.             //oTab.browser.contentDocument.title = "Loaded";
  145.         }catch(err) { }
  146.     }