/* ListgroupRendererExt.java

	Purpose:
		
	Description:
		
	History:
		Fri Aug 29 15:22:30     2008, Created by tomyeh

Copyright (C) 2008 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;

/**
 * Provides additional control to {@link ListitemRenderer} for instantiating
 * {@link Listgroup} and {@link Listgroupfoot}.
 *
 * @author tomyeh
 * @since 3.5.0
 */
public interface ListgroupRendererExt {
	/** Creates an instance of {@link Listgroup} for rendering.
	 * The created component will be passed to {@link ListitemRenderer#render}.
	 *
	 * <p>Note: remember to invoke {@link Listgroup#applyProperties} to initialize
	 * the properties, defined in the component definition, properly.
	 *
	 * <p>If null is returned, the default row is created as follow.
	<pre><code>
	final Listgroup group = new Listgroup();
	group.applyProperties();
	return group;
	</code></pre>
	 *
	 * <p>Note: DO NOT call {@link Listgroup#setParent}.
	 *
	 * @return the listgroup if you'd like to create it differently, or null
	 * if you want {@link Listbox} to create it for you
	 */
	public Listgroup newListgroup(Listbox listbox);

	/** Creates an instance of {@link Listgroupfoot} for rendering.
	 * The created component will be passed to {@link ListitemRenderer#render}.
	 *
	 * <p>Note: remember to invoke {@link Listgroupfoot#applyProperties} to initialize
	 * the properties, defined in the component definition, properly.
	 *
	 * <p>If null is returned, the default row is created as follow.
	<pre><code>
	final Listgroupfoot groupfoot = new Listgroupfoot();
	groupfoot.applyProperties();
	return groupfoot;
	</code></pre>
	 *
	 * <p>Note: DO NOT call {@link Listgroupfoot#setParent}.
	 *
	 * @return the listgroupfoot if you'd like to create it differently, or null
	 * if you want {@link Listbox} to create it for you
	 */
	public Listgroupfoot newListgroupfoot(Listbox listbox);
}
