Mercurial > my-ubiquity-commands
view chromeless-browsing/chromeless.js @ 4:fd988ee76408
Added chromeless browsing feed.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Fri, 27 Mar 2009 13:16:11 -0700 |
parents | |
children | 96bb8d08e94a |
line wrap: on
line source
var noun_type_url = { _name: "url", _getHistoryLinks: function(partialSearch, onSearchComplete) { function AutoCompleteInput(aSearches) { this.searches = aSearches; } AutoCompleteInput.prototype = { constructor: AutoCompleteInput, searches: null, minResultsForPopup: 0, timeout: 10, searchParam: "", textValue: "", disableAutoComplete: false, completeDefaultIndex: false, get searchCount() { return this.searches.length; }, getSearchAt: function(aIndex) { return this.searches[aIndex]; }, onSearchBegin: function() {}, onSearchComplete: function() {}, popupOpen: false, popup: { setSelectedIndex: function(aIndex) {}, invalidate: function() {}, // nsISupports implementation QueryInterface: function(iid) { if (iid.equals(Ci.nsISupports) || iid.equals(Ci.nsIAutoCompletePopup)) return this; throw Components.results.NS_ERROR_NO_INTERFACE; } }, // nsISupports implementation QueryInterface: function(iid) { if (iid.equals(Ci.nsISupports) || iid.equals(Ci.nsIAutoCompleteInput)) return this; throw Components.results.NS_ERROR_NO_INTERFACE; } }; var controller = Cc["@mozilla.org/autocomplete/controller;1"] .getService(Ci.nsIAutoCompleteController); var input = new AutoCompleteInput(["history"]); controller.input = input; input.onSearchComplete = function() { onSearchComplete(controller); }; controller.startSearch(partialSearch); }, suggestions: [], _onSearchComplete: function(controller) { var suggs = []; var max_suggs = 5; for (var i = 0; i < controller.matchCount && i <= max_suggs; i++) { var result = { title: controller.getCommentAt(i), url: controller.getValueAt(i), image: controller.getImageAt(i), style: controller.getStyleAt(i) }; if (!result.title) result.title = result.url; if (result.image.indexOf("moz-anno:favicon:") == 0) result.image = result.image.slice("moz-anno:favicon:".length); else result.image = ""; suggs.push(CmdUtils.makeSugg(result.title, undefined, result)); } noun_type_url.suggestions = suggs; }, suggest: function(fragment) { this._getHistoryLinks(fragment, this._onSearchComplete); var regexp = /(ftp|http|https):\/\/(\w+:{01}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/; // Magic words "page" or "url" result in the URL of the current page if (fragment == "page" || fragment == "url") { var url = Application.activeWindow.activeTab.document.URL; this.suggestions.push(CmdUtils.makeSugg(url)); } // If it's a valid URL, suggest it back if (regexp.test(fragment)) { this.suggestions.push(CmdUtils.makeSugg(fragment)); } else if (regexp.test("http://" + fragment)) { this.suggestions.push(CmdUtils.makeSugg("http://" + fragment)); } return this.suggestions; } }; CmdUtils.CreateCommand( {name: "go", takes: { "search terms": noun_type_url }, preview: function(pblock, theWords) { if (theWords.text.length == 0) { pblock.innerHTML = "<b>Please enter a search term</b>"; return; } var result = ""; if (theWords.data) { if (theWords.data.image) result += ("<img src=\"" + Utils.escapeHtml(theWords.data.image) + "\"/> "); if (theWords.data.title != theWords.data.url) result += ("<i>" + Utils.escapeHtml(theWords.data.title) + "</i>"); result += ("<p><tt>" + Utils.escapeHtml(theWords.data.url) + "</tt></p>"); } else result = "Takes you to " + Utils.escapeHtml(theWords.text) + "."; pblock.innerHTML = result; }, execute: function(theWords) { Utils.openUrlInBrowser(theWords.text); }} ); function cmd_show_tabs() { var content = context.chromeWindow.document.getElementById("appcontent"); var browser = content.firstChild; var tabs = browser.tabContainer; tabs.style.height = "25px"; tabs.style.marginTop = "0px"; } function cmd_hide_tabs() { var content = context.chromeWindow.document.getElementById("appcontent"); var browser = content.firstChild; var tabs = browser.tabContainer; tabs.style.height = "0px"; tabs.style.marginTop = "-500px"; }