home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / xulrunner-1.9.0.14 / chrome / toolkit.jar / content / global / bindings / scale.xml < prev    next >
Encoding:
Extensible Markup Language  |  2007-08-04  |  7.0 KB  |  205 lines

  1. <?xml version="1.0"?>
  2.  
  3. <bindings id="scaleBindings"
  4.    xmlns="http://www.mozilla.org/xbl"
  5.    xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  6.    xmlns:xbl="http://www.mozilla.org/xbl">
  7.   
  8.   <binding id="scalethumb" extends="xul:button">
  9.     <resources>
  10.       <stylesheet src="chrome://global/skin/scale.css"/>
  11.     </resources>
  12.  
  13.     <implementation implements="nsIAccessibleProvider">
  14.       <property name="accessibleType" readonly="true">
  15.         <getter>
  16.           return Components.interfaces.nsIAccessibleProvider.XULThumb;
  17.         </getter>
  18.       </property>
  19.     </implementation>
  20.   </binding>
  21.  
  22.   <binding id="scaleslider" display="xul:slider"
  23.            extends="chrome://global/content/bindings/general.xml#basecontrol">
  24.     <resources>
  25.       <stylesheet src="chrome://global/skin/scale.css"/>
  26.     </resources>
  27.   </binding>
  28.  
  29.   <binding id="scale"
  30.            extends="chrome://global/content/bindings/general.xml#basecontrol">
  31.     <resources>
  32.       <stylesheet src="chrome://global/skin/scale.css"/>
  33.     </resources>
  34.  
  35.     <content align="center" pack="center">
  36.       <xul:slider anonid="slider" class="scale-slider" snap="true" flex="1"
  37.                   xbl:inherits="disabled,orient,dir,curpos=value,minpos=min,maxpos=max,increment,pageincrement">
  38.         <xul:thumb class="scale-thumb" xbl:inherits="disabled,orient"/>
  39.       </xul:slider>
  40.     </content>
  41.     
  42.     <implementation implements="nsIAccessibleProvider">
  43.       <property name="accessibleType" readonly="true">
  44.         <getter>
  45.           return Components.interfaces.nsIAccessibleProvider.XULScale;
  46.         </getter>
  47.       </property>
  48.  
  49.       <property name="value" onget="return this._getIntegerAttribute('curpos', 0);"
  50.                              onset="return this._setIntegerAttribute('curpos', val);"/>
  51.       <property name="min" onget="return this._getIntegerAttribute('minpos', 0);"
  52.                            onset="return this._setIntegerAttribute('minpos', val);"/>
  53.       <property name="max" onget="return this._getIntegerAttribute('maxpos', 100);"
  54.                            onset="return this._setIntegerAttribute('maxpos', val);"/>
  55.       <property name="increment" onget="return this._getIntegerAttribute('increment', 1);"
  56.                                  onset="return this._setIntegerAttribute('increment', val);"/>
  57.       <property name="pageIncrement" onget="return this._getIntegerAttribute('pageincrement', 10);"
  58.                                      onset="return this._setIntegerAttribute('pageincrement', val);"/>
  59.  
  60.       <field name="_sliderElement"/>
  61.       <property name="_slider" readonly="true">
  62.         <getter>
  63.           if (!this._sliderElement)
  64.             this._sliderElement = document.getAnonymousElementByAttribute(this, "anonid", "slider");
  65.           return this._sliderElement;
  66.         </getter>
  67.       </property>
  68.  
  69.       <constructor>
  70.         <![CDATA[
  71.           var value = parseInt(this.getAttribute("value"), 10);
  72.           if (!isNaN(value))
  73.             this.value = value;
  74.           else if (this.min > 0)
  75.             this.value = this.min;
  76.           else if (this.max < 0)
  77.             this.value = this.max;
  78.         ]]>
  79.       </constructor>
  80.  
  81.       <method name="_getIntegerAttribute">
  82.         <parameter name="aAttr"/>
  83.         <parameter name="aDefaultValue"/>
  84.         <body>
  85.           var value = this._slider.getAttribute(aAttr);
  86.           var intvalue = parseInt(value, 10);
  87.           if (!isNaN(intvalue))
  88.             return intvalue;
  89.           return aDefaultValue;
  90.         </body>
  91.       </method>
  92.  
  93.       <method name="_setIntegerAttribute">
  94.         <parameter name="aAttr"/>
  95.         <parameter name="aValue"/>
  96.         <body>
  97.         <![CDATA[
  98.           var intvalue = parseInt(aValue, 10);
  99.           if (!isNaN(intvalue)) {
  100.             if (aAttr == "curpos") {
  101.               if (intvalue < this.min)
  102.                 intvalue = this.min;
  103.               else if (intvalue > this.max)
  104.                 intvalue = this.max;
  105.             }
  106.             this._slider.setAttribute(aAttr, intvalue);
  107.           }
  108.           return aValue;
  109.         ]]>
  110.         </body>
  111.       </method>
  112.  
  113.       <method name="decrease">
  114.         <body>
  115.         <![CDATA[
  116.           var newpos = this.value - this.increment;
  117.           var startpos = this.min;
  118.           this.value = (newpos > startpos) ? newpos : startpos;
  119.         ]]>
  120.         </body>
  121.       </method>
  122.       <method name="increase">
  123.         <body>
  124.         <![CDATA[
  125.           var newpos = this.value + this.increment;
  126.           var endpos = this.max;
  127.           this.value = (newpos < endpos) ? newpos : endpos;
  128.         ]]>
  129.         </body>
  130.       </method>
  131.  
  132.       <method name="decreasePage">
  133.         <body>
  134.         <![CDATA[
  135.           var newpos = this.value - this.pageIncrement;
  136.           var startpos = this.min;
  137.           this.value = (newpos > startpos) ? newpos : startpos;
  138.         ]]>
  139.         </body>
  140.       </method>
  141.       <method name="increasePage">
  142.         <body>
  143.         <![CDATA[
  144.           var newpos = this.value + this.pageIncrement;
  145.           var endpos = this.max;
  146.           this.value = (newpos < endpos) ? newpos : endpos;
  147.         ]]>
  148.         </body>
  149.       </method>
  150.  
  151.     </implementation>
  152.  
  153.     <handlers>
  154.       <handler event="DOMAttrModified">
  155.         if (event.originalTarget != this._slider)
  156.           return;
  157.  
  158.         switch (event.attrName) {
  159.           case "curpos":
  160.             this.setAttribute("value", event.newValue);
  161.  
  162.             var changeEvent = document.createEvent("Events");
  163.             changeEvent.initEvent("change", true, true);
  164.             this.dispatchEvent(changeEvent);
  165.             break;
  166.  
  167.           case "minpos":
  168.             this.setAttribute("min", event.newValue);
  169.             break;
  170.  
  171.           case "maxpos":
  172.             this.setAttribute("max", event.newValue);
  173.             break;
  174.         }
  175.       </handler>
  176.  
  177.       <handler event="keypress" keycode="VK_UP" preventdefault="true">
  178.         return (this.dir == "reverse") ? this.increase() : this.decrease();
  179.       </handler>
  180.       <handler event="keypress" keycode="VK_LEFT" preventdefault="true">
  181.         return (this.dir == "reverse") ? this.increase() : this.decrease();
  182.       </handler>
  183.       <handler event="keypress" keycode="VK_DOWN" preventdefault="true">
  184.         return (this.dir == "reverse") ? this.decrease() : this.increase();
  185.       </handler>
  186.       <handler event="keypress" keycode="VK_RIGHT" preventdefault="true">
  187.         return (this.dir == "reverse") ? this.decrease() : this.increase();
  188.       </handler>
  189.       <handler event="keypress" keycode="VK_PAGE_UP" preventdefault="true">
  190.         return (this.dir == "reverse") ? this.increasePage() : this.decreasePage();
  191.       </handler>
  192.       <handler event="keypress" keycode="VK_PAGE_DOWN" preventdefault="true">
  193.         return (this.dir == "reverse") ? this.decreasePage() : this.increasePage();
  194.       </handler>
  195.       <handler event="keypress" keycode="VK_HOME" preventdefault="true">
  196.         this.value = (this.dir == "reverse") ? this.max : this.min;
  197.       </handler>
  198.       <handler event="keypress" keycode="VK_END" preventdefault="true">
  199.         this.value = (this.dir == "reverse") ? this.min : this.max;
  200.       </handler>
  201.     </handlers>
  202.  
  203.   </binding>
  204. </bindings>
  205.