| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
-   <title>The source code</title>
 
-   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
 
-   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
 
-   <style type="text/css">
 
-     .highlight { display: block; background-color: #ddd; }
 
-   </style>
 
-   <script type="text/javascript">
 
-     function highlight() {
 
-       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
 
-     }
 
-   </script>
 
- </head>
 
- <body onload="prettyPrint(); highlight();">
 
-   <pre class="prettyprint lang-js"><span id='Ext-menu-KeyNav'>/**
 
- </span> * @private
 
-  */
 
- Ext.define('Ext.menu.KeyNav', {
 
-     extend: 'Ext.util.KeyNav',
 
-     requires: ['Ext.FocusManager'],
 
-     
 
-     constructor: function(menu) {
 
-         var me = this;
 
-         me.menu = menu;
 
-         me.callParent([menu.el, {
 
-             down: me.down,
 
-             enter: me.enter,
 
-             esc: me.escape,
 
-             left: me.left,
 
-             right: me.right,
 
-             space: me.enter,
 
-             tab: me.tab,
 
-             up: me.up
 
-         }]);
 
-     },
 
-     down: function(e) {
 
-         var me = this,
 
-             fi = me.menu.focusedItem;
 
-         if (fi && e.getKey() == Ext.EventObject.DOWN && me.isWhitelisted(fi)) {
 
-             return true;
 
-         }
 
-         me.focusNextItem(1);
 
-     },
 
-     enter: function(e) {
 
-         var menu = this.menu,
 
-             focused = menu.focusedItem;
 
-  
 
-         if (menu.activeItem) {
 
-             menu.onClick(e);
 
-         } else if (focused && focused.isFormField) {
 
-             // prevent stopEvent being called
 
-             return true;
 
-         }
 
-     },
 
-     escape: function(e) {
 
-         Ext.menu.Manager.hideAll();
 
-     },
 
-     focusNextItem: function(step) {
 
-         var menu = this.menu,
 
-             items = menu.items,
 
-             focusedItem = menu.focusedItem,
 
-             startIdx = focusedItem ? items.indexOf(focusedItem) : -1,
 
-             idx = startIdx + step,
 
-             item;
 
-         while (idx != startIdx) {
 
-             if (idx < 0) {
 
-                 idx = items.length - 1;
 
-             } else if (idx >= items.length) {
 
-                 idx = 0;
 
-             }
 
-             item = items.getAt(idx);
 
-             if (menu.canActivateItem(item)) {
 
-                 menu.setActiveItem(item);
 
-                 break;
 
-             }
 
-             idx += step;
 
-         }
 
-     },
 
-     isWhitelisted: function(item) {
 
-         return Ext.FocusManager.isWhitelisted(item);
 
-     },
 
-     left: function(e) {
 
-         var menu = this.menu,
 
-             fi = menu.focusedItem,
 
-             ai = menu.activeItem;
 
-         if (fi && this.isWhitelisted(fi)) {
 
-             return true;
 
-         }
 
-         menu.hide();
 
-         if (menu.parentMenu) {
 
-             menu.parentMenu.focus();
 
-         }
 
-     },
 
-     right: function(e) {
 
-         var menu = this.menu,
 
-             fi = menu.focusedItem,
 
-             ai = menu.activeItem,
 
-             am;
 
-         if (fi && this.isWhitelisted(fi)) {
 
-             return true;
 
-         }
 
-         if (ai) {
 
-             am = menu.activeItem.menu;
 
-             if (am) {
 
-                 ai.expandMenu(0);
 
-                 Ext.defer(function() {
 
-                     am.setActiveItem(am.items.getAt(0));
 
-                 }, 25);
 
-             }
 
-         }
 
-     },
 
-     tab: function(e) {
 
-         var me = this;
 
-         if (e.shiftKey) {
 
-             me.up(e);
 
-         } else {
 
-             me.down(e);
 
-         }
 
-     },
 
-     up: function(e) {
 
-         var me = this,
 
-             fi = me.menu.focusedItem;
 
-         if (fi && e.getKey() == Ext.EventObject.UP && me.isWhitelisted(fi)) {
 
-             return true;
 
-         }
 
-         me.focusNextItem(-1);
 
-     }
 
- });</pre>
 
- </body>
 
- </html>
 
 
  |