major doc changes
[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  * @class Roo.grid.AbstractGridView
13  * @extends Roo.util.Observable
14  * @abstract
15  * Abstract base class for grid Views
16  * @constructor
17  */
18 Roo.grid.AbstractGridView = function(){
19         this.grid = null;
20         
21         this.events = {
22             "beforerowremoved" : true,
23             "beforerowsinserted" : true,
24             "beforerefresh" : true,
25             "rowremoved" : true,
26             "rowsinserted" : true,
27             "rowupdated" : true,
28             "refresh" : true
29         };
30     Roo.grid.AbstractGridView.superclass.constructor.call(this);
31 };
32
33 Roo.extend(Roo.grid.AbstractGridView, Roo.util.Observable, {
34     rowClass : "x-grid-row",
35     cellClass : "x-grid-cell",
36     tdClass : "x-grid-td",
37     hdClass : "x-grid-hd",
38     splitClass : "x-grid-hd-split",
39     
40     init: function(grid){
41         this.grid = grid;
42                 var cid = this.grid.getGridEl().id;
43         this.colSelector = "#" + cid + " ." + this.cellClass + "-";
44         this.tdSelector = "#" + cid + " ." + this.tdClass + "-";
45         this.hdSelector = "#" + cid + " ." + this.hdClass + "-";
46         this.splitSelector = "#" + cid + " ." + this.splitClass + "-";
47         },
48         
49     getColumnRenderers : function(){
50         var renderers = [];
51         var cm = this.grid.colModel;
52         var colCount = cm.getColumnCount();
53         for(var i = 0; i < colCount; i++){
54             renderers[i] = cm.getRenderer(i);
55         }
56         return renderers;
57     },
58     
59     getColumnIds : function(){
60         var ids = [];
61         var cm = this.grid.colModel;
62         var colCount = cm.getColumnCount();
63         for(var i = 0; i < colCount; i++){
64             ids[i] = cm.getColumnId(i);
65         }
66         return ids;
67     },
68     
69     getDataIndexes : function(){
70         if(!this.indexMap){
71             this.indexMap = this.buildIndexMap();
72         }
73         return this.indexMap.colToData;
74     },
75     
76     getColumnIndexByDataIndex : function(dataIndex){
77         if(!this.indexMap){
78             this.indexMap = this.buildIndexMap();
79         }
80         return this.indexMap.dataToCol[dataIndex];
81     },
82     
83     /**
84      * Set a css style for a column dynamically. 
85      * @param {Number} colIndex The index of the column
86      * @param {String} name The css property name
87      * @param {String} value The css value
88      */
89     setCSSStyle : function(colIndex, name, value){
90         var selector = "#" + this.grid.id + " .x-grid-col-" + colIndex;
91         Roo.util.CSS.updateRule(selector, name, value);
92     },
93     
94     generateRules : function(cm){
95         var ruleBuf = [], rulesId = this.grid.id + '-cssrules';
96         Roo.util.CSS.removeStyleSheet(rulesId);
97         for(var i = 0, len = cm.getColumnCount(); i < len; i++){
98             var cid = cm.getColumnId(i);
99             ruleBuf.push(this.colSelector, cid, " {\n", cm.config[i].css, "}\n",
100                          this.tdSelector, cid, " {\n}\n",
101                          this.hdSelector, cid, " {\n}\n",
102                          this.splitSelector, cid, " {\n}\n");
103         }
104         return Roo.util.CSS.createStyleSheet(ruleBuf.join(""), rulesId);
105     }
106 });