diff options
Diffstat (limited to 'toolkit/content/widgets/general.xml')
-rw-r--r-- | toolkit/content/widgets/general.xml | 231 |
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 0000000000..b4538e41d1 --- /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> |