<?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="filefieldBindings" 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="filefield" extends="chrome://global/content/bindings/general.xml#basetext"> <resources> <stylesheet src="chrome://global/skin/filefield.css"/> </resources> <content> <xul:stringbundle anonid="bundle" src="chrome://global/locale/filefield.properties"/> <xul:hbox class="fileFieldContentBox" align="center" flex="1" xbl:inherits="disabled"> <xul:image class="fileFieldIcon" xbl:inherits="src=image,disabled"/> <xul:textbox class="fileFieldLabel" xbl:inherits="value=label,disabled,accesskey,tabindex,aria-labelledby" flex="1" readonly="true"/> </xul:hbox> </content> <implementation implements="nsIDOMXULLabeledControlElement"> <property name="label" onget="return this.getAttribute('label');"> <setter> this.setAttribute('label', val); var elt = document.getAnonymousElementByAttribute(this, "class", "fileFieldLabel"); return (elt.value = val); </setter> </property> <field name="_file">null</field> <property name="file" onget="return this._file"> <setter> <![CDATA[ this._file = val; if (val) { this.image = this._getIconURLForFile(val); this.label = this._getDisplayNameForFile(val); } else { this.removeAttribute("image"); var bundle = document.getAnonymousElementByAttribute(this, "anonid", "bundle"); this.label = bundle.getString("downloadHelperNoneSelected"); } return val; ]]> </setter> </property> <method name="_getDisplayNameForFile"> <parameter name="aFile"/> <body> <![CDATA[ if (/Win/.test(navigator.platform)) { var lfw = aFile.QueryInterface(Components.interfaces.nsILocalFileWin); try { return lfw.getVersionInfoField("FileDescription"); } catch (e) { // fall through to the filename } } else if (/Mac/.test(navigator.platform)) { var lfm = aFile.QueryInterface(Components.interfaces.nsILocalFileMac); try { return lfm.bundleDisplayName; } catch (e) { // fall through to the file name } } var ios = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var url = ios.newFileURI(aFile).QueryInterface(Components.interfaces.nsIURL); return url.fileName; ]]> </body> </method> <method name="_getIconURLForFile"> <parameter name="aFile"/> <body> <![CDATA[ if (!aFile) return ""; var ios = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var fph = ios.getProtocolHandler("file") .QueryInterface(Components.interfaces.nsIFileProtocolHandler); var urlspec = fph.getURLSpecFromFile(aFile); return "moz-icon://" + urlspec + "?size=16"; ]]> </body> </method> </implementation> </binding> </bindings>