From 7e9a5171f3d6b96d1bc1e78814f3c2cf9dc68d00 Mon Sep 17 00:00:00 2001 From: Dan Helfman Date: Sun, 29 Jun 2008 13:53:49 -0700 Subject: [PATCH] Factored out some Suggest_pulldown up/down/ handler stuff to separate functions. --- static/js/Wiki.js | 52 +++++++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/static/js/Wiki.js b/static/js/Wiki.js index 7a43baa..dc03b83 100644 --- a/static/js/Wiki.js +++ b/static/js/Wiki.js @@ -3443,37 +3443,16 @@ Suggest_pulldown.prototype.key_pressed = function ( event ) { return; var code = event.key().code; + var selected = getFirstElementByTagAndClassName( "div", "selected_suggestion", this.div ); // up arrow or shift-tab: move up to the previous suggestion if ( code == 38 || ( code == 9 && event.modifier().shift ) ) { - var selected = getFirstElementByTagAndClassName( "div", "selected_suggestion", this.div ); - - // if something is selected and there's a previous suggestion in the list, move the selection up - if ( selected && selected.previousSibling ) { - removeElementClass( selected, "selected_suggestion" ); - addElementClass( selected.previousSibling, "selected_suggestion" ); - // otherwise, hide the Suggest_pulldown - } else { - addElementClass( this.div, "invisible" ); - } + this.previous_suggestion( selected ); // down arrow or tab: move down to the previous suggestion } else if ( code == 40 || code == 9 ) { - var selected = getFirstElementByTagAndClassName( "div", "selected_suggestion", this.div ); - - // if something is selected and there's a next suggestion in the list, move the selection down - if ( selected ) { - if ( selected.nextSibling ) { - removeElementClass( selected, "selected_suggestion" ); - addElementClass( selected.nextSibling, "selected_suggestion" ); - } - // if nothing is selected yet, then just select the first link - } else { - var suggest_link = getFirstElementByTagAndClassName( "a", "pulldown_link", this.div ); - addElementClass( suggest_link.parentNode, "selected_suggestion" ); - } + this.next_suggestion( selected ); // enter: select current suggestion } else if ( code == 13 ) { - var selected = getFirstElementByTagAndClassName( "div", "selected_suggestion", this.div ); var suggest_link = getFirstElementByTagAndClassName( "a", "pulldown_link", selected ); if ( selected ) @@ -3489,6 +3468,31 @@ Suggest_pulldown.prototype.key_pressed = function ( event ) { event.stop(); } +Suggest_pulldown.prototype.previous_suggestion = function ( selected ) { + // if something is selected and there's a previous suggestion in the list, move the selection up + if ( selected && selected.previousSibling ) { + removeElementClass( selected, "selected_suggestion" ); + addElementClass( selected.previousSibling, "selected_suggestion" ); + // otherwise, hide the Suggest_pulldown + } else { + addElementClass( this.div, "invisible" ); + } +} + +Suggest_pulldown.prototype.next_suggestion = function ( selected ) { + // if something is selected and there's a next suggestion in the list, move the selection down + if ( selected ) { + if ( selected.nextSibling ) { + removeElementClass( selected, "selected_suggestion" ); + addElementClass( selected.nextSibling, "selected_suggestion" ); + } + // if nothing is selected yet, then just select the first link + } else { + var suggest_link = getFirstElementByTagAndClassName( "a", "pulldown_link", this.div ); + addElementClass( suggest_link.parentNode, "selected_suggestion" ); + } +} + Suggest_pulldown.prototype.update_position = function ( anchor, relative_to ) { Pulldown.prototype.update_position.call( this, anchor, relative_to ); }