aboutsummaryrefslogtreecommitdiffstats
path: root/bookmarks.js
diff options
context:
space:
mode:
authorAlex Kovar2010-10-20 18:03:23 -0500
committerAlex Kovar2010-10-20 18:03:23 -0500
commit8feb7df5e4185e2f28262a3524f7fb3d9b1e470d (patch)
tree1f5c08710e7bc1e9163d0e7f77d747a6654e5cb6 /bookmarks.js
parent58e494b82b5fee3662fca48543f86caabb16fc48 (diff)
downloadvimium-8feb7df5e4185e2f28262a3524f7fb3d9b1e470d.tar.bz2
initial code for bookmark mode completion dialog
Diffstat (limited to 'bookmarks.js')
-rw-r--r--bookmarks.js97
1 files changed, 47 insertions, 50 deletions
diff --git a/bookmarks.js b/bookmarks.js
index faa82148..6708067e 100644
--- a/bookmarks.js
+++ b/bookmarks.js
@@ -36,12 +36,14 @@ function activateBookmarkFindMode() {
}
this.renderHUD();
+ this.completionDialog.show();
this.keyPressListener.enable();
},
disable: function() {
this.enabled = false;
this.keyPressListener.disable();
+ this.completionDialog.hide()
HUD.hide();
},
getQueryString: function() {
@@ -61,71 +63,84 @@ function activateBookmarkFindMode() {
// private method
var initialize = function() {
+ var self = this;
this.initialized = true;
this.finder = new BookmarkFinder({
onResultsFound: function(bookmarks) {
- BookmarkMode.bookmarksFound = bookmarks;
- for(var i=0;i<bookmarks.length;i++) {
- console.log(bookmarks[i].title)
+ self.bookmarksFound = bookmarks;
+ if(bookmarks.length>10) {
+ bookmarks=bookmarks.slice(0, 10)
}
+ self.completionDialog.showCompletions(self.getQueryString(), bookmarks)
}
});
+ this.completionDialog = new CompletionDialog({
+ onSelect: function(selection) {
+ var url = selection.url
+ var isABookmarklet = function(url) {
+ return url.indexOf("javascript:")===0
+ }
+
+ if(!self.newTab || isABookmarklet(url)) {
+ window.location=url
+ }
+ else {
+ window.open(url)
+ }
+
+ self.disable();
+ },
+ renderOption: function(searchString, selection) {
+
+ var displaytext = selection.title + " (" + selection.url + ")"
+
+ if(displaytext.length>70) {
+ displaytext = displaytext.substr(0, 70)+"..."
+ }
+
+ return displaytext.split(new RegExp(searchString, "i")).join("<strong>"+searchString+"</strong>")
+ },
+ initialSearchText: "Type a bookmark name or URL"
+ })
+
this.keyPressListener = new KeyPressListener({
- keyDown: function(key) {
+ keyDown: function(event) {
// shift key will toggle between new tab/same tab
if (event.keyCode == keyCodes.shiftKey) {
- BookmarkMode.invertNewTabSetting();
+ self.invertNewTabSetting();
shiftWasPressedWhileToggled = true
return
}
- if(event.keyCode == keyCodes.enter) {
- var bookmarksFound = BookmarkMode.bookmarksFound;
- if(bookmarksFound && bookmarksFound.length>0) {
- var url = bookmarksFound[0].url
- var isABookmarklet = function(url) {
- return url.indexOf("javascript:")===0
- }
-
- if(!BookmarkMode.newTab || isABookmarklet(url)) {
- window.location=url
- }
- else {
- window.open(url)
- }
-
- BookmarkMode.disable();
- }
- }
-
var keyChar = getKeyChar(event);
if (!keyChar)
return;
// TODO(philc): Ignore keys that have modifiers.
if (isEscape(event)) {
- BookmarkMode.disable();
+ self.disable();
}
else if (event.keyCode == keyCodes.backspace || event.keyCode == keyCodes.deleteKey) {
- if (BookmarkMode.query.length == 0) {
- BookmarkMode.disable();
+ if (self.query.length == 0) {
+ self.disable();
} else {
- BookmarkMode.query.pop();
+ self.query.pop();
+ self.finder.find(self.getQueryString())
}
}
- else {
- BookmarkMode.query.push(keyChar);
+ else if(keyChar!=="up" && keyChar!=="down" && keyChar!=="left" && keyChar!="right") {
+ self.query.push(keyChar);
+ self.finder.find(self.getQueryString())
}
- BookmarkMode.finder.find(BookmarkMode.getQueryString())
event.stopPropagation();
event.preventDefault();
},
keyUp: function(event) {
// shift key will toggle between new tab/same tab
if (event.keyCode == keyCodes.shiftKey && shiftWasPressedWhileToggled) {
- BookmarkMode.invertNewTabSetting();
+ self.invertNewTabSetting();
shiftWasPressedWhileToggled = false
}
event.stopPropagation();
@@ -142,28 +157,10 @@ function activateBookmarkFindMode() {
}
BookmarkFinder.prototype = {
find: function(query) {
- console.log("You typed: " + query)
this.port.postMessage({query:query})
}
}
- var KeyPressListener = function(handlers) {
- this.handlers = handlers;
- }
-
- KeyPressListener.prototype = {
- enable: function() {
- var handlers = this.handlers;
- (handlers.keyDown && document.addEventListener("keydown", handlers.keyDown, true));
- (handlers.keyUp && document.addEventListener("keyup", handlers.keyUp, true));
- },
- disable: function() {
- var handlers = this.handlers;
- (handlers.keyDown && document.removeEventListener("keydown", handlers.keyDown, true));
- (handlers.keyUp && document.removeEventListener("keyup", handlers.keyUp, true));
- }
- }
-
//export global
window.BookmarkMode = BookmarkMode;