summaryrefslogtreecommitdiff
path: root/toolkit/content/widgets/menu.xml
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/content/widgets/menu.xml')
-rw-r--r--toolkit/content/widgets/menu.xml286
1 files changed, 286 insertions, 0 deletions
diff --git a/toolkit/content/widgets/menu.xml b/toolkit/content/widgets/menu.xml
new file mode 100644
index 0000000000..26dcad454b
--- /dev/null
+++ b/toolkit/content/widgets/menu.xml
@@ -0,0 +1,286 @@
+<?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="menuitemBindings"
+ 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="menuitem-base" role="xul:menuitem"
+ extends="chrome://global/content/bindings/general.xml#control-item">
+ <resources>
+ <stylesheet src="chrome://global/skin/menu.css"/>
+ </resources>
+ <implementation implements="nsIDOMXULSelectControlItemElement, nsIDOMXULContainerItemElement">
+ <!-- nsIDOMXULSelectControlItemElement -->
+ <property name="selected" readonly="true"
+ onget="return this.getAttribute('selected') == 'true';"/>
+ <property name="control" readonly="true">
+ <getter>
+ <![CDATA[
+ var parent = this.parentNode;
+ if (parent &&
+ parent.parentNode instanceof Components.interfaces.nsIDOMXULSelectControlElement)
+ return parent.parentNode;
+ return null;
+ ]]>
+ </getter>
+ </property>
+
+ <!-- nsIDOMXULContainerItemElement -->
+ <property name="parentContainer" readonly="true">
+ <getter>
+ for (var parent = this.parentNode; parent; parent = parent.parentNode) {
+ if (parent instanceof Components.interfaces.nsIDOMXULContainerElement)
+ return parent;
+ }
+ return null;
+ </getter>
+ </property>
+ </implementation>
+ </binding>
+
+ <binding id="menu-base"
+ extends="chrome://global/content/bindings/menu.xml#menuitem-base">
+
+ <implementation implements="nsIDOMXULContainerElement">
+ <property name="open" onget="return this.hasAttribute('open');">
+ <setter><![CDATA[
+ this.boxObject.openMenu(val);
+ return val;
+ ]]></setter>
+ </property>
+
+ <property name="openedWithKey" readonly="true">
+ <getter><![CDATA[
+ return this.boxObject.openedWithKey;
+ ]]></getter>
+ </property>
+
+ <!-- nsIDOMXULContainerElement interface -->
+ <method name="appendItem">
+ <parameter name="aLabel"/>
+ <parameter name="aValue"/>
+ <body>
+ return this.insertItemAt(-1, aLabel, aValue);
+ </body>
+ </method>
+
+ <method name="insertItemAt">
+ <parameter name="aIndex"/>
+ <parameter name="aLabel"/>
+ <parameter name="aValue"/>
+ <body>
+ const XUL_NS =
+ "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+
+ var menupopup = this.menupopup;
+ if (!menupopup) {
+ menupopup = this.ownerDocument.createElementNS(XUL_NS, "menupopup");
+ this.appendChild(menupopup);
+ }
+
+ var menuitem = this.ownerDocument.createElementNS(XUL_NS, "menuitem");
+ menuitem.setAttribute("label", aLabel);
+ menuitem.setAttribute("value", aValue);
+
+ var before = this.getItemAtIndex(aIndex);
+ if (before)
+ return menupopup.insertBefore(menuitem, before);
+ return menupopup.appendChild(menuitem);
+ </body>
+ </method>
+
+ <method name="removeItemAt">
+ <parameter name="aIndex"/>
+ <body>
+ <![CDATA[
+ var menupopup = this.menupopup;
+ if (menupopup) {
+ var item = this.getItemAtIndex(aIndex);
+ if (item)
+ return menupopup.removeChild(item);
+ }
+ return null;
+ ]]>
+ </body>
+ </method>
+
+ <property name="itemCount" readonly="true">
+ <getter>
+ var menupopup = this.menupopup;
+ return menupopup ? menupopup.childNodes.length : 0;
+ </getter>
+ </property>
+
+ <method name="getIndexOfItem">
+ <parameter name="aItem"/>
+ <body>
+ <![CDATA[
+ var menupopup = this.menupopup;
+ if (menupopup) {
+ var items = menupopup.childNodes;
+ var length = items.length;
+ for (var index = 0; index < length; ++index) {
+ if (items[index] == aItem)
+ return index;
+ }
+ }
+ return -1;
+ ]]>
+ </body>
+ </method>
+
+ <method name="getItemAtIndex">
+ <parameter name="aIndex"/>
+ <body>
+ <![CDATA[
+ var menupopup = this.menupopup;
+ if (!menupopup || aIndex < 0 || aIndex >= menupopup.childNodes.length)
+ return null;
+
+ return menupopup.childNodes[aIndex];
+ ]]>
+ </body>
+ </method>
+
+ <property name="menupopup" readonly="true">
+ <getter>
+ <![CDATA[
+ const XUL_NS =
+ "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+
+ for (var child = this.firstChild; child; child = child.nextSibling) {
+ if (child.namespaceURI == XUL_NS && child.localName == "menupopup")
+ return child;
+ }
+ return null;
+ ]]>
+ </getter>
+ </property>
+ </implementation>
+ </binding>
+
+ <binding id="menu"
+ extends="chrome://global/content/bindings/menu.xml#menu-base">
+ <content>
+ <xul:label class="menu-text" xbl:inherits="value=label,accesskey,crop" crop="right"/>
+ <xul:hbox class="menu-accel-container" anonid="accel">
+ <xul:label class="menu-accel" xbl:inherits="value=acceltext"/>
+ </xul:hbox>
+ <xul:hbox align="center" class="menu-right" xbl:inherits="_moz-menuactive,disabled">
+ <xul:image/>
+ </xul:hbox>
+ <children includes="menupopup"/>
+ </content>
+ </binding>
+
+ <binding id="menuitem" extends="chrome://global/content/bindings/menu.xml#menuitem-base">
+ <content>
+ <xul:label class="menu-text" xbl:inherits="value=label,accesskey,crop" crop="right"/>
+ <xul:hbox class="menu-accel-container" anonid="accel">
+ <xul:label class="menu-accel" xbl:inherits="value=acceltext"/>
+ </xul:hbox>
+ </content>
+ </binding>
+
+ <binding id="menucaption" extends="chrome://global/content/bindings/menu.xml#menu-base">
+ <content>
+ <xul:label class="menu-text" xbl:inherits="value=label,crop" crop="right"/>
+ </content>
+ </binding>
+
+ <binding id="menu-menubar"
+ extends="chrome://global/content/bindings/menu.xml#menu-base">
+ <content>
+ <xul:label class="menubar-text" xbl:inherits="value=label,accesskey,crop" crop="right"/>
+ <children includes="menupopup"/>
+ </content>
+ </binding>
+
+ <binding id="menu-menubar-iconic"
+ extends="chrome://global/content/bindings/menu.xml#menu-base">
+ <content>
+ <xul:image class="menubar-left" xbl:inherits="src=image"/>
+ <xul:label class="menubar-text" xbl:inherits="value=label,accesskey,crop" crop="right"/>
+ <children includes="menupopup"/>
+ </content>
+ </binding>
+
+ <binding id="menuitem-iconic" extends="chrome://global/content/bindings/menu.xml#menuitem">
+ <content>
+ <xul:hbox class="menu-iconic-left" align="center" pack="center"
+ xbl:inherits="selected,_moz-menuactive,disabled,checked">
+ <xul:image class="menu-iconic-icon" xbl:inherits="src=image,validate,src"/>
+ </xul:hbox>
+ <xul:label class="menu-iconic-text" flex="1" xbl:inherits="value=label,accesskey,crop" crop="right"/>
+ <children/>
+ <xul:hbox class="menu-accel-container" anonid="accel">
+ <xul:label class="menu-iconic-accel" xbl:inherits="value=acceltext"/>
+ </xul:hbox>
+ </content>
+ </binding>
+
+ <binding id="menuitem-iconic-noaccel" extends="chrome://global/content/bindings/menu.xml#menuitem">
+ <content>
+ <xul:hbox class="menu-iconic-left" align="center" pack="center"
+ xbl:inherits="selected,disabled,checked">
+ <xul:image class="menu-iconic-icon" xbl:inherits="src=image,validate,src"/>
+ </xul:hbox>
+ <xul:label class="menu-iconic-text" flex="1" xbl:inherits="value=label,accesskey,crop" crop="right"/>
+ </content>
+ </binding>
+
+ <binding id="menucaption-inmenulist" extends="chrome://global/content/bindings/menu.xml#menucaption">
+ <content>
+ <xul:hbox class="menu-iconic-left" align="center" pack="center"
+ xbl:inherits="selected,disabled,checked">
+ <xul:image class="menu-iconic-icon" xbl:inherits="src=image,validate,src"/>
+ </xul:hbox>
+ <xul:label class="menu-iconic-text" flex="1" xbl:inherits="value=label,crop" crop="right"/>
+ </content>
+ </binding>
+
+ <binding id="menuitem-iconic-desc-noaccel" extends="chrome://global/content/bindings/menu.xml#menuitem">
+ <content>
+ <xul:hbox class="menu-iconic-left" align="center" pack="center"
+ xbl:inherits="selected,disabled,checked">
+ <xul:image class="menu-iconic-icon" xbl:inherits="src=image,validate,src"/>
+ </xul:hbox>
+ <xul:label class="menu-iconic-text" xbl:inherits="value=label,accesskey,crop" crop="right" flex="1"/>
+ <xul:label class="menu-iconic-text menu-description" xbl:inherits="value=description" crop="right" flex="10000"/>
+ </content>
+ </binding>
+
+ <binding id="menu-iconic"
+ extends="chrome://global/content/bindings/menu.xml#menu-base">
+ <content>
+ <xul:hbox class="menu-iconic-left" align="center" pack="center">
+ <xul:image class="menu-iconic-icon" xbl:inherits="src=image"/>
+ </xul:hbox>
+ <xul:label class="menu-iconic-text" flex="1" xbl:inherits="value=label,accesskey,crop" crop="right"/>
+ <xul:hbox class="menu-accel-container" anonid="accel">
+ <xul:label class="menu-iconic-accel" xbl:inherits="value=acceltext"/>
+ </xul:hbox>
+ <xul:hbox align="center" class="menu-right" xbl:inherits="_moz-menuactive,disabled">
+ <xul:image/>
+ </xul:hbox>
+ <children includes="menupopup|template"/>
+ </content>
+ </binding>
+
+ <binding id="menubutton-item" extends="chrome://global/content/bindings/menu.xml#menuitem-base">
+ <content>
+ <xul:label class="menubutton-text" flex="1" xbl:inherits="value=label,accesskey,crop" crop="right"/>
+ <children includes="menupopup"/>
+ </content>
+ </binding>
+
+ <binding id="menuseparator" role="xul:menuseparator"
+ extends="chrome://global/content/bindings/menu.xml#menuitem-base">
+ </binding>
+
+</bindings>