ginebra2/chrome/bedrockchrome/zoombar.snippet/zoombar.js
changeset 0 1450b09d0cfd
child 3 0954f5dd2cd0
child 5 0f2326c2a325
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ginebra2/chrome/bedrockchrome/zoombar.snippet/zoombar.js	Tue May 04 12:39:35 2010 +0300
@@ -0,0 +1,122 @@
+/*!
+  \file zoombar.js This module contains the ZoomBar class.
+*/
+
+/*!
+  Class to handle displaying the zoom bar. The zoom bar is displayed when the 
+  user presses the zoom button on the toolbar. It provides access to the zoom
+  in and out functions. It is hidden when the main toolbar is hidden on user inactivity
+  
+  \param webtb web toolbar needed to set state of zoom button
+*/
+function ZoomBar(webtb)
+{
+    var timeoutId = 0; // inactivity timer ID
+    var ZB_TIMEOUT = 5000; // hide zoombar after 5 secs
+    var zooming = false; // true when in the process of zooming
+    var enabled = true; // zooming enabled flag - initially enabled
+    
+    // Private Methods
+    //! Write zoom bar HTML code to document.
+    function _zoombar_write() {
+        var html = ''+
+            '<div id="zoomBarDiv">'+
+            '<img class="zoomBarBtn" id="zoomBarBtnIn">'+
+            '<img class="zoomBarBtn" id="zoomBarBtnOut">'+
+            '</div>';
+        document.write(html);
+    }
+
+    //! Create zoom in & out buttons.
+    function _setActions() {
+        new ActionButton("zoomBarBtnIn",
+                         "zoombar.snippet/icons/icon_zoom+.png",
+                         "zoombar.snippet/icons/icon_zoom+_pressed.png",
+                         "zoombar.snippet/icons/icon_zoom+_disabled.png",
+                         window.views.WebView.actions.zoomIn,
+                         true,true,true);
+
+        new ActionButton("zoomBarBtnOut",
+                         "zoombar.snippet/icons/icon_zoom-.png",
+                         "zoombar.snippet/icons/icon_zoom-_pressed.png",
+                         "zoombar.snippet/icons/icon_zoom-_disabled.png",
+                         window.views.WebView.actions.zoomOut,
+                         true,true,true);
+        
+        // reset toolbar timeout each time a zoom is triggered
+//        window.views.WebView.actions.zoomIn.triggered.connect(
+//            function(checked) {handleZoom();});
+//        window.views.WebView.actions.zoomOut.triggered.connect(
+//            function(checked) {handleZoom();});
+        // Connect to each action's "changed" signal.
+        window.views.WebView.actions.zoomIn.changed.connect(
+            createDelegate(this, handleChange));
+        window.views.WebView.actions.zoomOut.changed.connect(
+            createDelegate(this, handleChange));
+    }
+    
+    //! Set inactivity timer when not zooming.
+    function handleZoom()
+    {
+        // zoom activation toggles zoom on/off
+        zooming = !zooming; // toggle zoom state
+        clearTimeout(timeoutId);
+        if (!zooming) {
+            // close zoom after 5 secs
+            timeoutId = setTimeout('window.snippets.ZoomBarId.hide()', ZB_TIMEOUT);
+        }
+    }
+    
+    //! Start inactivity timer when zoom bar is shown.
+    function handleShow()
+    {
+        timeoutId = setTimeout('window.snippets.ZoomBarId.hide()', ZB_TIMEOUT); // close zoom after 5 secs
+    }
+    
+    //! Clear inactivity timer when zoom bar is hidden.
+    function handleHide()
+    {
+        clearTimeout(timeoutId);
+        zooming = false; // ensure zooming state doesn't get out of sync
+    }
+    
+    //! Handle action object changes. In particular we are interested in
+    //! changes to the enabled state of the object.
+    function handleChange() {
+        var saveEnabled = enabled;
+        
+        // enable zoom button if either zoom-in or zoom-out action enabled
+        if (window.views.WebView.actions.zoomIn.enabled
+            || window.views.WebView.actions.zoomOut.enabled) {
+            enabled = true;
+        } else {
+            enabled = false;
+        }
+        
+        // if state changed update web toolbar zoom button state
+        if (saveEnabled != enabled) {
+            // enabled state changed
+            webtb.setZoomEnabled(enabled);
+        }
+    }
+    function handleLoadStarted() {
+        window.snippets.ZoomBarId.hide()
+    }
+
+    //! After chrome is loaded, create zoombar buttons and setup show/hide 
+    //! handlers.
+    function _chromeLoadComplete() {
+        _setActions();
+        window.pageController.loadStarted.connect(handleLoadStarted);
+//        window.snippets.ZoomBarId.shown.connect(handleShow);
+//        window.snippets.ZoomBarId.hidden.connect(handleHide);
+    }
+
+    _zoombar_write();
+
+    window.chrome.chromeComplete.connect(_chromeLoadComplete);
+}
+
+
+
+