1 /** 2 * @author Gillis Haasnoot <gillis.haasnoot@gmail.com> 3 * @package Banana.Controls 4 * @summary DataGridImageButtonColumn 5 */ 6 7 goog.provide('Banana.Controls.DataControls.ListControls.DataGrid.ColumnControls.DataGridImageButtonColumn'); 8 9 goog.require('Banana.Controls.DataControls.ListControls.DataGrid.ColumnControls.DataGridColumn'); 10 11 /** @namespace Banana.Controls.DataGridImageButtonColumn */ 12 namespace('Banana.Controls').DataGridImageButtonColumn = Banana.Controls.DataGridColumn.extend( 13 /** @lends Banana.Controls.DataGridImageButtonColumn.prototype */ 14 { 15 /** 16 * Create datagrid header image button for usage in table list renders. 17 * Use set image url to define a image 18 * @constructs 19 * @extends Banana.Controls.DataGridColumn 20 */ 21 init : function() 22 { 23 this._super(); 24 } 25 }); 26 27 /** 28 * @ignore 29 * @return {Banana.UiControl} 30 */ 31 Banana.Controls.DataGridImageButtonColumn.prototype.getControl = function() 32 { 33 var b = new Banana.Controls.Image(); 34 b.setCss({'cursor':'pointer'}); 35 b.setImage(this.imageUrl); 36 37 b.bind('click',this.getProxy(function(e) 38 { 39 function getItemRender(c) 40 { 41 if (c instanceof Banana.Controls.DataGridTableItemRender) 42 { 43 return c; 44 } 45 46 return getItemRender(c.getParent()); 47 } 48 49 var ir = getItemRender(b); 50 51 var index = this.listRender.getIndexByItemRender(ir); 52 53 e.stopPropagation(); 54 55 var params = {'commandName':this.commandName, 56 'index':index, 57 'data':this.listRender.datasource[index] 58 }; 59 60 this.listRender.triggerEvent('onCommand',params); 61 })); 62 63 return b; 64 }; 65 66 /** 67 * sets image url. 68 * 69 * @param {String} url 70 * @return {this} 71 */ 72 Banana.Controls.DataGridImageButtonColumn.prototype.setImageUrl = function(url) 73 { 74 this.imageUrl = url; 75 return this; 76 }; 77 78 /** 79 * Sets command name which can be retreived in the onCommand event of the datagrid 80 * @param {String} name 81 * @return {this} 82 */ 83 Banana.Controls.DataGridImageButtonColumn.prototype.setCommandName = function(name) 84 { 85 this.commandName = name; 86 return this; 87 }; 88