annotate chromeless-browsing/chromeless.js @ 5:96bb8d08e94a

The 'go' command now uses proper asynchronous suggestions.
author Atul Varma <varmaa@toolness.com>
date Fri, 27 Mar 2009 13:34:14 -0700
parents fd988ee76408
children c89423660272
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 },
5
96bb8d08e94a The 'go' command now uses proper asynchronous suggestions.
Atul Varma <varmaa@toolness.com>
parents: 4
diff changeset
55 _onSearchComplete: function(controller, callback) {
4
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
56 var max_suggs = 5;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
57 for (var i = 0; i < controller.matchCount && i <= max_suggs; i++) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
58 var result = {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
59 title: controller.getCommentAt(i),
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
60 url: controller.getValueAt(i),
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
61 image: controller.getImageAt(i),
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
62 style: controller.getStyleAt(i)
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
63 };
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
64 if (!result.title)
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
65 result.title = result.url;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
66 if (result.image.indexOf("moz-anno:favicon:") == 0)
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
67 result.image = result.image.slice("moz-anno:favicon:".length);
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
68 else
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
69 result.image = "";
5
96bb8d08e94a The 'go' command now uses proper asynchronous suggestions.
Atul Varma <varmaa@toolness.com>
parents: 4
diff changeset
70 callback(CmdUtils.makeSugg(result.title, undefined, result));
4
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
71 }
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
72 },
5
96bb8d08e94a The 'go' command now uses proper asynchronous suggestions.
Atul Varma <varmaa@toolness.com>
parents: 4
diff changeset
73 suggest: function(fragment, html, callback) {
96bb8d08e94a The 'go' command now uses proper asynchronous suggestions.
Atul Varma <varmaa@toolness.com>
parents: 4
diff changeset
74 var self = this;
96bb8d08e94a The 'go' command now uses proper asynchronous suggestions.
Atul Varma <varmaa@toolness.com>
parents: 4
diff changeset
75 this._getHistoryLinks(
96bb8d08e94a The 'go' command now uses proper asynchronous suggestions.
Atul Varma <varmaa@toolness.com>
parents: 4
diff changeset
76 fragment,
96bb8d08e94a The 'go' command now uses proper asynchronous suggestions.
Atul Varma <varmaa@toolness.com>
parents: 4
diff changeset
77 function(controller) {
96bb8d08e94a The 'go' command now uses proper asynchronous suggestions.
Atul Varma <varmaa@toolness.com>
parents: 4
diff changeset
78 self._onSearchComplete(controller, callback);
96bb8d08e94a The 'go' command now uses proper asynchronous suggestions.
Atul Varma <varmaa@toolness.com>
parents: 4
diff changeset
79 });
96bb8d08e94a The 'go' command now uses proper asynchronous suggestions.
Atul Varma <varmaa@toolness.com>
parents: 4
diff changeset
80 return [CmdUtils.makeSugg(fragment)];
4
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
81 }
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
82 };
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 CmdUtils.CreateCommand(
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
85 {name: "go",
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
86 takes: {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
87 "search terms": noun_type_url
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
88 },
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
89 preview: function(pblock, theWords) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
90 if (theWords.text.length == 0) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
91 pblock.innerHTML = "<b>Please enter a search term</b>";
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
92 return;
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 var result = "";
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
95 if (theWords.data) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
96 if (theWords.data.image)
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
97 result += ("<img src=\"" +
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
98 Utils.escapeHtml(theWords.data.image) +
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
99 "\"/> ");
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
100 if (theWords.data.title != theWords.data.url)
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
101 result += ("<i>" +
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
102 Utils.escapeHtml(theWords.data.title) +
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
103 "</i>");
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
104 result += ("<p><tt>" +
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
105 Utils.escapeHtml(theWords.data.url) +
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
106 "</tt></p>");
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
107 } else
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
108 result = "Takes you to " + Utils.escapeHtml(theWords.text) + ".";
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
109 pblock.innerHTML = result;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
110 },
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
111 execute: function(theWords) {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
112 Utils.openUrlInBrowser(theWords.text);
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
113 }}
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
114 );
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
115
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
116 function cmd_show_tabs() {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
117 var content = context.chromeWindow.document.getElementById("appcontent");
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
118 var browser = content.firstChild;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
119 var tabs = browser.tabContainer;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
120 tabs.style.height = "25px";
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
121 tabs.style.marginTop = "0px";
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
122 }
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 function cmd_hide_tabs() {
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
125 var content = context.chromeWindow.document.getElementById("appcontent");
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
126 var browser = content.firstChild;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
127 var tabs = browser.tabContainer;
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
128 tabs.style.height = "0px";
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
129 tabs.style.marginTop = "-500px";
fd988ee76408 Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
130 }