/*
* Ext GWT - Ext for GWT
* Copyright(c) 2007-2009, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
package com.extjs.gxt.ui.client.widget.treegrid;
import com.extjs.gxt.ui.client.core.XDOM;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.store.TreeStore;
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel.Joint;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
/**
* A <code>GridCellRenderer</code> that renders a tree into it's column.
* Renderer may be used in any column, not just the first.
*/
public class TreeGridCellRenderer<M extends ModelData> implements GridCellRenderer<M> {
@SuppressWarnings("unchecked")
public Object render(M model, String property, ColumnData config, int rowIndex,
int colIndex, ListStore<M> store, Grid<M> grid) {
config.css = "x-treegrid-column";
TreeGrid tree = (TreeGrid)grid;
TreeStore ts = tree.getTreeStore();
Joint j = tree.calcualteJoint(model);
AbstractImagePrototype iconStyle = tree.calculateIconStyle(model);
int level = ts.getDepth(model);
String text = model.get(property);
String id = XDOM.getUniqueId();
return tree.getTreeView().getTemplate(model, id, text, iconStyle, false, j, level - 1);
}
}