initial import
[roojs1] / Roo / grid / AbstractGridView.js
1 /*
2  * Based on:
3  * Ext JS Library 1.1.1
4  * Copyright(c) 2006-2007, Ext JS, LLC.
5  *
6  * Originally Released Under LGPL - original licence link has changed is not relivant.
7  *
8  * Fork - LGPL
9  * <script type="text/javascript">
10  */
11  
12 Roo.grid.AbstractGridView = function(){
13         this.grid = null;
14         
15         this.events = {
16             "beforerowremoved" : true,
17             "beforerowsinserted" : true,
18             "beforerefresh" : true,
19             "rowremoved" : true,
20             "rowsinserted" : true,
21             "rowupdated" : true,
22             "refresh" : true
23         };
24     Roo.grid.AbstractGridView.superclass.constructor.call(this);
25 };
26
27 Roo.extend(Roo.grid.AbstractGridView, Roo.util.Observable, {
28     rowClass : "x-grid-row",
29     cellClass : "x-grid-cell",
30     tdClass : "x-grid-td",
31     hdClass : "x-grid-hd",
32     splitClass : "x-grid-hd-split",
33     
34         init: function(grid){
35         this.grid = grid;
36                 var cid = this.grid.getGridEl().id;
37         this.colSelector = "#" + cid + " ." + this.cellClass + "-";
38         this.tdSelector = "#" + cid + " ." + this.tdClass + "-";
39         this.hdSelector = "#" + cid + " ." + this.hdClass + "-";
40         this.splitSelector = "#" + cid + " ." + this.splitClass + "-";
41         },
42         
43         getColumnRenderers : function(){
44         var renderers = [];
45         var cm = this.grid.colModel;
46         var colCount = cm.getColumnCount();
47         for(var i = 0; i < colCount; i++){
48             renderers[i] = cm.getRenderer(i);
49         }
50         return renderers;
51     },
52     
53     getColumnIds : function(){
54         var ids = [];
55         var cm = this.grid.colModel;
56         var colCount = cm.getColumnCount();
57         for(var i = 0; i < colCount; i++){
58             ids[i] = cm.getColumnId(i);
59         }
60         return ids;
61     },
62     
63     getDataIndexes : function(){
64         if(!this.indexMap){
65             this.indexMap = this.buildIndexMap();
66         }
67         return this.indexMap.colToData;
68     },
69     
70     getColumnIndexByDataIndex : function(dataIndex){
71         if(!this.indexMap){
72             this.indexMap = this.buildIndexMap();
73         }
74         return this.indexMap.dataToCol[dataIndex];
75     },
76     
77     /**
78      * Set a css style for a column dynamically. 
79      * @param {Number} colIndex The index of the column
80      * @param {String} name The css property name
81      * @param {String} value The css value
82      */
83     setCSSStyle : function(colIndex, name, value){
84         var selector = "#" + this.grid.id + " .x-grid-col-" + colIndex;
85         Roo.util.CSS.updateRule(selector, name, value);
86     },
87     
88     generateRules : function(cm){
89         var ruleBuf = [], rulesId = this.grid.id + '-cssrules';
90         Roo.util.CSS.removeStyleSheet(rulesId);
91         for(var i = 0, len = cm.getColumnCount(); i < len; i++){
92             var cid = cm.getColumnId(i);
93             ruleBuf.push(this.colSelector, cid, " {\n", cm.config[i].css, "}\n",
94                          this.tdSelector, cid, " {\n}\n",
95                          this.hdSelector, cid, " {\n}\n",
96                          this.splitSelector, cid, " {\n}\n");
97         }
98         return Roo.util.CSS.createStyleSheet(ruleBuf.join(""), rulesId);
99     }
100 });