From f69f952d9332dcc6e4831ec52982f0012d4aed9f Mon Sep 17 00:00:00 2001 From: Phil Crosby Date: Tue, 12 Jun 2012 21:59:20 -0700 Subject: Port vomnibar.js to coffeescript --- content_scripts/vomnibar.js | 253 -------------------------------------------- 1 file changed, 253 deletions(-) delete mode 100644 content_scripts/vomnibar.js (limited to 'content_scripts/vomnibar.js') diff --git a/content_scripts/vomnibar.js b/content_scripts/vomnibar.js deleted file mode 100644 index c1deeb3c..00000000 --- a/content_scripts/vomnibar.js +++ /dev/null @@ -1,253 +0,0 @@ -var vomnibar = (function() { - var vomnibarUI = null; // the dialog instance for this window - var completers = { }; - - function getCompleter(name) { - if (!(name in completers)) - completers[name] = new BackgroundCompleter(name); - return completers[name]; - } - - /* - * Activate the Vomnibox. - */ - function activate(completerName, refreshInterval, initialQueryValue) { - var completer = getCompleter(completerName); - if (!vomnibarUI) - vomnibarUI = new VomnibarUI(); - completer.refresh(); - vomnibarUI.setCompleter(completer); - vomnibarUI.setRefreshInterval(refreshInterval); - vomnibarUI.show(); - if (initialQueryValue) { - vomnibarUI.setQuery(initialQueryValue); - vomnibarUI.update(); - } - } - - /** User interface for fuzzy completion */ - var VomnibarUI = Class.extend({ - init: function() { - this.refreshInterval = 0; - this.initDom(); - }, - - setQuery: function(query) { this.input.value = query; }, - - setCompleter: function(completer) { - this.completer = completer; - this.reset(); - }, - - setRefreshInterval: function(refreshInterval) { this.refreshInterval = refreshInterval; }, - - show: function() { - this.box.style.display = "block"; - this.input.focus(); - handlerStack.push({ keydown: this.onKeydown.bind(this) }); - }, - - hide: function() { - this.box.style.display = "none"; - this.completionList.style.display = "none"; - this.input.blur(); - handlerStack.pop(); - }, - - reset: function() { - this.input.value = ""; - this.updateTimer = null; - this.completions = []; - this.selection = -1; - this.update(true); - }, - - updateSelection: function() { - if (this.completions.length > 0) - this.selection = Math.min(this.selection, this.completions.length - 1); - for (var i = 0; i < this.completionList.children.length; ++i) - this.completionList.children[i].className = (i == this.selection) ? "selected" : ""; - }, - - /* - * Returns the user's action ("up", "down", "enter", "dismiss" or null) based on their keypress. - * We support the arrow keys and other shortcuts for moving, so this method hides that complexity. - */ - actionFromKeyEvent: function(event) { - var key = KeyboardUtils.getKeyChar(event); - if (KeyboardUtils.isEscape(event)) - return "dismiss"; - else if (key == "up" || - (event.shiftKey && event.keyCode == keyCodes.tab) || - (event.ctrlKey && (key == "k" || key == "p"))) - return "up"; - else if (key == "down" || - (event.keyCode == keyCodes.tab && !event.shiftKey) || - (event.ctrlKey && (key == "j" || key == "n"))) - return "down"; - else if (event.keyCode == keyCodes.enter) - return "enter"; - }, - - onKeydown: function(event) { - var action = this.actionFromKeyEvent(event); - if (!action) return true; // pass through - - var openInNewTab = (event.shiftKey || KeyboardUtils.isPrimaryModifierKey(event)); - if (action == "dismiss") { - this.hide(); - } - else if (action == "up") { - if (this.selection >= 0) - this.selection -= 1; - this.updateSelection(); - } - else if (action == "down") { - if (this.selection < this.completions.length - 1) - this.selection += 1; - this.updateSelection(); - } - else if (action == "enter") { - // If they type something and hit enter without selecting a completion from our list of suggestions, - // try to open their query as a URL directly. If it doesn't look like a URL, we will search using - // google. - if (this.selection == -1) { - var query = this.input.value.trim(); - chrome.extension.sendRequest({ - handler: openInNewTab ? "openUrlInNewTab" : "openUrlInCurrentTab", - url: query }); - } else { - this.update(true, function() { - // Shift+Enter will open the result in a new tab instead of the current tab. - this.completions[this.selection].performAction(openInNewTab); - this.hide(); - }.proxy(this)); - } - } - - // It seems like we have to manually supress the event here and still return true. - event.stopPropagation(); - event.preventDefault(); - return true; - }, - - updateCompletions: function(callback) { - query = this.input.value.trim(); - - this.completer.filter(query, function(completions) { - this.completions = completions; - this.populateUiWithCompletions(completions); - if (callback) callback(); - }.proxy(this)); - }, - - populateUiWithCompletions: function(completions) { - // update completion list with the new data - this.completionList.innerHTML = completions.map(function(completion) { - return "