mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-14 15:37:55 +00:00
87 lines
3.2 KiB
XML
87 lines
3.2 KiB
XML
<?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>
|
|
|
|
|