/* TreeitemRenderer.java
Purpose:
Description:
History:
Aug 10 2007, Created by Jeff Liu
Copyright (C) 2005 Potix Corporation. All Rights Reserved.
{{IS_RIGHT
This program is distributed under LGPL Version 2.1 in the hope that
it will be useful, but WITHOUT ANY WARRANTY.
}}IS_RIGHT
*/
package org.zkoss.zul;
import org.zkoss.zul.event.TreeDataEvent;
/**
* Identifies components that can be used as "rubber stamps" to paint
* the cells in a {@link Tree}.
*
* <p>Note: changing a render will not cause the tree to re-render.
* If you want it to re-render, you could assign the same model again
* (i.e., setModel(getModel())), or fire an {@link TreeDataEvent} event.
*
* @author Jeff Liu
* @since 3.0.0
* @see TreeModel
* @see Tree
*/
public interface TreeitemRenderer<T> {
/**
* Renders the data to the specified tree item.
*
*
*
* @param item the Treeitem to render the result.
* <br>Note:
*
*<ol>
* <li>When this method is called, the treeitem should have no child
* at all, unless you don't return</li>
* <li>Treeitem and Treerow are only components that allowed to be
* <b>item</b>'s children.</li>
* <li>A new treerow should be constructed and append to <b>item</b>, when
* treerow of <b>item</b> is null.<br/> Otherwise, when treerow of <b>item</b> is not null,
* modify the content of the treerow or detach the treerow's children first, since that only one treerow is allowed</li>
* <li>Do not append any treechildren to <b>item</b> in this method, a treechildren will be appended afterward.</li>
* <li>When a treerow is not appended to <b>item</b>, generally label of <b>item</b> is displayed.</li>
* </ol>
* @param data that is used to render the Treeitem
* @param index the index of the data that is currently being rendered.
* Notice the index is the order of the siblings (i.e., data that belongs
* to the same parent).
*/
public void render(Treeitem item, T data, int index) throws Exception;
}