File: progressmeter.xml

package info (click to toggle)
iceweasel 2.0.0.19-0etch1
  • links: PTS
  • area: main
  • in suites: etch
  • size: 298,784 kB
  • ctags: 317,912
  • sloc: cpp: 1,796,902; ansic: 987,677; xml: 109,036; makefile: 47,777; asm: 35,201; perl: 26,983; sh: 20,879; cs: 6,232; java: 5,513; python: 3,249; pascal: 459; lex: 306; php: 244; csh: 132; objc: 97; yacc: 79; ada: 49; awk: 14; sql: 4; sed: 4
file content (91 lines) | stat: -rw-r--r-- 3,299 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?xml version="1.0"?>

<bindings id="progressmeterBindings"
   xmlns="http://www.mozilla.org/xbl"
   xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
   xmlns:xbl="http://www.mozilla.org/xbl">

  <binding id="progressmeter">
    <resources>
      <stylesheet src="chrome://global/skin/progressmeter.css"/>
    </resources>

    <content>
      <xul:spacer class="progress-bar" xbl:inherits="mode"/>
      <xul:spacer class="progress-remainder" xbl:inherits="mode"/>
    </content>
    
    <implementation implements="nsIAccessibleProvider">     
      <property name="label" onset="if (this.label != val) this.setAttribute('label',val); return val;"
                                      onget="return this.getAttribute('label');"/>

      <property name="mode" onset="if (this.mode != val) this.setAttribute('mode', val); return val;"
                            onget="return this.getAttribute('mode');"/>

      <property name="value" onget="return this.getAttribute('value');">
        <setter><![CDATA[
          var p = Math.round(val);
          var c = this.value; 
          if (p != c) {
            var delta = p - c;
            if (delta < 0)
              delta = -delta;
            if (delta > 3 || p == 0 || p == 100) {
              this.setAttribute("value", p);
              // Fire DOM event so that accessible value change events occur
              var event = document.createEvent('Events');
              event.initEvent('ValueChange', true, true);
              this.dispatchEvent(event);
            }
          }
          
          return p;
        ]]></setter>
      </property>

      <property name="accessible">
        <getter>
          <![CDATA[
            var accService = Components.classes["@mozilla.org/accessibilityService;1"].getService(Components.interfaces.nsIAccessibilityService);
            return accService.createXULProgressMeterAccessible(this);
          ]]>
        </getter>
      </property>
    </implementation>
  </binding>

  <binding id="progressmeter-undetermined"
           extends="chrome://global/content/bindings/progressmeter.xml#progressmeter">
    <content>
      <xul:stack class="progress-remainder" flex="1" anonid="stack" style="overflow: -moz-hidden-unscrollable;">
        <xul:spacer class="progress-bar" anonid="spacer" top="0" style="margin-right: -1000px;"/>
      </xul:stack>
    </content>

    <implementation>
      <method name="init">
        <body><![CDATA[
          var stack = document.getAnonymousElementByAttribute(this, "anonid", "stack");
          var spacer = document.getAnonymousElementByAttribute(this, "anonid", "spacer");
          var position = -1;
          var interval = setInterval(function nextStep() {
            if (stack.parentNode) {
              var width = stack.boxObject.width >> 2;
              spacer.height = stack.boxObject.height;
              spacer.width = width;
              spacer.left = width * position;
              position += 15 / (width + 150);
              if (position >= 4)
                position = -1;
            } else {
              clearInterval(interval);
            }
          }, 20);
        ]]></body>
      </method>

      <constructor>this.init();</constructor>
    </implementation>
  </binding>

</bindings>