- evt.removeListener();\r
- dialog.hide();\r
-\r
- // Place the cursor at the first editable place.\r
- var range = new CKEDITOR.dom.range( editor.document );\r
- range.moveToElementEditStart( editor.document.getBody() );\r
- range.select( true );\r
- } );\r
- editor.setData( html );\r
- }\r
- else\r
- {\r
- editor.insertHtml( html );\r
- dialog.hide();\r
- }\r
- }\r
+ var target = evt.data.getTarget(),\r
+ onList = listContainer.equals( target );\r
+\r
+ // Keyboard navigation for template list.\r
+ if ( onList || listContainer.contains( target ) )\r
+ {\r
+ var keystroke = evt.data.getKeystroke(),\r
+ items = listContainer.getElementsByTag( 'a' ),\r
+ focusItem;\r
+\r
+ if ( items )\r
+ {\r
+ // Focus not yet onto list items?\r
+ if ( onList )\r
+ focusItem = items.getItem( 0 );\r
+ else\r
+ {\r
+ switch ( keystroke )\r
+ {\r
+ case 40 : // ARROW-DOWN\r
+ focusItem = target.getNext();\r
+ break;\r
+\r
+ case 38 : // ARROW-UP\r
+ focusItem = target.getPrevious();\r
+ break;\r
+\r
+ case 13 : // ENTER\r
+ case 32 : // SPACE\r
+ target.fire( 'click' );\r
+ }\r
+ }\r
+\r
+ if ( focusItem )\r
+ {\r
+ focusItem.focus();\r
+ evt.data.preventDefault();\r
+ }\r
+ }\r
+ }\r
+ }\r