| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696 | 
							- <!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-view-View'>/**
 
- </span> * A mechanism for displaying data using custom layout templates and formatting.
 
-  *
 
-  * The View uses an {@link Ext.XTemplate} as its internal templating mechanism, and is bound to an
 
-  * {@link Ext.data.Store} so that as the data in the store changes the view is automatically updated
 
-  * to reflect the changes. The view also provides built-in behavior for many common events that can
 
-  * occur for its contained items including click, doubleclick, mouseover, mouseout, etc. as well as a
 
-  * built-in selection model. **In order to use these features, an {@link #itemSelector} config must
 
-  * be provided for the View to determine what nodes it will be working with.**
 
-  *
 
-  * The example below binds a View to a {@link Ext.data.Store} and renders it into an {@link Ext.panel.Panel}.
 
-  *
 
-  *     @example
 
-  *     Ext.define('Image', {
 
-  *         extend: 'Ext.data.Model',
 
-  *         fields: [
 
-  *             { name:'src', type:'string' },
 
-  *             { name:'caption', type:'string' }
 
-  *         ]
 
-  *     });
 
-  *
 
-  *     Ext.create('Ext.data.Store', {
 
-  *         id:'imagesStore',
 
-  *         model: 'Image',
 
-  *         data: [
 
-  *             { src:'http://www.sencha.com/img/20110215-feat-drawing.png', caption:'Drawing & Charts' },
 
-  *             { src:'http://www.sencha.com/img/20110215-feat-data.png', caption:'Advanced Data' },
 
-  *             { src:'http://www.sencha.com/img/20110215-feat-html5.png', caption:'Overhauled Theme' },
 
-  *             { src:'http://www.sencha.com/img/20110215-feat-perf.png', caption:'Performance Tuned' }
 
-  *         ]
 
-  *     });
 
-  *
 
-  *     var imageTpl = new Ext.XTemplate(
 
-  *         '<tpl for=".">',
 
-  *             '<div style="margin-bottom: 10px;" class="thumb-wrap">',
 
-  *               '<img src="{src}" />',
 
-  *               '<br/><span>{caption}</span>',
 
-  *             '</div>',
 
-  *         '</tpl>'
 
-  *     );
 
-  *
 
-  *     Ext.create('Ext.view.View', {
 
-  *         store: Ext.data.StoreManager.lookup('imagesStore'),
 
-  *         tpl: imageTpl,
 
-  *         itemSelector: 'div.thumb-wrap',
 
-  *         emptyText: 'No images available',
 
-  *         renderTo: Ext.getBody()
 
-  *     });
 
-  */
 
- Ext.define('Ext.view.View', {
 
-     extend: 'Ext.view.AbstractView',
 
-     alternateClassName: 'Ext.DataView',
 
-     alias: 'widget.dataview',
 
-     deferHighlight: (Ext.isIE6 || Ext.isIE7) ? 100 : 0,
 
-     inputTagRe: /^textarea$|^input$/i,
 
-     inheritableStatics: {
 
-         EventMap: {
 
-             mousedown: 'MouseDown',
 
-             mouseup: 'MouseUp',
 
-             click: 'Click',
 
-             dblclick: 'DblClick',
 
-             contextmenu: 'ContextMenu',
 
-             mouseover: 'MouseOver',
 
-             mouseout: 'MouseOut',
 
-             mouseenter: 'MouseEnter',
 
-             mouseleave: 'MouseLeave',
 
-             keydown: 'KeyDown',
 
-             focus: 'Focus'
 
-         }
 
-     },
 
-     initComponent: function() {
 
-         var me = this;
 
-         me.callParent();
 
-         if (me.deferHighlight){
 
-             me.setHighlightedItem =
 
-                 Ext.Function.createBuffered(me.setHighlightedItem, me.deferHighlight, me);
 
-         }
 
-     },
 
-     addCmpEvents: function() {
 
-         this.addEvents(
 
- <span id='Ext-view-View-event-beforeitemmousedown'>            /**
 
- </span>             * @event beforeitemmousedown
 
-              * Fires before the mousedown event on an item is processed. Returns false to cancel the default action.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.data.Model} record The record that belongs to the item
 
-              * @param {HTMLElement} item The item's element
 
-              * @param {Number} index The item's index
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'beforeitemmousedown',
 
- <span id='Ext-view-View-event-beforeitemmouseup'>            /**
 
- </span>             * @event beforeitemmouseup
 
-              * Fires before the mouseup event on an item is processed. Returns false to cancel the default action.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.data.Model} record The record that belongs to the item
 
-              * @param {HTMLElement} item The item's element
 
-              * @param {Number} index The item's index
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'beforeitemmouseup',
 
- <span id='Ext-view-View-event-beforeitemmouseenter'>            /**
 
- </span>             * @event beforeitemmouseenter
 
-              * Fires before the mouseenter event on an item is processed. Returns false to cancel the default action.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.data.Model} record The record that belongs to the item
 
-              * @param {HTMLElement} item The item's element
 
-              * @param {Number} index The item's index
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'beforeitemmouseenter',
 
- <span id='Ext-view-View-event-beforeitemmouseleave'>            /**
 
- </span>             * @event beforeitemmouseleave
 
-              * Fires before the mouseleave event on an item is processed. Returns false to cancel the default action.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.data.Model} record The record that belongs to the item
 
-              * @param {HTMLElement} item The item's element
 
-              * @param {Number} index The item's index
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'beforeitemmouseleave',
 
- <span id='Ext-view-View-event-beforeitemclick'>            /**
 
- </span>             * @event beforeitemclick
 
-              * Fires before the click event on an item is processed. Returns false to cancel the default action.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.data.Model} record The record that belongs to the item
 
-              * @param {HTMLElement} item The item's element
 
-              * @param {Number} index The item's index
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'beforeitemclick',
 
- <span id='Ext-view-View-event-beforeitemdblclick'>            /**
 
- </span>             * @event beforeitemdblclick
 
-              * Fires before the dblclick event on an item is processed. Returns false to cancel the default action.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.data.Model} record The record that belongs to the item
 
-              * @param {HTMLElement} item The item's element
 
-              * @param {Number} index The item's index
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'beforeitemdblclick',
 
- <span id='Ext-view-View-event-beforeitemcontextmenu'>            /**
 
- </span>             * @event beforeitemcontextmenu
 
-              * Fires before the contextmenu event on an item is processed. Returns false to cancel the default action.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.data.Model} record The record that belongs to the item
 
-              * @param {HTMLElement} item The item's element
 
-              * @param {Number} index The item's index
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'beforeitemcontextmenu',
 
- <span id='Ext-view-View-event-beforeitemkeydown'>            /**
 
- </span>             * @event beforeitemkeydown
 
-              * Fires before the keydown event on an item is processed. Returns false to cancel the default action.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.data.Model} record The record that belongs to the item
 
-              * @param {HTMLElement} item The item's element
 
-              * @param {Number} index The item's index
 
-              * @param {Ext.EventObject} e The raw event object. Use {@link Ext.EventObject#getKey getKey()} to retrieve the key that was pressed.
 
-              */
 
-             'beforeitemkeydown',
 
- <span id='Ext-view-View-event-itemmousedown'>            /**
 
- </span>             * @event itemmousedown
 
-              * Fires when there is a mouse down on an item
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.data.Model} record The record that belongs to the item
 
-              * @param {HTMLElement} item The item's element
 
-              * @param {Number} index The item's index
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'itemmousedown',
 
- <span id='Ext-view-View-event-itemmouseup'>            /**
 
- </span>             * @event itemmouseup
 
-              * Fires when there is a mouse up on an item
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.data.Model} record The record that belongs to the item
 
-              * @param {HTMLElement} item The item's element
 
-              * @param {Number} index The item's index
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'itemmouseup',
 
- <span id='Ext-view-View-event-itemmouseenter'>            /**
 
- </span>             * @event itemmouseenter
 
-              * Fires when the mouse enters an item.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.data.Model} record The record that belongs to the item
 
-              * @param {HTMLElement} item The item's element
 
-              * @param {Number} index The item's index
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'itemmouseenter',
 
- <span id='Ext-view-View-event-itemmouseleave'>            /**
 
- </span>             * @event itemmouseleave
 
-              * Fires when the mouse leaves an item.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.data.Model} record The record that belongs to the item
 
-              * @param {HTMLElement} item The item's element
 
-              * @param {Number} index The item's index
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'itemmouseleave',
 
- <span id='Ext-view-View-event-itemclick'>            /**
 
- </span>             * @event itemclick
 
-              * Fires when an item is clicked.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.data.Model} record The record that belongs to the item
 
-              * @param {HTMLElement} item The item's element
 
-              * @param {Number} index The item's index
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'itemclick',
 
- <span id='Ext-view-View-event-itemdblclick'>            /**
 
- </span>             * @event itemdblclick
 
-              * Fires when an item is double clicked.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.data.Model} record The record that belongs to the item
 
-              * @param {HTMLElement} item The item's element
 
-              * @param {Number} index The item's index
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'itemdblclick',
 
- <span id='Ext-view-View-event-itemcontextmenu'>            /**
 
- </span>             * @event itemcontextmenu
 
-              * Fires when an item is right clicked.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.data.Model} record The record that belongs to the item
 
-              * @param {HTMLElement} item The item's element
 
-              * @param {Number} index The item's index
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'itemcontextmenu',
 
- <span id='Ext-view-View-event-itemkeydown'>            /**
 
- </span>             * @event itemkeydown
 
-              * Fires when a key is pressed while an item is currently selected.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.data.Model} record The record that belongs to the item
 
-              * @param {HTMLElement} item The item's element
 
-              * @param {Number} index The item's index
 
-              * @param {Ext.EventObject} e The raw event object. Use {@link Ext.EventObject#getKey getKey()} to retrieve the key that was pressed.
 
-              */
 
-             'itemkeydown',
 
- <span id='Ext-view-View-event-beforecontainermousedown'>            /**
 
- </span>             * @event beforecontainermousedown
 
-              * Fires before the mousedown event on the container is processed. Returns false to cancel the default action.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'beforecontainermousedown',
 
- <span id='Ext-view-View-event-beforecontainermouseup'>            /**
 
- </span>             * @event beforecontainermouseup
 
-              * Fires before the mouseup event on the container is processed. Returns false to cancel the default action.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'beforecontainermouseup',
 
- <span id='Ext-view-View-event-beforecontainermouseover'>            /**
 
- </span>             * @event beforecontainermouseover
 
-              * Fires before the mouseover event on the container is processed. Returns false to cancel the default action.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'beforecontainermouseover',
 
- <span id='Ext-view-View-event-beforecontainermouseout'>            /**
 
- </span>             * @event beforecontainermouseout
 
-              * Fires before the mouseout event on the container is processed. Returns false to cancel the default action.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'beforecontainermouseout',
 
- <span id='Ext-view-View-event-beforecontainerclick'>            /**
 
- </span>             * @event beforecontainerclick
 
-              * Fires before the click event on the container is processed. Returns false to cancel the default action.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'beforecontainerclick',
 
- <span id='Ext-view-View-event-beforecontainerdblclick'>            /**
 
- </span>             * @event beforecontainerdblclick
 
-              * Fires before the dblclick event on the container is processed. Returns false to cancel the default action.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'beforecontainerdblclick',
 
- <span id='Ext-view-View-event-beforecontainercontextmenu'>            /**
 
- </span>             * @event beforecontainercontextmenu
 
-              * Fires before the contextmenu event on the container is processed. Returns false to cancel the default action.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'beforecontainercontextmenu',
 
- <span id='Ext-view-View-event-beforecontainerkeydown'>            /**
 
- </span>             * @event beforecontainerkeydown
 
-              * Fires before the keydown event on the container is processed. Returns false to cancel the default action.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.EventObject} e The raw event object. Use {@link Ext.EventObject#getKey getKey()} to retrieve the key that was pressed.
 
-              */
 
-             'beforecontainerkeydown',
 
- <span id='Ext-view-View-event-containermouseup'>            /**
 
- </span>             * @event containermouseup
 
-              * Fires when there is a mouse up on the container
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'containermouseup',
 
- <span id='Ext-view-View-event-containermouseover'>            /**
 
- </span>             * @event containermouseover
 
-              * Fires when you move the mouse over the container.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'containermouseover',
 
- <span id='Ext-view-View-event-containermouseout'>            /**
 
- </span>             * @event containermouseout
 
-              * Fires when you move the mouse out of the container.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'containermouseout',
 
- <span id='Ext-view-View-event-containerclick'>            /**
 
- </span>             * @event containerclick
 
-              * Fires when the container is clicked.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'containerclick',
 
- <span id='Ext-view-View-event-containerdblclick'>            /**
 
- </span>             * @event containerdblclick
 
-              * Fires when the container is double clicked.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'containerdblclick',
 
- <span id='Ext-view-View-event-containercontextmenu'>            /**
 
- </span>             * @event containercontextmenu
 
-              * Fires when the container is right clicked.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.EventObject} e The raw event object
 
-              */
 
-             'containercontextmenu',
 
- <span id='Ext-view-View-event-containerkeydown'>            /**
 
- </span>             * @event containerkeydown
 
-              * Fires when a key is pressed while the container is focused, and no item is currently selected.
 
-              * @param {Ext.view.View} this
 
-              * @param {Ext.EventObject} e The raw event object. Use {@link Ext.EventObject#getKey getKey()} to retrieve the key that was pressed.
 
-              */
 
-             'containerkeydown',
 
- <span id='Ext-view-View-event-selectionchange'>            /**
 
- </span>             * @event
 
-              * @inheritdoc Ext.selection.DataViewModel#selectionchange
 
-              */
 
-             'selectionchange',
 
- <span id='Ext-view-View-event-beforeselect'>            /**
 
- </span>             * @event
 
-              * @inheritdoc Ext.selection.DataViewModel#beforeselect
 
-              */
 
-             'beforeselect',
 
- <span id='Ext-view-View-event-beforedeselect'>            /**
 
- </span>             * @event
 
-              * @inheritdoc Ext.selection.DataViewModel#beforedeselect
 
-              */
 
-             'beforedeselect',
 
- <span id='Ext-view-View-event-select'>            /**
 
- </span>             * @event
 
-              * @inheritdoc Ext.selection.DataViewModel#select
 
-              */
 
-             'select',
 
- <span id='Ext-view-View-event-deselect'>            /**
 
- </span>             * @event
 
-              * @inheritdoc Ext.selection.DataViewModel#deselect
 
-              */
 
-             'deselect',
 
- <span id='Ext-view-View-event-focuschange'>            /**
 
- </span>             * @event
 
-              * @inheritdoc Ext.selection.DataViewModel#focuschange
 
-              */
 
-             'focuschange',
 
-             
 
- <span id='Ext-view-View-event-highlightitem'>            /**
 
- </span>             * @event highlightitem
 
-              * Fires when a node is highlighted using keyboard navigation, or mouseover.
 
-              * @param {Ext.view.View} view This View Component.
 
-              * @param {Ext.Element} node The highlighted node.
 
-              */
 
-             'highlightitem',
 
-             
 
- <span id='Ext-view-View-event-unhighlightitem'>            /**
 
- </span>             * @event unhighlightitem
 
-              * Fires when a node is unhighlighted using keyboard navigation, or mouseout.
 
-              * @param {Ext.view.View} view This View Component.
 
-              * @param {Ext.Element} node The previously highlighted node.
 
-              */
 
-             'unhighlightitem'
 
-         );
 
-     },
 
-     getFocusEl: function() {
 
-         return this.getTargetEl();
 
-     },
 
-     // private
 
-     afterRender: function(){
 
-         var me = this;
 
-         me.callParent();
 
-         me.mon(me.getTargetEl(), {
 
-             scope: me,
 
-             /*
 
-              * We need to make copies of this since some of the events fired here will end up triggering
 
-              * a new event to be called and the shared event object will be mutated. In future we should
 
-              * investigate if there are any issues with creating a new event object for each event that
 
-              * is fired.
 
-              */
 
-             freezeEvent: true,
 
-             click: me.handleEvent,
 
-             mousedown: me.handleEvent,
 
-             mouseup: me.handleEvent,
 
-             dblclick: me.handleEvent,
 
-             contextmenu: me.handleEvent,
 
-             mouseover: me.handleEvent,
 
-             mouseout: me.handleEvent,
 
-             keydown: me.handleEvent
 
-         });
 
-     },
 
-     handleEvent: function(e) {
 
-         var me = this,
 
-             key = e.type == 'keydown' && e.getKey();
 
-         if (me.processUIEvent(e) !== false) {
 
-             me.processSpecialEvent(e);
 
-         }
 
-         // After all listeners have processed the event, then unless the user is typing into an input field,
 
-         // prevent browser's default action on SPACE which is to focus the event's target element.
 
-         // Focusing causes the browser to attempt to scroll the element into view.
 
-         if (key === e.SPACE) {
 
-             if (!me.inputTagRe.test(e.getTarget().tagName)) {
 
-                 e.stopEvent();
 
-             }
 
-         }
 
-     },
 
-     // Private template method
 
-     processItemEvent: Ext.emptyFn,
 
-     processContainerEvent: Ext.emptyFn,
 
-     processSpecialEvent: Ext.emptyFn,
 
-     /*
 
-      * Returns true if this mouseover/out event is still over the overItem.
 
-      */
 
-     stillOverItem: function (event, overItem) {
 
-         var nowOver;
 
-         // There is this weird bug when you hover over the border of a cell it is saying
 
-         // the target is the table.
 
-         // BrowserBug: IE6 & 7. If me.mouseOverItem has been removed and is no longer
 
-         // in the DOM then accessing .offsetParent will throw an "Unspecified error." exception.
 
-         // typeof'ng and checking to make sure the offsetParent is an object will NOT throw
 
-         // this hard exception.
 
-         if (overItem && typeof(overItem.offsetParent) === "object") {
 
-             // mouseout : relatedTarget == nowOver, target == wasOver
 
-             // mouseover: relatedTarget == wasOver, target == nowOver
 
-             nowOver = (event.type == 'mouseout') ? event.getRelatedTarget() : event.getTarget();
 
-             return Ext.fly(overItem).contains(nowOver);
 
-         }
 
-         return false;
 
-     },
 
-     processUIEvent: function(e) {
 
-         var me = this,
 
-             item = e.getTarget(me.getItemSelector(), me.getTargetEl()),
 
-             map = this.statics().EventMap,
 
-             index, record,
 
-             type = e.type,
 
-             overItem = me.mouseOverItem,
 
-             newType;
 
-         if (!item) {
 
-             if (type == 'mouseover' && me.stillOverItem(e, overItem)) {
 
-                 item = overItem;
 
-             }
 
-             // Try to get the selected item to handle the keydown event, otherwise we'll just fire a container keydown event
 
-             if (type == 'keydown') {
 
-                 record = me.getSelectionModel().getLastSelected();
 
-                 if (record) {
 
-                     item = me.getNode(record);
 
-                 }
 
-             }
 
-         }
 
-         if (item) {
 
-             index = me.indexOf(item);
 
-             if (!record) {
 
-                 record = me.getRecord(item);
 
-             }
 
-             // It is possible for an event to arrive for which there is no record... this
 
-             // can happen with dblclick where the clicks are on removal actions (think a
 
-             // grid w/"delete row" action column)
 
-             if (!record || me.processItemEvent(record, item, index, e) === false) {
 
-                 return false;
 
-             }
 
-             newType = me.isNewItemEvent(item, e);
 
-             if (newType === false) {
 
-                 return false;
 
-             }
 
-             if (
 
-                 (me['onBeforeItem' + map[newType]](record, item, index, e) === false) ||
 
-                 (me.fireEvent('beforeitem' + newType, me, record, item, index, e) === false) ||
 
-                 (me['onItem' + map[newType]](record, item, index, e) === false)
 
-             ) {
 
-                 return false;
 
-             }
 
-             me.fireEvent('item' + newType, me, record, item, index, e);
 
-         }
 
-         else {
 
-             if (
 
-                 (me.processContainerEvent(e) === false) ||
 
-                 (me['onBeforeContainer' + map[type]](e) === false) ||
 
-                 (me.fireEvent('beforecontainer' + type, me, e) === false) ||
 
-                 (me['onContainer' + map[type]](e) === false)
 
-             ) {
 
-                 return false;
 
-             }
 
-             me.fireEvent('container' + type, me, e);
 
-         }
 
-         return true;
 
-     },
 
-     isNewItemEvent: function (item, e) {
 
-         var me = this,
 
-             overItem = me.mouseOverItem,
 
-             type = e.type;
 
-         switch (type) {
 
-             case 'mouseover':
 
-                 if (item === overItem) {
 
-                     return false;
 
-                 }
 
-                 me.mouseOverItem = item;
 
-                 return 'mouseenter';
 
-             case 'mouseout':
 
-                 // If the currently mouseovered item contains the mouseover target, it's *NOT* a mouseleave
 
-                 if (me.stillOverItem(e, overItem)) {
 
-                     return false;
 
-                 }
 
-                 me.mouseOverItem = null;
 
-                 return 'mouseleave';
 
-         }
 
-         return type;
 
-     },
 
-     // private
 
-     onItemMouseEnter: function(record, item, index, e) {
 
-         if (this.trackOver) {
 
-             this.highlightItem(item);
 
-         }
 
-     },
 
-     // private
 
-     onItemMouseLeave : function(record, item, index, e) {
 
-         if (this.trackOver) {
 
-             this.clearHighlight();
 
-         }
 
-     },
 
-     // @private, template methods
 
-     onItemMouseDown: Ext.emptyFn,
 
-     onItemMouseUp: Ext.emptyFn,
 
-     onItemFocus: Ext.emptyFn,
 
-     onItemClick: Ext.emptyFn,
 
-     onItemDblClick: Ext.emptyFn,
 
-     onItemContextMenu: Ext.emptyFn,
 
-     onItemKeyDown: Ext.emptyFn,
 
-     onBeforeItemMouseDown: Ext.emptyFn,
 
-     onBeforeItemMouseUp: Ext.emptyFn,
 
-     onBeforeItemFocus: Ext.emptyFn,
 
-     onBeforeItemMouseEnter: Ext.emptyFn,
 
-     onBeforeItemMouseLeave: Ext.emptyFn,
 
-     onBeforeItemClick: Ext.emptyFn,
 
-     onBeforeItemDblClick: Ext.emptyFn,
 
-     onBeforeItemContextMenu: Ext.emptyFn,
 
-     onBeforeItemKeyDown: Ext.emptyFn,
 
-     // @private, template methods
 
-     onContainerMouseDown: Ext.emptyFn,
 
-     onContainerMouseUp: Ext.emptyFn,
 
-     onContainerMouseOver: Ext.emptyFn,
 
-     onContainerMouseOut: Ext.emptyFn,
 
-     onContainerClick: Ext.emptyFn,
 
-     onContainerDblClick: Ext.emptyFn,
 
-     onContainerContextMenu: Ext.emptyFn,
 
-     onContainerKeyDown: Ext.emptyFn,
 
-     onBeforeContainerMouseDown: Ext.emptyFn,
 
-     onBeforeContainerMouseUp: Ext.emptyFn,
 
-     onBeforeContainerMouseOver: Ext.emptyFn,
 
-     onBeforeContainerMouseOut: Ext.emptyFn,
 
-     onBeforeContainerClick: Ext.emptyFn,
 
-     onBeforeContainerDblClick: Ext.emptyFn,
 
-     onBeforeContainerContextMenu: Ext.emptyFn,
 
-     onBeforeContainerKeyDown: Ext.emptyFn,
 
-     //private
 
-     setHighlightedItem: function(item){
 
-         var me = this,
 
-             highlighted = me.highlightedItem;
 
-         if (highlighted != item){
 
-             if (highlighted) {
 
-                 Ext.fly(highlighted).removeCls(me.overItemCls);
 
-                 me.fireEvent('unhighlightitem', me, highlighted);
 
-             }
 
-             me.highlightedItem = item;
 
-             if (item) {
 
-                 //console.log(item.viewIndex);
 
-                 Ext.fly(item).addCls(me.overItemCls);
 
-                 me.fireEvent('highlightitem', me, item);
 
-             }
 
-         }
 
-     },
 
- <span id='Ext-view-View-method-highlightItem'>    /**
 
- </span>     * Highlights a given item in the View. This is called by the mouseover handler if {@link #overItemCls}
 
-      * and {@link #trackOver} are configured, but can also be called manually by other code, for instance to
 
-      * handle stepping through the list via keyboard navigation.
 
-      * @param {HTMLElement} item The item to highlight
 
-      */
 
-     highlightItem: function(item) {
 
-         this.setHighlightedItem(item);
 
-     },
 
- <span id='Ext-view-View-method-clearHighlight'>    /**
 
- </span>     * Un-highlights the currently highlighted item, if any.
 
-      */
 
-     clearHighlight: function() {
 
-         this.setHighlightedItem(undefined);
 
-     },
 
-     
 
-     onUpdate: function(store, record){
 
-         var me = this,
 
-             node,
 
-             newNode,
 
-             highlighted;
 
-         
 
-         if (me.viewReady) {
 
-             node = me.getNode(record);
 
-             newNode = me.callParent(arguments);
 
-             highlighted = me.highlightedItem;
 
-             
 
-             if (highlighted && highlighted === node) {
 
-                 delete me.highlightedItem;
 
-                 if (newNode) {
 
-                     me.highlightItem(newNode);
 
-                 }
 
-             }
 
-         }
 
-     },
 
-     refresh: function() {
 
-         this.clearHighlight();
 
-         this.callParent(arguments);
 
-     }
 
- });</pre>
 
- </body>
 
- </html>
 
 
  |