home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 December / PCWorld_2005-12_cd.bin / komunikace / netscape / nsb-install-8-0.exe / chrome / browser.jar / content / browser / titlebar.js < prev    next >
Text File  |  2005-09-26  |  6KB  |  183 lines

  1. var titlebar = {
  2.     windowTitleListener : {
  3.         onWindowTitleChange : function(xulwin, title) {
  4.             //var thisWindow = document.getElementById('main-window');
  5.             //var thisWindow = window.QueryInterface(Components.interfaces.nsIXULWindow);
  6.             //dump('>>>>>>>>>>>>>> onWindowTitleChange: window: '+xulwin+', '+title+'\n');
  7.             var docshell = xulwin.docShell;
  8.             try { // Bin - if this (try & catch) affects performance, we should remove it
  9.                 var requestor = docshell.QueryInterface(Components.interfaces.nsIInterfaceRequestor);
  10.                 var domwin = requestor.getInterface(Components.interfaces.nsIDOMWindow);
  11.                 if (domwin != window) return;
  12.                 var lbl = document.getElementById('titlebar-title');
  13.                 if(lbl)//JA
  14.                     lbl.value = title;                
  15.             }
  16.             catch (e){}
  17.         },
  18.         onOpenWindow : function(wnd) { },
  19.         onCloseWindow : function(wnd) { },
  20.     },
  21.  
  22.     init : function() {
  23.         var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
  24.                            .getService(Components.interfaces.nsIWindowMediator);
  25.         wm.addListener(this.windowTitleListener);
  26.     },
  27.  
  28.     debug : function(txt) {
  29.         //dump('titlebar: '+txt+'\n');
  30.     },
  31.  
  32.     menuState : 2,  // 0=label 1=transition 2=menus 3=transition
  33.  
  34.     onmouseover : function(event) {
  35.         if (this.menuState==0) {
  36.             this.debug('onmouseover()');
  37.             this.animLabelToMenus();
  38.         } else {
  39.             this.debug('onmouseover(): menuState: '+this.menuState);
  40.         }
  41.     },
  42.  
  43.     onmousemove : function(event) {
  44.         if (this.menuState==0) {
  45.             this.debug('onmousemove()');
  46.             // The mouse cursor somehow got inside the titlebar without
  47.             // initiating the transition to menus, so force the menus
  48.             // display immediately
  49.             this.forceLabelToMenus();
  50.         }
  51.     },
  52.  
  53.     onmouseout : function(event) {
  54.         if (this.menuState==2) {
  55.             this.debug('onmouseout()');
  56.             if (this.isOverTitlebar(event) || this.isMenuOpen()) {
  57.                 // Check again after a few seconds
  58.                 //setTimeout('titlebar.onmouseout();',5000);
  59.                 return;
  60.             }
  61.             this.animMenusToLabel();
  62.         }
  63.     },
  64.  
  65.     // Test if any menus are currently open
  66.     isMenuOpen : function() {
  67.         var menubar = document.getElementById('main-menubar');
  68.         var menus = menubar.childNodes;
  69.         for (var i = 0; i < menus.length; i++) {
  70.             if (menus[i].getAttribute('open')=='true') return true;
  71.         }
  72.         return false;
  73.     },
  74.  
  75.     // Test if the mouse is currently inside the titlebar
  76.     isOverTitlebar : function(event) {
  77.         var tb = document.getElementById('titlebar');
  78.         if ((tb.boxObject.screenX <= event.screenX)
  79.              && (event.screenX - tb.boxObject.screenX <= tb.boxObject.width)
  80.              && (tb.boxObject.screenY <= event.screenY)
  81.              && (event.screenY - tb.boxObject.screenY <= tb.boxObject.height)) {
  82.             return true;
  83.         }
  84.         return false;
  85.     },
  86.  
  87.     lastMouseDown : null,
  88.  
  89.     throbberMouseDown : function(event) {
  90.         lastMouseDown = new Object();
  91.         lastMouseDown.x = event.screenX;
  92.         lastMouseDown.y = event.screenY;
  93.     },
  94.  
  95.     throbberMouseUp : function(event) {
  96.         // We want a single click on the throbber to go to the throbber URL,
  97.         // but we DON'T want a click-and-drag action to do this.
  98.         if (lastMouseDown &&
  99.             (lastMouseDown.x == event.screenX) &&
  100.             (lastMouseDown.y == event.screenY))
  101.         {
  102.             goClickThrobber('browser.throbber.url', event);
  103.             lastMouseDown = null;
  104.         }
  105.     },
  106.  
  107.     animWait : 15, // milliseconds
  108.  
  109.     // Animate from label to menus
  110.     animLabelToMenus : function(phase, iter) {
  111.         this.menuState = 1;
  112.         if (!phase) phase = 1;
  113.         if (!iter) iter = 0;
  114.         this.debug('animLabelToMenus('+phase+','+iter+')');
  115.         switch (phase) {
  116.         case 1: // Fade out the label
  117.             var label = document.getElementById('menu-label-box');
  118.             if (iter <= 10) {
  119.                 label.style.MozOpacity = 1 - (iter/10);
  120.                 setTimeout('titlebar.animLabelToMenus(1,'+(iter+1)+');',this.animWait);
  121.             } else {
  122.                 label.setAttribute('hidden','true');
  123.                 setTimeout('titlebar.animLabelToMenus(2,0);',this.animWait);
  124.             }
  125.             break;
  126.         case 2: // Fade in menus
  127.             if (iter <= 10) {
  128.                 var menus = document.getElementById('menubar-items');
  129.                 menus.style.MozOpacity = iter / 10;
  130.                 if (iter == 0) menus.removeAttribute('hidden');
  131.             }
  132.             if (iter < 10)
  133.                 setTimeout('titlebar.animLabelToMenus(2,'+(iter+1)+');',this.animWait);
  134.             else if (iter == 10) this.menuState = 2;
  135.         }
  136.     },
  137.  
  138.     // In some cases we may want to force the transition to menus more rapidly
  139.     forceLabelToMenus : function() {
  140.         this.menuState = 1;
  141.         var label = document.getElementById('menu-label-box');
  142.         label.style.MozOpacity = 0;
  143.         label.setAttribute('hidden','true');
  144.         var menus = document.getElementById('menubar-items');
  145.         menus.style.MozOpacity = 1;
  146.         menus.removeAttribute('hidden');
  147.         this.menuState = 2;
  148.     },
  149.  
  150.     // Animate from menus to label
  151.     animMenusToLabel : function(phase, iter) {
  152.         this.menuState = 3;
  153.         if (!phase) phase = 1;
  154.         if (!iter) iter = 0;
  155.         this.debug('animMenusToLabel('+phase+','+iter+')');
  156.         switch (phase) {
  157.         case 1: // Fade out the menus
  158.             var menus = document.getElementById('menubar-items');
  159.             if (iter <= 10) {
  160.                 menus.style.MozOpacity = 1 - (iter/10);
  161.                 setTimeout('titlebar.animMenusToLabel(1,'+(iter+1)+');',this.animWait);
  162.             } else {
  163.                 menus.setAttribute('hidden','true');
  164.                 setTimeout('titlebar.animMenusToLabel(2,0);',this.animWait);
  165.             }
  166.             break;
  167.         case 2: // Fade in label
  168.             if (iter <= 10) {
  169.                 var label = document.getElementById('menu-label-box');
  170.                 label.style.MozOpacity = iter / 10;
  171.                 if (iter == 0) label.removeAttribute('hidden');
  172.             }
  173.             if (iter < 10)
  174.                 setTimeout('titlebar.animMenusToLabel(2,'+(iter+1)+');',this.animWait);
  175.             else if (iter == 10) this.menuState = 0;
  176.         }
  177.     },
  178.  
  179.     menuKeydown : function(event) {
  180.         this.debug(' KEY DOWN!!! ');
  181.     }
  182. };
  183.