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
|
<?xml version="1.0"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<bindings id="expanderBindings"
xmlns="http://www.mozilla.org/xbl"
xmlns:xbl="http://www.mozilla.org/xbl"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<binding id="expander" display="xul:vbox">
<resources>
<stylesheet src="chrome://global/skin/expander.css"/>
</resources>
<content>
<xul:hbox align="center">
<xul:button type="disclosure" class="expanderButton" anonid="disclosure" xbl:inherits="disabled" mousethrough="always"/>
<xul:label class="header expanderButton" anonid="label" xbl:inherits="value=label,disabled" mousethrough="always" flex="1"/>
<xul:button anonid="clear-button" xbl:inherits="label=clearlabel,disabled=cleardisabled,hidden=clearhidden" mousethrough="always" icon="clear"/>
</xul:hbox>
<xul:vbox flex="1" anonid="settings" class="settingsContainer" collapsed="true" xbl:inherits="align">
<children/>
</xul:vbox>
</content>
<implementation>
<constructor><![CDATA[
var settings = document.getAnonymousElementByAttribute(this, "anonid", "settings");
var expander = document.getAnonymousElementByAttribute(this, "anonid", "disclosure");
var open = this.getAttribute("open") == "true";
settings.collapsed = !open;
expander.open = open;
]]></constructor>
<property name="open">
<setter>
<![CDATA[
var settings = document.getAnonymousElementByAttribute(this, "anonid", "settings");
var expander = document.getAnonymousElementByAttribute(this, "anonid", "disclosure");
settings.collapsed = !val;
expander.open = val;
if (val)
this.setAttribute("open", "true");
else
this.setAttribute("open", "false");
return val;
]]>
</setter>
<getter>
return this.getAttribute("open");
</getter>
</property>
<method name="onCommand">
<parameter name="aEvent"/>
<body><![CDATA[
var element = aEvent.originalTarget;
var button = element.getAttribute("anonid");
switch (button) {
case "disclosure":
case "label":
if (this.open == "true")
this.open = false;
else
this.open = true;
break;
case "clear-button":
var event = document.createEvent("Events");
event.initEvent("clear", true, true);
this.dispatchEvent(event);
break;
}
]]></body>
</method>
</implementation>
<handlers>
<handler event="command"><![CDATA[
this.onCommand(event);
]]></handler>
<handler event="click"><![CDATA[
if (event.originalTarget.localName == "label")
this.onCommand(event);
]]></handler>
</handlers>
</binding>
</bindings>
|