home *** CD-ROM | disk | FTP | other *** search
/ Computer Active Guide 2009 July / CAG7.ISO / Internetas / SafariSetup.exe / AppleApplicationSupport.msi / WebKit.resources_inspector_StatusBarButton.js < prev    next >
Encoding:
Text File  |  2010-06-03  |  4.2 KB  |  149 lines

  1. /*
  2.  * Copyright (C) 2009 Google Inc. All rights reserved.
  3.  *
  4.  * Redistribution and use in source and binary forms, with or without
  5.  * modification, are permitted provided that the following conditions are
  6.  * met:
  7.  *
  8.  *     * Redistributions of source code must retain the above copyright
  9.  * notice, this list of conditions and the following disclaimer.
  10.  *     * Redistributions in binary form must reproduce the above
  11.  * copyright notice, this list of conditions and the following disclaimer
  12.  * in the documentation and/or other materials provided with the
  13.  * distribution.
  14.  *     * Neither the name of Google Inc. nor the names of its
  15.  * contributors may be used to endorse or promote products derived from
  16.  * this software without specific prior written permission.
  17.  *
  18.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  19.  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  20.  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  21.  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  22.  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  23.  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  24.  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  25.  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  26.  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  27.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  28.  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  29.  */
  30.  
  31. WebInspector.StatusBarButton = function(title, className, states)
  32. {
  33.     this.element = document.createElement("button");
  34.     this.element.className = className + " status-bar-item";
  35.     this.element.addEventListener("click", this._clicked.bind(this), false);
  36.  
  37.     this.glyph = document.createElement("div");
  38.     this.glyph.className = "glyph";
  39.     this.element.appendChild(this.glyph);
  40.  
  41.     this.glyphShadow = document.createElement("div");
  42.     this.glyphShadow.className = "glyph shadow";
  43.     this.element.appendChild(this.glyphShadow);
  44.     
  45.     this.states = states;
  46.     if (!states)
  47.         this.states = 2;
  48.  
  49.     if (states == 2)
  50.         this._state = false;
  51.     else
  52.         this._state = 0;
  53.     
  54.     this.title = title;
  55.     this.disabled = false;
  56.     this._visible = true;
  57. }
  58.  
  59. WebInspector.StatusBarButton.prototype = {
  60.     _clicked: function()
  61.     {
  62.         this.dispatchEventToListeners("click");
  63.     },
  64.  
  65.     get disabled()
  66.     {
  67.         return this._disabled;
  68.     },
  69.  
  70.     set disabled(x)
  71.     {
  72.         if (this._disabled === x)
  73.             return;
  74.         this._disabled = x;
  75.         this.element.disabled = x;
  76.     },
  77.  
  78.     get title()
  79.     {
  80.         return this._title;
  81.     },
  82.  
  83.     set title(x)
  84.     {
  85.         if (this._title === x)
  86.             return;
  87.         this._title = x;
  88.         this.element.title = x;
  89.     },
  90.     
  91.     get state()
  92.     {
  93.         return this._state;
  94.     },
  95.     
  96.     set state(x)
  97.     {
  98.         if (this._state === x)
  99.             return;
  100.         
  101.         if (this.states === 2) {
  102.             if (x)
  103.                 this.element.addStyleClass("toggled-on");
  104.             else
  105.                 this.element.removeStyleClass("toggled-on");
  106.         } else {
  107.             if (x !== 0) {
  108.                 this.element.removeStyleClass("toggled-" + this._state);
  109.                 this.element.addStyleClass("toggled-" + x);
  110.             } else 
  111.                 this.element.removeStyleClass("toggled-" + this._state);
  112.         }
  113.         this._state = x;
  114.     },
  115.  
  116.     get toggled()
  117.     {
  118.         if (this.states !== 2)
  119.             throw("Only used toggled when there are 2 states, otherwise, use state");
  120.         return this.state;
  121.     },
  122.  
  123.     set toggled(x)
  124.     {
  125.         if (this.states !== 2)
  126.             throw("Only used toggled when there are 2 states, otherwise, use state");
  127.         this.state = x;
  128.     },
  129.  
  130.     get visible()
  131.     {
  132.         return this._visible;
  133.     },
  134.  
  135.     set visible(x)
  136.     {
  137.         if (this._visible === x)
  138.             return;
  139.  
  140.         if (x)
  141.             this.element.removeStyleClass("hidden");
  142.         else
  143.             this.element.addStyleClass("hidden");
  144.         this._visible = x;
  145.     }
  146. }
  147.  
  148. WebInspector.StatusBarButton.prototype.__proto__ = WebInspector.Object.prototype;
  149.