/* ListitemRendererExt.java
Purpose:
Description:
History:
Mon Feb 5 10:10:12 2007, Created by tomyeh
Copyright (C) 2007 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}.
*
* @author tomyeh
* @see ListitemRenderer
*/
public interface ListitemRendererExt {
/** Creates an instance of {@link Listitem} that will be attached to listbox.
* The created component will be passed to {@link ListitemRenderer#render}
* to append the required information to show a row of the data.
*
* <p>Note: remember to invoke {@link Listitem#applyProperties} to initialize
* the properties, defined in the component definition, properly.
*
* <p>If null is returned, the default list item is created as follow.
<pre><code>
final Listitem item = new Listitem();
item.applyProperties();
return item;
</code></pre>
*
* <p>Note: DO NOT call {@link Listitem#setParent}.
*
* @return the list item if you'd like to create it differently, or null
* if you want {@link Listbox} to create it for you
*/
public Listitem newListitem(Listbox listbox);
/** Create an instance of {@link Listcell} that will be attached to the
* <b>unloaded</b> listitem.
* By unloaded we mean the listitem that is not loaded with the data
* retrieved from the model. That is, {@link ListitemRenderer#render}
* is not called yet.
*
* <p>Notice that this callback shall generate an empty cell,
* rather than showing the data retrieved from the model.
* The showing of the data from model shall be done
* in {@link ListitemRenderer#render}.
*
* <p>If null is returned, the default list cell is created as follow.
<pre><code>
final Listcell cell = new Listcell();
cell.applyProperties();
return cell;
</code></pre>
*
* <p>Note: remember to invoke {@link Listcell#applyProperties} to initialize
* the properties, defined in the component definition, properly.
*
* <p>Note: DO NOT call {@link Listitem#setParent}.
* Don't create cells for other columns.
*
* <p>Note: DO NOT call {@link Listcell#setParent}.
*
* @param item the list item. It is the same as that is returned
* by {@link #newListitem}
* @return the list cell if you'd like to create it differently, or null
* if you want {@link Listbox} to create it for you
*/
public Listcell newListcell(Listitem item);
/** Returned by {@link #getControls} to indicate
* that the list cells added by {@link #newListcell} must be
* detached before calling {@link ListitemRenderer#render}.
*
* <p>Default: true.<br/>
* If this interface is not specified, this flag is assumed
* to be specified.
*
* <p>If you implement this interface and doesn't return this flag
* in {@link #getControls}, the implementation of
* {@link ListitemRenderer#render} must be aware of the existence of
* the first cell (of the passed list item).
*/
public static final int DETACH_ON_RENDER = 0x0001;
/** Returns how a listbox shall render the live data.
*
* <p>Note: if this interface is not implemented, {@link #DETACH_ON_RENDER}
* is assumed.
*
* @return {@link #DETACH_ON_RENDER} or 0 to indicate how to render
* the live data.
*/
public int getControls();
}