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>
|