Mercurial > my-ubiquity-commands
annotate chromeless-browsing/chromeless.js @ 7:c89423660272
Fixed execute of 'go' cmd to work in all cases.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Fri, 27 Mar 2009 16:43:18 -0700 |
parents | 96bb8d08e94a |
children | abe54fcda16c |
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) { |
7
c89423660272
Fixed execute of 'go' cmd to work in all cases.
Atul Varma <varmaa@toolness.com>
parents:
5
diff
changeset
|
112 if (theWords.data) |
c89423660272
Fixed execute of 'go' cmd to work in all cases.
Atul Varma <varmaa@toolness.com>
parents:
5
diff
changeset
|
113 Utils.openUrlInBrowser(theWords.data.url); |
c89423660272
Fixed execute of 'go' cmd to work in all cases.
Atul Varma <varmaa@toolness.com>
parents:
5
diff
changeset
|
114 else |
c89423660272
Fixed execute of 'go' cmd to work in all cases.
Atul Varma <varmaa@toolness.com>
parents:
5
diff
changeset
|
115 Utils.openUrlInBrowser(theWords.text); |
4
fd988ee76408
Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
116 }} |
fd988ee76408
Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
117 ); |
fd988ee76408
Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
118 |
fd988ee76408
Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
119 function cmd_show_tabs() { |
fd988ee76408
Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
120 var content = context.chromeWindow.document.getElementById("appcontent"); |
fd988ee76408
Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
121 var browser = content.firstChild; |
fd988ee76408
Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
122 var tabs = browser.tabContainer; |
fd988ee76408
Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
123 tabs.style.height = "25px"; |
fd988ee76408
Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
124 tabs.style.marginTop = "0px"; |
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 |
fd988ee76408
Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
127 function cmd_hide_tabs() { |
fd988ee76408
Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
128 var content = context.chromeWindow.document.getElementById("appcontent"); |
fd988ee76408
Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
129 var browser = content.firstChild; |
fd988ee76408
Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
130 var tabs = browser.tabContainer; |
fd988ee76408
Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
131 tabs.style.height = "0px"; |
fd988ee76408
Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
132 tabs.style.marginTop = "-500px"; |
fd988ee76408
Added chromeless browsing feed.
Atul Varma <varmaa@toolness.com>
parents:
diff
changeset
|
133 } |