2 * @class Ext.grid.LockingView
3 * This class is used internally to provide a single interface when using
4 * a locking grid. Internally, the locking grid creates 2 separate grids,
5 * so this class is used to map calls appropriately.
8 Ext.define('Ext.grid.LockingView', {
11 observable: 'Ext.util.Observable'
14 eventRelayRe: /^(beforeitem|beforecontainer|item|container|cell)/,
16 constructor: function(config){
19 eventRe = me.eventRelayRe,
20 locked = config.locked.getView(),
21 normal = config.normal.getView(),
28 lockedGrid: config.locked,
29 normalGrid: config.normal,
32 me.mixins.observable.constructor.call(me, config);
35 events = locked.events;
36 for (event in events) {
37 if (events.hasOwnProperty(event) && eventRe.test(event)) {
38 eventNames.push(event);
41 me.relayEvents(locked, eventNames);
42 me.relayEvents(normal, eventNames);
46 itemmouseleave: me.onItemMouseLeave,
47 itemmouseenter: me.onItemMouseEnter
52 itemmouseleave: me.onItemMouseLeave,
53 itemmouseenter: me.onItemMouseEnter
57 getGridColumns: function() {
58 var cols = this.lockedGrid.headerCt.getGridColumns();
59 return cols.concat(this.normalGrid.headerCt.getGridColumns());
62 onItemMouseEnter: function(view, record){
64 locked = me.lockedView,
65 other = me.normalView,
69 if (view !== locked) {
72 item = other.getNode(record);
73 other.highlightItem(item);
77 onItemMouseLeave: function(view, record){
79 locked = me.lockedView,
80 other = me.normalView;
83 if (view !== locked) {
86 other.clearHighlight();
90 relayFn: function(name, args){
93 var view = this.lockedView;
94 view[name].apply(view, args || []);
95 view = this.normalView;
96 view[name].apply(view, args || []);
99 getSelectionModel: function(){
100 return this.panel.getSelectionModel();
103 getStore: function(){
104 return this.panel.store;
107 getNode: function(nodeInfo){
108 // default to the normal view
109 return this.normalView.getNode(nodeInfo);
112 getCell: function(record, column){
113 var view = this.lockedView,
117 if (view.getHeaderAtIndex(column) === -1) {
118 view = this.normalView;
121 row = view.getNode(record);
122 return Ext.fly(row).down(column.getCellSelector());
125 getRecord: function(node){
126 var result = this.lockedView.getRecord(node);
128 result = this.normalView.getRecord(node);
133 refreshNode: function(){
134 this.relayFn('refreshNode', arguments);
138 this.relayFn('refresh', arguments);
141 bindStore: function(){
142 this.relayFn('bindStore', arguments);
145 addRowCls: function(){
146 this.relayFn('addRowCls', arguments);
149 removeRowCls: function(){
150 this.relayFn('removeRowCls', arguments);