ginebra2/chrome/js/ToggleButton.js
branchGCC_SURGE
changeset 8 2e16851ffecd
parent 2 bf4420e9fa4d
parent 6 1c3b8676e58c
--- a/ginebra2/chrome/js/ToggleButton.js	Fri Jun 11 16:23:26 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-// Call ToggleButton to wire an HTML button (typically an <img> tag) to a JS callback
-// when you want the button pressed state to be tied to a Ginebra snippets 
-// visible attribute.
-// 
-//
-// Params:
-//   id - the id of the button.  Ex:  <img id="buttonId" .../>
-//   snippetId - the id of the ginebra snippet to which the button state should be tied
-//   upImg - the path to the "up" image for the button.
-//   downImg - the path to the "down" image for the button.
-//   disabledImg - the path to the "disabled" image for the button.
-//   handler - the javascript callback to be called when triggered
-//   triggerOnMouseUp- if true the handler will be called on mouse-up, defaults to true.
-//   triggerOnMouseDown - if true the handler will be called on mouse-down, defaults to false.
-//   triggerOnMouseOut - if true the handler will be called on mouse-out, defaults to false.
-//
-function ToggleButton(id, snippetId, upImg, downImg, disabledImg, handler, triggerOnMouseUp, triggerOnMouseDown, triggerOnMouseOut) {
-    this.id = id;
-    this.snippetId = snippetId;
-    this.upImg = upImg;
-    this.downImg = downImg;
-    this.disabledImg = disabledImg;
-    this.handler = handler;
-    this.isDown = false;
-    this.enabled = true;
-    this.triggerOnMouseUp= triggerOnMouseUp == undefined ? true : triggerOnMouseUp;
-    this.triggerOnMouseDown = triggerOnMouseDown == undefined ? false : triggerOnMouseDown;
-    this.triggerOnMouseOut = triggerOnMouseOut == undefined ? false : triggerOnMouseOut;
-
-    // attach this class to the item as "button" for later access
-    // delete/cleanup existing button (if any) and attach this as button
-    dom = document.getElementById(this.id);
-    if (dom.button) {
-        delete dom.button;
-    }
-    dom.button = this;
-
-    //! Provide easy access to button element.
-    this.element = function() {
-        return document.getElementById(this.id);
-    }
-
-    //! Allow client to change button images after object creation.
-    this.updateImages = function(upImg, downImg, disabledImg) {
-        this.upImg = upImg;
-        this.downImg = downImg;
-        this.disableImg = disabledImg;
-        this.updateButton();
-    }
-
-    //! Updates button image to appropriate up/down/disabled icon.
-    this.updateButton = function() {
-        if (this.enabled) {
-            // button is enabled
-            if (this.isDown) {
-                // button is down
-                this.element().src = this.downImg;
-            } else {
-                // button is up
-                this.element().src = this.upImg;
-            }
-        } else {
-            // button is disabled
-            this.element().src = this.disabledImg;
-        }
-    }
-
-    //! Enables/Disables button.
-    this.setEnabled = function(state) {
-        this.enabled = state;
-        this.updateButton();
-    }
-    
-    //! Handler for the mouse down event.
-    this.onMouseDown = function() {
-        if (this.triggerOnMouseDown && this.enabled) {
-            this.handler();
-        }
-    }
-    
-    //! Handler for the mouse up event.
-    this.onMouseUp = function() {
-        if (this.triggerOnMouseUp && this.enabled) {
-            this.handler();
-        }
-    }
-
-    //! Handler for the mouse out event.
-    this.onMouseOut = function() {
-        if (this.isDown) {
-            if (this.triggerOnMouseOut && this.enabled) {
-                this.handler();
-            }
-        }
-    }
-    
-    //! Handler for the snippet shown signal.
-    this.onSnippetShown = function() {
-        // When the snippet is shown the button should be down.
-        this.isDown = true;
-        this.updateButton.call(this);
-    }
-    
-    //! Handler for the snippet hidden signal.
-    this.onSnippetHidden = function() {
-        // When the snippet is hidden the button should be up.
-        this.isDown = false;
-        this.updateButton.call(this);
-    }
-    
-    //! After chrome is loaded, setup shown/hidden handlers.
-    this.chromeLoadComplete = function() {
-        // The up/down state of this button is tied to the visibility state of
-        // the specified snippet.
-        window.snippets[this.snippetId].shown.connect(this.onSnippetShown.bind(this));
-        window.snippets[this.snippetId].hidden.connect(this.onSnippetHidden.bind(this));
-    }
- 
-    // Make sure we can find the element.
-    if (!this.element()) {
-        alert("ToggleButton: element not found, " + id);
-        return;
-    }
-    
-    // Set up element event handlers.
-    this.element().onmousedown = this.onMouseDown.bind(this);
-    this.element().onmouseup = this.onMouseUp.bind(this);
-    this.element().onmouseout = this.onMouseOut.bind(this);
-
-    // Set the initial state of the button.
-    this.updateButton();
-
-    // can't access chrome snippets until chrome load complete
-    window.chrome.chromeComplete.connect(this.chromeLoadComplete.bind(this));
-}
-