| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 | <!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-grid-LockingView'>/**</span> * This class is used internally to provide a single interface when using * a locking grid. Internally, the locking grid creates two separate grids, * so this class is used to map calls appropriately. * @private */Ext.define('Ext.grid.LockingView', {    mixins: {        observable: 'Ext.util.Observable'    },    eventRelayRe: /^(beforeitem|beforecontainer|item|container|cell)/,    constructor: function(config){        var me = this,            eventNames = [],            eventRe = me.eventRelayRe,            locked = config.locked.getView(),            normal = config.normal.getView(),            events,            event;        Ext.apply(me, {            lockedView: locked,            normalView: normal,            lockedGrid: config.locked,            normalGrid: config.normal,            panel: config.panel        });        me.mixins.observable.constructor.call(me, config);        // relay events        events = locked.events;        for (event in events) {            if (events.hasOwnProperty(event) && eventRe.test(event)) {                eventNames.push(event);            }        }        me.relayEvents(locked, eventNames);        me.relayEvents(normal, eventNames);        normal.on({            scope: me,            itemmouseleave: me.onItemMouseLeave,            itemmouseenter: me.onItemMouseEnter        });        locked.on({            scope: me,            itemmouseleave: me.onItemMouseLeave,            itemmouseenter: me.onItemMouseEnter        });    },    getGridColumns: function() {        var cols = this.lockedGrid.headerCt.getGridColumns();        return cols.concat(this.normalGrid.headerCt.getGridColumns());    },    getEl: function(column){        return this.getViewForColumn(column).getEl();    },    getViewForColumn: function(column) {        var view = this.lockedView,            inLocked;        view.headerCt.cascade(function(col){            if (col === column) {                inLocked = true;                return false;            }        });        return inLocked ? view : this.normalView;    },    onItemMouseEnter: function(view, record){        var me = this,            locked = me.lockedView,            other = me.normalView,            item;        if (view.trackOver) {            if (view !== locked) {                other = locked;            }            item = other.getNode(record);            other.highlightItem(item);        }    },    onItemMouseLeave: function(view, record){        var me = this,            locked = me.lockedView,            other = me.normalView;        if (view.trackOver) {            if (view !== locked) {                other = locked;            }            other.clearHighlight();        }    },    relayFn: function(name, args){        args = args || [];        var view = this.lockedView;        view[name].apply(view, args || []);        view = this.normalView;        view[name].apply(view, args || []);    },    getSelectionModel: function(){        return this.panel.getSelectionModel();    },    getStore: function(){        return this.panel.store;    },    getNode: function(nodeInfo){        // default to the normal view        return this.normalView.getNode(nodeInfo);    },    getCell: function(record, column){        var view = this.getViewForColumn(column),            row;        row = view.getNode(record);        return Ext.fly(row).down(column.getCellSelector());    },    getRecord: function(node){        var result = this.lockedView.getRecord(node);        if (!node) {            result = this.normalView.getRecord(node);        }        return result;    },    addElListener: function(eventName, fn, scope){        this.relayFn('addElListener', arguments);    },    refreshNode: function(){        this.relayFn('refreshNode', arguments);    },    refresh: function(){        this.relayFn('refresh', arguments);    },    bindStore: function(){        this.relayFn('bindStore', arguments);    },    addRowCls: function(){        this.relayFn('addRowCls', arguments);    },    removeRowCls: function(){        this.relayFn('removeRowCls', arguments);    }});</pre></body></html>
 |