michael@0: michael@0: # -*- Mode: HTML -*- michael@0: # This Source Code Form is subject to the terms of the Mozilla Public michael@0: # License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: # file, You can obtain one at http://mozilla.org/MPL/2.0/. michael@0: michael@0: michael@0: %searchBarDTD; michael@0: michael@0: %browserDTD; michael@0: ]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: document.getAnonymousElementByAttribute(this, michael@0: "anonid", "searchbar-stringbundle"); michael@0: document.getAnonymousElementByAttribute(this, michael@0: "anonid", "searchbar-textbox"); michael@0: document.getAnonymousElementByAttribute(this, michael@0: "anonid", "searchbar-popup"); michael@0: null michael@0: null michael@0: michael@0: (Components.utils.import("resource://gre/modules/FormHistory.jsm", {})).FormHistory; michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: document.getAnonymousElementByAttribute(this, michael@0: "anonid", "searchbar-engine-button"); michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: = 0; i--) { michael@0: if (items[i].classList.contains("addengine-item") || michael@0: items[i].classList.contains("addengine-separator")) michael@0: popup.removeChild(items[i]); michael@0: } michael@0: michael@0: var addengines = getBrowser().mCurrentBrowser.engines; michael@0: if (addengines && addengines.length > 0) { michael@0: const kXULNS = michael@0: "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; michael@0: michael@0: // Find the (first) separator in the remaining menu, or the first item michael@0: // if no separators are present. michael@0: var insertLocation = popup.firstChild; michael@0: while (insertLocation.nextSibling && michael@0: insertLocation.localName != "menuseparator") { michael@0: insertLocation = insertLocation.nextSibling; michael@0: } michael@0: if (insertLocation.localName != "menuseparator") michael@0: insertLocation = popup.firstChild; michael@0: michael@0: var separator = document.createElementNS(kXULNS, "menuseparator"); michael@0: separator.setAttribute("class", "addengine-separator"); michael@0: popup.insertBefore(separator, insertLocation); michael@0: michael@0: // Insert the "add this engine" items. michael@0: for (var i = 0; i < addengines.length; i++) { michael@0: var menuitem = document.createElement("menuitem"); michael@0: var engineInfo = addengines[i]; michael@0: var labelStr = michael@0: this._stringBundle.getFormattedString("cmd_addFoundEngine", michael@0: [engineInfo.title]); michael@0: menuitem = document.createElementNS(kXULNS, "menuitem"); michael@0: menuitem.setAttribute("class", "menuitem-iconic addengine-item"); michael@0: menuitem.setAttribute("label", labelStr); michael@0: menuitem.setAttribute("tooltiptext", engineInfo.uri); michael@0: menuitem.setAttribute("uri", engineInfo.uri); michael@0: if (engineInfo.icon) michael@0: this.setIcon(menuitem, engineInfo.icon); michael@0: menuitem.setAttribute("title", engineInfo.title); michael@0: popup.insertBefore(menuitem, insertLocation); michael@0: } michael@0: } michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: = 0; --i) { michael@0: var menuitem = document.createElementNS(kXULNS, "menuitem"); michael@0: var name = engines[i].name; michael@0: menuitem.setAttribute("label", name); michael@0: menuitem.setAttribute("id", name); michael@0: menuitem.setAttribute("class", "menuitem-iconic searchbar-engine-menuitem menuitem-with-favicon"); michael@0: // Since this menu is rebuilt by the observer method whenever a new michael@0: // engine is selected, the "selected" attribute does not need to be michael@0: // explicitly cleared anywhere. michael@0: if (engines[i] == this.currentEngine) michael@0: menuitem.setAttribute("selected", "true"); michael@0: var tooltip = this._stringBundle.getFormattedString("searchtip", [name]); michael@0: menuitem.setAttribute("tooltiptext", tooltip); michael@0: if (engines[i].iconURI) michael@0: this.setIcon(menuitem, engines[i].iconURI.spec); michael@0: popup.insertBefore(menuitem, popup.firstChild); michael@0: menuitem.engine = engines[i]; michael@0: } michael@0: michael@0: this._needToBuildPopup = false; michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: = 0 && newIndex < this.engines.length) { michael@0: this.currentEngine = this.engines[newIndex]; michael@0: } michael@0: michael@0: aEvent.preventDefault(); michael@0: aEvent.stopPropagation(); michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: this.currentEngine = engine michael@0: } michael@0: searchService.addEngine(target.getAttribute("uri"), type, michael@0: target.getAttribute("src"), false, michael@0: installCallback); michael@0: } michael@0: else michael@0: return; michael@0: michael@0: this.focus(); michael@0: this.select(); michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: 100 ? width : 100); michael@0: michael@0: var yOffset = outerRect.bottom - innerRect.bottom; michael@0: popup.openPopup(this.inputField, "after_start", 0, yOffset, false, false); michael@0: } michael@0: ]]> michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: #ifndef XP_MACOSX michael@0: michael@0: #endif michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: