// render data
Object objExistedTreeModelSource = cycle.getAttribute(ITreeRowSource.TREE_ROW_SOURCE_ATTRIBUTE);
cycle.setAttribute(ITreeRowSource.TREE_ROW_SOURCE_ATTRIBUTE, this);
TreeView objView = getTreeView();
ITreeModel objTreeModel = objView.getTreeModel();
ITreeDataModel objTreeDataModel = objTreeModel.getTreeDataModel();
Object objRoot = objTreeDataModel.getRoot();
Object objRootUID = objTreeDataModel.getUniqueKey(objRoot, null);
if (getShowRootNode()) {
walkTree(objRoot, objRootUID, 0, objTreeModel, writer, cycle,
TreeRowObject.FIRST_LAST_ROW, new int[0], true);
} else {
boolean bFirst = true;
int nChildenCount = objTreeModel.getTreeDataModel().getChildCount(objRoot);
int nRowPossiotionType = nChildenCount == 1 ? TreeRowObject.FIRST_LAST_ROW : TreeRowObject.FIRST_ROW;
for (Iterator iter = objTreeModel.getTreeDataModel().getChildren(objRoot); iter.hasNext();)
{
Object objChild = iter.next();
Object objChildUID = objTreeModel.getTreeDataModel().getUniqueKey(objChild, objRoot);
boolean bChildLast = !iter.hasNext();
if (!bFirst) {
if (bChildLast)