annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
1 var noun_type_url = {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
2 _name: "url",
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
3 _getHistoryLinks: function(partialSearch, onSearchComplete) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
4 function AutoCompleteInput(aSearches) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
5 this.searches = aSearches;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
6 }
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
7 AutoCompleteInput.prototype = {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
8 constructor: AutoCompleteInput,
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
9 searches: null,
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
10 minResultsForPopup: 0,
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
11 timeout: 10,
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
12 searchParam: "",
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
13 textValue: "",
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
14 disableAutoComplete: false,
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
15 completeDefaultIndex: false,
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
16 get searchCount() {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
17 return this.searches.length;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
18 },
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
19 getSearchAt: function(aIndex) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
20 return this.searches[aIndex];
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
21 },
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
22 onSearchBegin: function() {},
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
23 onSearchComplete: function() {},
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
24 popupOpen: false,
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
25 popup: {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
26 setSelectedIndex: function(aIndex) {},
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
27 invalidate: function() {},
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
28 // nsISupports implementation
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
29 QueryInterface: function(iid) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
30 if (iid.equals(Ci.nsISupports) ||
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
31 iid.equals(Ci.nsIAutoCompletePopup))
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
32 return this;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
33 throw Components.results.NS_ERROR_NO_INTERFACE;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
34 }
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
35 },
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
36 // nsISupports implementation
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
37 QueryInterface: function(iid) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
38 if (iid.equals(Ci.nsISupports) ||
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
39 iid.equals(Ci.nsIAutoCompleteInput))
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
40 return this;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
41 throw Components.results.NS_ERROR_NO_INTERFACE;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
42 }
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
43 };
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
44
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
45 var controller = Cc["@mozilla.org/autocomplete/controller;1"]
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
46 .getService(Ci.nsIAutoCompleteController);
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
47 var input = new AutoCompleteInput(["history"]);
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
48 controller.input = input;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
49 input.onSearchComplete = function() {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
50 onSearchComplete(controller);
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
51 };
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
52
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
53 controller.startSearch(partialSearch);
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
54 },
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
55 suggestions: [],
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
56 _onSearchComplete: function(controller) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
57 var suggs = [];
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
58 var max_suggs = 5;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
59 for (var i = 0; i < controller.matchCount && i <= max_suggs; i++) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
60 var result = {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
61 title: controller.getCommentAt(i),
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
62 url: controller.getValueAt(i),
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
63 image: controller.getImageAt(i),
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
64 style: controller.getStyleAt(i)
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
65 };
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
66 if (!result.title)
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
67 result.title = result.url;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
68 if (result.image.indexOf("moz-anno:favicon:") == 0)
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
69 result.image = result.image.slice("moz-anno:favicon:".length);
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
70 else
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
71 result.image = "";
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
72 suggs.push(CmdUtils.makeSugg(result.title, undefined, result));
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
73 }
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
74 noun_type_url.suggestions = suggs;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
75 },
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
76 suggest: function(fragment) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
77 this._getHistoryLinks(fragment, this._onSearchComplete);
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
78 var regexp = /(ftp|http|https):\/\/(\w+:{01}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
79 // Magic words "page" or "url" result in the URL of the current page
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
80 if (fragment == "page" || fragment == "url") {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
81 var url = Application.activeWindow.activeTab.document.URL;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
82 this.suggestions.push(CmdUtils.makeSugg(url));
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
83 }
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
84 // If it's a valid URL, suggest it back
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
85 if (regexp.test(fragment)) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
86 this.suggestions.push(CmdUtils.makeSugg(fragment));
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
87 } else if (regexp.test("http://" + fragment)) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
88 this.suggestions.push(CmdUtils.makeSugg("http://" + fragment));
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
89 }
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
90 return this.suggestions;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
91 }
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
92 };
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
93
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
94 CmdUtils.CreateCommand(
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
95 {name: "go",
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
96 takes: {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
97 "search terms": noun_type_url
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
98 },
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
99 preview: function(pblock, theWords) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
100 if (theWords.text.length == 0) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
101 pblock.innerHTML = "<b>Please enter a search term</b>";
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
102 return;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
103 }
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
104 var result = "";
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
105 if (theWords.data) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
106 if (theWords.data.image)
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
107 result += ("<img src=\"" +
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
108 Utils.escapeHtml(theWords.data.image) +
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
109 "\"/> ");
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
110 if (theWords.data.title != theWords.data.url)
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
111 result += ("<i>" +
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
112 Utils.escapeHtml(theWords.data.title) +
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
113 "</i>");
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
114 result += ("<p><tt>" +
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
115 Utils.escapeHtml(theWords.data.url) +
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
116 "</tt></p>");
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
117 } else
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
118 result = "Takes you to " + Utils.escapeHtml(theWords.text) + ".";
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
119 pblock.innerHTML = result;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
120 },
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
121 execute: function(theWords) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
122 Utils.openUrlInBrowser(theWords.text);
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
123 }}
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
124 );
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
125
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
126 function cmd_show_tabs() {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
127 var content = context.chromeWindow.document.getElementById("appcontent");
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
128 var browser = content.firstChild;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
129 var tabs = browser.tabContainer;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
130 tabs.style.height = "25px";
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
131 tabs.style.marginTop = "0px";
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
132 }
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
133
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
134 function cmd_hide_tabs() {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
135 var content = context.chromeWindow.document.getElementById("appcontent");
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
136 var browser = content.firstChild;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
137 var tabs = browser.tabContainer;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
138 tabs.style.height = "0px";
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
139 tabs.style.marginTop = "-500px";
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
140 }