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">
8
<binding id="scalethumb" extends="xul:button">
10
<stylesheet src="chrome://global/skin/scale.css"/>
14
<binding id="scaleslider" display="xul:slider"
15
extends="chrome://global/content/bindings/general.xml#basecontrol">
17
<stylesheet src="chrome://global/skin/scale.css"/>
22
extends="chrome://global/content/bindings/general.xml#basecontrol">
24
<stylesheet src="chrome://global/skin/scale.css"/>
27
<content align="center" pack="center">
28
<xul:slider anonid="slider" class="scale-slider" snap="true" flex="1"
29
xbl:inherits="disabled,orient,curpos=value,minpos=min,maxpos=max,increment,pageincrement">
30
<xul:thumb class="scale-thumb" xbl:inherits="disabled,orient"/>
35
<property name="value" onget="return this._getIntegerAttribute('curpos', 0);"
36
onset="return this._setIntegerAttribute('curpos', val);"/>
37
<property name="min" onget="return this._getIntegerAttribute('minpos', 0);"
38
onset="return this._setIntegerAttribute('minpos', val);"/>
39
<property name="max" onget="return this._getIntegerAttribute('maxpos', 100);"
40
onset="return this._setIntegerAttribute('maxpos', val);"/>
41
<property name="increment" onget="return this._getIntegerAttribute('increment', 1);"
42
onset="return this._setIntegerAttribute('increment', val);"/>
43
<property name="pageIncrement" onget="return this._getIntegerAttribute('pageincrement', 10);"
44
onset="return this._setIntegerAttribute('pageincrement', val);"/>
46
<field name="_sliderElement"/>
47
<property name="_slider" readonly="true">
49
if (!this._sliderElement)
50
this._sliderElement = document.getAnonymousElementByAttribute(this, "anonid", "slider");
51
return this._sliderElement;
55
<method name="_getIntegerAttribute">
56
<parameter name="aAttr"/>
57
<parameter name="aDefaultValue"/>
59
var value = this._slider.getAttribute(aAttr);
60
var intvalue = parseInt(value, 10);
67
<method name="_setIntegerAttribute">
68
<parameter name="aAttr"/>
69
<parameter name="aValue"/>
71
var intvalue = parseInt(aValue, 10);
72
if (!isNaN(intvalue)) this._slider.setAttribute(aAttr, intvalue);
77
<method name="decrease">
80
var newpos = this.value - this.increment;
81
var startpos = this.min;
82
this.value = (newpos > startpos) ? newpos : startpos;
86
<method name="increase">
89
var newpos = this.value + this.increment;
90
var endpos = this.max;
91
this.value = (newpos < endpos) ? newpos : endpos;
96
<method name="decreasePage">
99
var newpos = this.value - this.pageIncrement;
100
var startpos = this.min;
101
this.value = (newpos > startpos) ? newpos : startpos;
105
<method name="increasePage">
108
var newpos = this.value + this.pageIncrement;
109
var endpos = this.max;
110
this.value = (newpos < endpos) ? newpos : endpos;
118
<handler event="DOMAttrModified">
119
if (event.originalTarget != this._slider)
122
switch (event.attrName) {
124
this.setAttribute("value", event.newValue);
126
var changeEvent = document.createEvent("Events");
127
changeEvent.initEvent("change", false, true);
128
this.dispatchEvent(changeEvent);
132
this.setAttribute("min", event.newValue);
136
this.setAttribute("max", event.newValue);
141
<handler event="keypress" keycode="VK_UP" preventdefault="true">
144
<handler event="keypress" keycode="VK_LEFT" preventdefault="true">
147
<handler event="keypress" keycode="VK_DOWN" preventdefault="true">
150
<handler event="keypress" keycode="VK_RIGHT" preventdefault="true">
153
<handler event="keypress" keycode="VK_PAGE_UP" preventdefault="true">
156
<handler event="keypress" keycode="VK_PAGE_DOWN" preventdefault="true">
159
<handler event="keypress" keycode="VK_HOME" preventdefault="true">
160
this.value = this.min;
162
<handler event="keypress" keycode="VK_END" preventdefault="true">
163
this.value = this.max;