summaryrefslogtreecommitdiffstats
path: root/toolkit/content/widgets/general.xml
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/content/widgets/general.xml')
-rw-r--r--toolkit/content/widgets/general.xml231
1 files changed, 231 insertions, 0 deletions
diff --git a/toolkit/content/widgets/general.xml b/toolkit/content/widgets/general.xml
new file mode 100644
index 000000000..b4538e41d
--- /dev/null
+++ b/toolkit/content/widgets/general.xml
@@ -0,0 +1,231 @@
+<?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="generalBindings"
+ 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="basecontrol">
+ <implementation implements="nsIDOMXULControlElement">
+ <!-- public implementation -->
+ <property name="disabled" onset="if (val) this.setAttribute('disabled', 'true');
+ else this.removeAttribute('disabled');
+ return val;"
+ onget="return this.getAttribute('disabled') == 'true';"/>
+ <property name="tabIndex" onget="return parseInt(this.getAttribute('tabindex')) || 0"
+ onset="if (val) this.setAttribute('tabindex', val);
+ else this.removeAttribute('tabindex'); return val;"/>
+ </implementation>
+ </binding>
+
+ <binding id="basetext" extends="chrome://global/content/bindings/general.xml#basecontrol">
+ <implementation implements="nsIDOMXULLabeledControlElement">
+ <!-- public implementation -->
+ <property name="label" onset="this.setAttribute('label',val); return val;"
+ onget="return this.getAttribute('label');"/>
+ <property name="crop" onset="this.setAttribute('crop',val); return val;"
+ onget="return this.getAttribute('crop');"/>
+ <property name="image" onset="this.setAttribute('image',val); return val;"
+ onget="return this.getAttribute('image');"/>
+ <property name="command" onset="this.setAttribute('command',val); return val;"
+ onget="return this.getAttribute('command');"/>
+ <property name="accessKey">
+ <getter>
+ <![CDATA[
+ return this.labelElement ? this.labelElement.accessKey : this.getAttribute('accesskey');
+ ]]>
+ </getter>
+ <setter>
+ <![CDATA[
+ // Always store on the control
+ this.setAttribute('accesskey', val);
+ // If there is a label, change the accesskey on the labelElement
+ // if it's also set there
+ if (this.labelElement) {
+ this.labelElement.accessKey = val;
+ }
+ return val;
+ ]]>
+ </setter>
+ </property>
+
+ <field name="labelElement"/>
+ </implementation>
+ </binding>
+
+ <binding id="control-item" extends="chrome://global/content/bindings/general.xml#basetext">
+ <implementation>
+ <property name="value" onset="this.setAttribute('value', val); return val;"
+ onget="return this.getAttribute('value');"/>
+ </implementation>
+ </binding>
+
+ <binding id="root-element">
+ <implementation>
+ <field name="_lightweightTheme">null</field>
+ <constructor><![CDATA[
+ if (this.hasAttribute("lightweightthemes")) {
+ let temp = {};
+ Components.utils.import("resource://gre/modules/LightweightThemeConsumer.jsm", temp);
+ this._lightweightTheme = new temp.LightweightThemeConsumer(this.ownerDocument);
+ }
+ ]]></constructor>
+ <destructor><![CDATA[
+ if (this._lightweightTheme) {
+ this._lightweightTheme.destroy();
+ this._lightweightTheme = null;
+ }
+ ]]></destructor>
+ </implementation>
+ </binding>
+
+ <binding id="iframe" role="outerdoc">
+ <implementation>
+ <property name="docShell" readonly="true">
+ <getter><![CDATA[
+ let frameLoader = this.QueryInterface(Components.interfaces.nsIFrameLoaderOwner).frameLoader;
+ return frameLoader ? frameLoader.docShell : null;
+ ]]></getter>
+ </property>
+ <property name="contentWindow"
+ readonly="true"
+ onget="return this.docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIDOMWindow);"/>
+ <property name="webNavigation"
+ onget="return this.docShell.QueryInterface(Components.interfaces.nsIWebNavigation);"
+ readonly="true"/>
+ <property name="contentDocument" readonly="true"
+ onget="return this.webNavigation.document;"/>
+ </implementation>
+ </binding>
+
+ <binding id="statusbarpanel" display="xul:button">
+ <content>
+ <children>
+ <xul:label class="statusbarpanel-text" xbl:inherits="value=label,crop" crop="right" flex="1"/>
+ </children>
+ </content>
+
+ <implementation>
+ <property name="label"
+ onget="return this.getAttribute('label');"
+ onset="this.setAttribute('label',val); return val;"/>
+ <property name="image"
+ onget="return this.getAttribute('image');"
+ onset="this.setAttribute('image',val); return val;"/>
+ <property name="src"
+ onget="return this.getAttribute('src');"
+ onset="this.setAttribute('src',val); return val;"/>
+ </implementation>
+ </binding>
+
+ <binding id="statusbarpanel-menu-iconic" display="xul:menu"
+ extends="chrome://global/content/bindings/general.xml#statusbarpanel">
+ <content>
+ <xul:image class="statusbarpanel-icon" xbl:inherits="src,src=image"/>
+ <children/>
+ </content>
+ </binding>
+
+ <binding id="statusbar" role="xul:statusbar">
+ <content>
+ <children/>
+ <xul:statusbarpanel class="statusbar-resizerpanel">
+ <xul:resizer dir="bottomend"/>
+ </xul:statusbarpanel>
+ </content>
+ </binding>
+
+ <binding id="statusbarpanel-iconic" display="xul:button" role="xul:button"
+ extends="chrome://global/content/bindings/general.xml#statusbarpanel">
+ <content>
+ <xul:image class="statusbarpanel-icon" xbl:inherits="src,src=image"/>
+ </content>
+ </binding>
+
+ <binding id="statusbarpanel-iconic-text" display="xul:button" role="xul:button"
+ extends="chrome://global/content/bindings/general.xml#statusbarpanel">
+ <content>
+ <xul:image class="statusbarpanel-icon" xbl:inherits="src,src=image"/>
+ <xul:label class="statusbarpanel-text" xbl:inherits="value=label,crop"/>
+ </content>
+ </binding>
+
+ <binding id="image" role="xul:image">
+ <implementation implements="nsIDOMXULImageElement">
+ <property name="src"
+ onget="return this.getAttribute('src');"
+ onset="this.setAttribute('src',val); return val;"/>
+ </implementation>
+ </binding>
+
+ <binding id="deck">
+ <implementation>
+ <property name="selectedIndex"
+ onget="return this.getAttribute('selectedIndex') || '0'">
+ <setter>
+ <![CDATA[
+ if (this.selectedIndex == val)
+ return val;
+ this.setAttribute("selectedIndex", val);
+ var event = document.createEvent('Events');
+ event.initEvent('select', true, true);
+ this.dispatchEvent(event);
+ return val;
+ ]]>
+ </setter>
+ </property>
+
+ <property name="selectedPanel">
+ <getter>
+ <![CDATA[
+ return this.childNodes[this.selectedIndex];
+ ]]>
+ </getter>
+
+ <setter>
+ <![CDATA[
+ var selectedIndex = -1;
+ for (var panel = val; panel != null; panel = panel.previousSibling)
+ ++selectedIndex;
+ this.selectedIndex = selectedIndex;
+ return val;
+ ]]>
+ </setter>
+ </property>
+ </implementation>
+ </binding>
+
+ <binding id="dropmarker" extends="xul:button" role="xul:dropmarker">
+ <resources>
+ <stylesheet src="chrome://global/skin/dropmarker.css"/>
+ </resources>
+
+ <content>
+ <xul:image class="dropmarker-icon"/>
+ </content>
+ </binding>
+
+ <binding id="windowdragbox">
+ <implementation>
+ <field name="_dragBindingAlive">true</field>
+ <constructor>
+ if (!this._draggableStarted) {
+ this._draggableStarted = true;
+ try {
+ let tmp = {};
+ Components.utils.import("resource://gre/modules/WindowDraggingUtils.jsm", tmp);
+ let draghandle = new tmp.WindowDraggingElement(this);
+ draghandle.mouseDownCheck = function () {
+ return this._dragBindingAlive;
+ };
+ } catch (e) {}
+ }
+ </constructor>
+ </implementation>
+ </binding>
+
+</bindings>