1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/content/widgets/menu.xml Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,271 @@ 1.4 +<?xml version="1.0"?> 1.5 +<!-- This Source Code Form is subject to the terms of the Mozilla Public 1.6 + - License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> 1.8 + 1.9 + 1.10 +<bindings id="menuitemBindings" 1.11 + xmlns="http://www.mozilla.org/xbl" 1.12 + xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 1.13 + xmlns:xbl="http://www.mozilla.org/xbl"> 1.14 + 1.15 + <binding id="menuitem-base" role="xul:menuitem" 1.16 + extends="chrome://global/content/bindings/general.xml#control-item"> 1.17 + <resources> 1.18 + <stylesheet src="chrome://global/skin/menu.css"/> 1.19 + </resources> 1.20 + <implementation implements="nsIDOMXULSelectControlItemElement, nsIDOMXULContainerItemElement"> 1.21 + <!-- nsIDOMXULSelectControlItemElement --> 1.22 + <property name="selected" readonly="true" 1.23 + onget="return this.getAttribute('selected') == 'true';"/> 1.24 + <property name="control" readonly="true"> 1.25 + <getter> 1.26 + <![CDATA[ 1.27 + var parent = this.parentNode; 1.28 + if (parent && 1.29 + parent.parentNode instanceof Components.interfaces.nsIDOMXULSelectControlElement) 1.30 + return parent.parentNode; 1.31 + return null; 1.32 + ]]> 1.33 + </getter> 1.34 + </property> 1.35 + 1.36 + <!-- nsIDOMXULContainerItemElement --> 1.37 + <property name="parentContainer" readonly="true"> 1.38 + <getter> 1.39 + for (var parent = this.parentNode; parent; parent = parent.parentNode) { 1.40 + if (parent instanceof Components.interfaces.nsIDOMXULContainerElement) 1.41 + return parent; 1.42 + } 1.43 + return null; 1.44 + </getter> 1.45 + </property> 1.46 + </implementation> 1.47 + </binding> 1.48 + 1.49 + <binding id="menu-base" 1.50 + extends="chrome://global/content/bindings/menu.xml#menuitem-base"> 1.51 + 1.52 + <implementation implements="nsIDOMXULContainerElement"> 1.53 + <property name="open" onget="return this.hasAttribute('open');"> 1.54 + <setter><![CDATA[ 1.55 + this.boxObject.QueryInterface(Components.interfaces.nsIMenuBoxObject) 1.56 + .openMenu(val); 1.57 + return val; 1.58 + ]]></setter> 1.59 + </property> 1.60 + 1.61 + <property name="openedWithKey" readonly="true"> 1.62 + <getter><![CDATA[ 1.63 + return this.boxObject.QueryInterface(Components.interfaces.nsIMenuBoxObject) 1.64 + .openedWithKey; 1.65 + ]]></getter> 1.66 + </property> 1.67 + 1.68 + <!-- nsIDOMXULContainerElement interface --> 1.69 + <method name="appendItem"> 1.70 + <parameter name="aLabel"/> 1.71 + <parameter name="aValue"/> 1.72 + <body> 1.73 + return this.insertItemAt(-1, aLabel, aValue); 1.74 + </body> 1.75 + </method> 1.76 + 1.77 + <method name="insertItemAt"> 1.78 + <parameter name="aIndex"/> 1.79 + <parameter name="aLabel"/> 1.80 + <parameter name="aValue"/> 1.81 + <body> 1.82 + const XUL_NS = 1.83 + "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; 1.84 + 1.85 + var menupopup = this.menupopup; 1.86 + if (!menupopup) { 1.87 + menupopup = this.ownerDocument.createElementNS(XUL_NS, "menupopup"); 1.88 + this.appendChild(menupopup); 1.89 + } 1.90 + 1.91 + var menuitem = this.ownerDocument.createElementNS(XUL_NS, "menuitem"); 1.92 + menuitem.setAttribute("label", aLabel); 1.93 + menuitem.setAttribute("value", aValue); 1.94 + 1.95 + var before = this.getItemAtIndex(aIndex); 1.96 + if (before) 1.97 + return menupopup.insertBefore(menuitem, before); 1.98 + return menupopup.appendChild(menuitem); 1.99 + </body> 1.100 + </method> 1.101 + 1.102 + <method name="removeItemAt"> 1.103 + <parameter name="aIndex"/> 1.104 + <body> 1.105 + <![CDATA[ 1.106 + var menupopup = this.menupopup; 1.107 + if (menupopup) { 1.108 + var item = this.getItemAtIndex(aIndex); 1.109 + if (item) 1.110 + return menupopup.removeChild(item); 1.111 + } 1.112 + return null; 1.113 + ]]> 1.114 + </body> 1.115 + </method> 1.116 + 1.117 + <property name="itemCount" readonly="true"> 1.118 + <getter> 1.119 + var menupopup = this.menupopup; 1.120 + return menupopup ? menupopup.childNodes.length : 0; 1.121 + </getter> 1.122 + </property> 1.123 + 1.124 + <method name="getIndexOfItem"> 1.125 + <parameter name="aItem"/> 1.126 + <body> 1.127 + <![CDATA[ 1.128 + var menupopup = this.menupopup; 1.129 + if (menupopup) { 1.130 + var items = menupopup.childNodes; 1.131 + var length = items.length; 1.132 + for (var index = 0; index < length; ++index) { 1.133 + if (items[index] == aItem) 1.134 + return index; 1.135 + } 1.136 + } 1.137 + return -1; 1.138 + ]]> 1.139 + </body> 1.140 + </method> 1.141 + 1.142 + <method name="getItemAtIndex"> 1.143 + <parameter name="aIndex"/> 1.144 + <body> 1.145 + <![CDATA[ 1.146 + var menupopup = this.menupopup; 1.147 + if (!menupopup || aIndex < 0 || aIndex >= menupopup.childNodes.length) 1.148 + return null; 1.149 + 1.150 + return menupopup.childNodes[aIndex]; 1.151 + ]]> 1.152 + </body> 1.153 + </method> 1.154 + 1.155 + <property name="menupopup" readonly="true"> 1.156 + <getter> 1.157 + <![CDATA[ 1.158 + const XUL_NS = 1.159 + "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; 1.160 + 1.161 + for (var child = this.firstChild; child; child = child.nextSibling) { 1.162 + if (child.namespaceURI == XUL_NS && child.localName == "menupopup") 1.163 + return child; 1.164 + } 1.165 + return null; 1.166 + ]]> 1.167 + </getter> 1.168 + </property> 1.169 + </implementation> 1.170 + </binding> 1.171 + 1.172 + <binding id="menu" 1.173 + extends="chrome://global/content/bindings/menu.xml#menu-base"> 1.174 + <content> 1.175 + <xul:label class="menu-text" xbl:inherits="value=label,accesskey,crop" crop="right"/> 1.176 + <xul:hbox class="menu-accel-container" anonid="accel"> 1.177 + <xul:label class="menu-accel" xbl:inherits="value=acceltext"/> 1.178 + </xul:hbox> 1.179 + <xul:hbox align="center" class="menu-right" xbl:inherits="_moz-menuactive,disabled"> 1.180 + <xul:image/> 1.181 + </xul:hbox> 1.182 + <children includes="menupopup"/> 1.183 + </content> 1.184 + </binding> 1.185 + 1.186 + <binding id="menuitem" extends="chrome://global/content/bindings/menu.xml#menuitem-base"> 1.187 + <content> 1.188 + <xul:label class="menu-text" xbl:inherits="value=label,accesskey,crop" crop="right"/> 1.189 + <xul:hbox class="menu-accel-container" anonid="accel"> 1.190 + <xul:label class="menu-accel" xbl:inherits="value=acceltext"/> 1.191 + </xul:hbox> 1.192 + </content> 1.193 + </binding> 1.194 + 1.195 + <binding id="menu-menubar" 1.196 + extends="chrome://global/content/bindings/menu.xml#menu-base"> 1.197 + <content> 1.198 + <xul:label class="menubar-text" xbl:inherits="value=label,accesskey,crop" crop="right"/> 1.199 + <children includes="menupopup"/> 1.200 + </content> 1.201 + </binding> 1.202 + 1.203 + <binding id="menu-menubar-iconic" 1.204 + extends="chrome://global/content/bindings/menu.xml#menu-base"> 1.205 + <content> 1.206 + <xul:image class="menubar-left" xbl:inherits="src=image"/> 1.207 + <xul:label class="menubar-text" xbl:inherits="value=label,accesskey,crop" crop="right"/> 1.208 + <children includes="menupopup"/> 1.209 + </content> 1.210 + </binding> 1.211 + 1.212 + <binding id="menuitem-iconic" extends="chrome://global/content/bindings/menu.xml#menuitem"> 1.213 + <content> 1.214 + <xul:hbox class="menu-iconic-left" align="center" pack="center" 1.215 + xbl:inherits="selected,_moz-menuactive,disabled,checked"> 1.216 + <xul:image class="menu-iconic-icon" xbl:inherits="src=image,validate,src"/> 1.217 + </xul:hbox> 1.218 + <xul:label class="menu-iconic-text" flex="1" xbl:inherits="value=label,accesskey,crop" crop="right"/> 1.219 + <xul:hbox class="menu-accel-container" anonid="accel"> 1.220 + <xul:label class="menu-iconic-accel" xbl:inherits="value=acceltext"/> 1.221 + </xul:hbox> 1.222 + </content> 1.223 + </binding> 1.224 + 1.225 + <binding id="menuitem-iconic-noaccel" extends="chrome://global/content/bindings/menu.xml#menuitem"> 1.226 + <content> 1.227 + <xul:hbox class="menu-iconic-left" align="center" pack="center" 1.228 + xbl:inherits="selected,disabled,checked"> 1.229 + <xul:image class="menu-iconic-icon" xbl:inherits="src=image,validate,src"/> 1.230 + </xul:hbox> 1.231 + <xul:label class="menu-iconic-text" flex="1" xbl:inherits="value=label,accesskey,crop" crop="right"/> 1.232 + </content> 1.233 + </binding> 1.234 + 1.235 + <binding id="menuitem-iconic-desc-noaccel" extends="chrome://global/content/bindings/menu.xml#menuitem"> 1.236 + <content> 1.237 + <xul:hbox class="menu-iconic-left" align="center" pack="center" 1.238 + xbl:inherits="selected,disabled,checked"> 1.239 + <xul:image class="menu-iconic-icon" xbl:inherits="src=image,validate,src"/> 1.240 + </xul:hbox> 1.241 + <xul:label class="menu-iconic-text" xbl:inherits="value=label,accesskey,crop" crop="right" flex="1"/> 1.242 + <xul:label class="menu-iconic-text menu-description" xbl:inherits="value=description" crop="right" flex="10000"/> 1.243 + </content> 1.244 + </binding> 1.245 + 1.246 + <binding id="menu-iconic" 1.247 + extends="chrome://global/content/bindings/menu.xml#menu-base"> 1.248 + <content> 1.249 + <xul:hbox class="menu-iconic-left" align="center" pack="center"> 1.250 + <xul:image class="menu-iconic-icon" xbl:inherits="src=image"/> 1.251 + </xul:hbox> 1.252 + <xul:label class="menu-iconic-text" flex="1" xbl:inherits="value=label,accesskey,crop" crop="right"/> 1.253 + <xul:hbox class="menu-accel-container" anonid="accel"> 1.254 + <xul:label class="menu-iconic-accel" xbl:inherits="value=acceltext"/> 1.255 + </xul:hbox> 1.256 + <xul:hbox align="center" class="menu-right" xbl:inherits="_moz-menuactive,disabled"> 1.257 + <xul:image/> 1.258 + </xul:hbox> 1.259 + <children includes="menupopup|template"/> 1.260 + </content> 1.261 + </binding> 1.262 + 1.263 + <binding id="menubutton-item" extends="chrome://global/content/bindings/menu.xml#menuitem-base"> 1.264 + <content> 1.265 + <xul:label class="menubutton-text" flex="1" xbl:inherits="value=label,accesskey,crop" crop="right"/> 1.266 + <children includes="menupopup"/> 1.267 + </content> 1.268 + </binding> 1.269 + 1.270 + <binding id="menuseparator" role="xul:menuseparator" 1.271 + extends="chrome://global/content/bindings/menu.xml#menuitem-base"> 1.272 + </binding> 1.273 + 1.274 +</bindings>