toolkit/content/widgets/scale.xml

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 <?xml version="1.0"?>
     2 <!-- This Source Code Form is subject to the terms of the Mozilla Public
     3    - License, v. 2.0. If a copy of the MPL was not distributed with this
     4    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
     7 <bindings id="scaleBindings"
     8    xmlns="http://www.mozilla.org/xbl"
     9    xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
    10    xmlns:xbl="http://www.mozilla.org/xbl">
    12   <binding id="scalethumb" extends="xul:button" role="xul:thumb">
    13     <resources>
    14       <stylesheet src="chrome://global/skin/scale.css"/>
    15     </resources>
    16   </binding>
    18   <binding id="scaleslider" display="xul:slider"
    19            extends="chrome://global/content/bindings/general.xml#basecontrol">
    20     <resources>
    21       <stylesheet src="chrome://global/skin/scale.css"/>
    22     </resources>
    23   </binding>
    25   <binding id="scale" role="xul:scale"
    26            extends="chrome://global/content/bindings/general.xml#basecontrol">
    27     <resources>
    28       <stylesheet src="chrome://global/skin/scale.css"/>
    29     </resources>
    31     <content align="center" pack="center">
    32       <xul:slider anonid="slider" class="scale-slider" snap="true" flex="1"
    33                   xbl:inherits="disabled,orient,dir,curpos=value,minpos=min,maxpos=max,increment,pageincrement,movetoclick">
    34         <xul:thumb class="scale-thumb" xbl:inherits="disabled,orient"/>
    35       </xul:slider>
    36     </content>
    38     <implementation implements="nsISliderListener">
    39       <property name="value" onget="return this._getIntegerAttribute('curpos', 0);"
    40                              onset="return this._setIntegerAttribute('curpos', val);"/>
    41       <property name="min" onget="return this._getIntegerAttribute('minpos', 0);"
    42                            onset="return this._setIntegerAttribute('minpos', val);"/>
    43       <property name="max" onget="return this._getIntegerAttribute('maxpos', 100);"
    44                            onset="return this._setIntegerAttribute('maxpos', val);"/>
    45       <property name="increment" onget="return this._getIntegerAttribute('increment', 1);"
    46                                  onset="return this._setIntegerAttribute('increment', val);"/>
    47       <property name="pageIncrement" onget="return this._getIntegerAttribute('pageincrement', 10);"
    48                                      onset="return this._setIntegerAttribute('pageincrement', val);"/>
    50       <property name="_slider" readonly="true">
    51         <getter>
    52           if (!this._sliderElement)
    53             this._sliderElement = document.getAnonymousElementByAttribute(this, "anonid", "slider");
    54           return this._sliderElement;
    55         </getter>
    56       </property>
    58       <constructor>
    59         <![CDATA[
    60           this._userChanged = false;
    61           var value = parseInt(this.getAttribute("value"), 10);
    62           if (!isNaN(value))
    63             this.value = value;
    64           else if (this.min > 0)
    65             this.value = this.min;
    66           else if (this.max < 0)
    67             this.value = this.max;
    68         ]]>
    69       </constructor>
    71       <method name="_getIntegerAttribute">
    72         <parameter name="aAttr"/>
    73         <parameter name="aDefaultValue"/>
    74         <body>
    75           var value = this._slider.getAttribute(aAttr);
    76           var intvalue = parseInt(value, 10);
    77           if (!isNaN(intvalue))
    78             return intvalue;
    79           return aDefaultValue;
    80         </body>
    81       </method>
    83       <method name="_setIntegerAttribute">
    84         <parameter name="aAttr"/>
    85         <parameter name="aValue"/>
    86         <body>
    87         <![CDATA[
    88           var intvalue = parseInt(aValue, 10);
    89           if (!isNaN(intvalue)) {
    90             if (aAttr == "curpos") {
    91               if (intvalue < this.min)
    92                 intvalue = this.min;
    93               else if (intvalue > this.max)
    94                 intvalue = this.max;
    95             }
    96             this._slider.setAttribute(aAttr, intvalue);
    97           }
    98           return aValue;
    99         ]]>
   100         </body>
   101       </method>
   103       <method name="decrease">
   104         <body>
   105         <![CDATA[
   106           var newpos = this.value - this.increment;
   107           var startpos = this.min;
   108           this.value = (newpos > startpos) ? newpos : startpos;
   109         ]]>
   110         </body>
   111       </method>
   112       <method name="increase">
   113         <body>
   114         <![CDATA[
   115           var newpos = this.value + this.increment;
   116           var endpos = this.max;
   117           this.value = (newpos < endpos) ? newpos : endpos;
   118         ]]>
   119         </body>
   120       </method>
   122       <method name="decreasePage">
   123         <body>
   124         <![CDATA[
   125           var newpos = this.value - this.pageIncrement;
   126           var startpos = this.min;
   127           this.value = (newpos > startpos) ? newpos : startpos;
   128         ]]>
   129         </body>
   130       </method>
   131       <method name="increasePage">
   132         <body>
   133         <![CDATA[
   134           var newpos = this.value + this.pageIncrement;
   135           var endpos = this.max;
   136           this.value = (newpos < endpos) ? newpos : endpos;
   137         ]]>
   138         </body>
   139       </method>
   141       <method name="valueChanged">
   142         <parameter name="which"/>
   143         <parameter name="newValue"/>
   144         <parameter name="userChanged"/>
   145         <body>
   146         <![CDATA[
   147           switch (which) {
   148             case "curpos":
   149               this.setAttribute("value", newValue);
   151               // in the future, only fire the change event when userChanged
   152               // or _userChanged is true
   153               var changeEvent = document.createEvent("Events");
   154               changeEvent.initEvent("change", true, true);
   155               this.dispatchEvent(changeEvent);
   156               break;
   158             case "minpos":
   159               this.setAttribute("min", newValue);
   160               break;
   162             case "maxpos":
   163               this.setAttribute("max", newValue);
   164               break;
   165           }
   166         ]]>
   167         </body>
   168       </method>
   170       <method name="dragStateChanged">
   171         <parameter name="isDragging"/>
   172         <body/>
   173       </method>
   174     </implementation>
   176     <handlers>
   177       <handler event="keypress" keycode="VK_LEFT" preventdefault="true">
   178         <![CDATA[
   179           this._userChanged = true;
   180           (this.orient != "vertical" && this.dir == "reverse") ? this.increase() : this.decrease();
   181           this._userChanged = false;
   182         ]]>
   183       </handler>
   184       <handler event="keypress" keycode="VK_RIGHT" preventdefault="true">
   185         <![CDATA[
   186           this._userChanged = true;
   187           (this.orient != "vertical" && this.dir == "reverse") ? this.decrease() : this.increase();
   188           this._userChanged = false;
   189         ]]>
   190       </handler>
   191       <handler event="keypress" keycode="VK_UP" preventdefault="true">
   192         <![CDATA[
   193           this._userChanged = true;
   194           (this.orient == "vertical" && this.dir != "reverse") ? this.decrease() : this.increase();
   195           this._userChanged = false;
   196         ]]>
   197       </handler>
   198       <handler event="keypress" keycode="VK_DOWN" preventdefault="true">
   199         <![CDATA[
   200           this._userChanged = true;
   201           (this.orient == "vertical" && this.dir != "reverse") ? this.increase() : this.decrease();
   202           this._userChanged = false;
   203         ]]>
   204       </handler>
   205       <handler event="keypress" keycode="VK_PAGE_UP" preventdefault="true">
   206         <![CDATA[
   207           this._userChanged = true;
   208           (this.orient == "vertical" && this.dir != "reverse") ? this.decreasePage() : this.increasePage();
   209           this._userChanged = false;
   210         ]]>
   211       </handler>
   212       <handler event="keypress" keycode="VK_PAGE_DOWN" preventdefault="true">
   213         <![CDATA[
   214           this._userChanged = true;
   215           (this.orient == "vertical" && this.dir != "reverse") ? this.increasePage() : this.decreasePage();
   216           this._userChanged = false;
   217         ]]>
   218       </handler>
   219       <handler event="keypress" keycode="VK_HOME" preventdefault="true">
   220         this._userChanged = true;
   221         this.value = (this.dir == "reverse") ? this.max : this.min;
   222         this._userChanged = false;
   223       </handler>
   224       <handler event="keypress" keycode="VK_END" preventdefault="true">
   225         this._userChanged = true;
   226         this.value = (this.dir == "reverse") ? this.min : this.max;
   227         this._userChanged = false;
   228       </handler>
   229     </handlers>
   231   </binding>
   232 </bindings>

mercurial