var NodeBuilder = require('./node-builder'); /** * Represents a grid column. This is an abstract class and should not be * instantiated directly. */ module.exports = new Class ({ Extends: NodeBuilder ,Tag: 'htk-column' ,Properties: { value: { type: String ,value: null }, column: { type: String ,value: null }, columnIndex: { type: Number ,value: -1 }, title: { type: String ,value: null }, editable: { type: Boolean ,value: false }, renderer: { type: Function ,value: false }, class: { type: String ,set: function(x) { this._userCssClass = x; if (this._cssClass) this._cssClass = x +' '+ this._cssClass; else this._cssClass = x; } ,get: function() { return this._userCssClass; } } } ,_cssClass: null ,_userCssClass: null /** * Initializes the column. */ ,initialize: function(props) { this.parent(props); this.td = this.createElement('td'); } ,renderHeader: function() { var th = this.createElement('th'); if (this.title) th.appendChild(this.createTextNode(this.title)); return th; } /** * Draws the cell and returns its associated td. * * @return {HTMLTableData} the rendered cell */ ,render: function() { var td = this.td.cloneNode(true); if (this._cssClass) td.className = this._cssClass; return td; } ,updateColumnIndex: function(model) { if (this.column) this.columnIndex = model.getColumnIndex(this.column); } ,changed: function(tr, newValue) { this.signalEmit('changed', tr.rowIndex - 1, newValue); } });