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