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