Mercurial > my-ubiquity-commands
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 |
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 } |