/* ListitemCollectionItem.java


 Purpose:
 
 Description:
 
 History:
 Jul 31, 2007 3:13:52 PM , Created by jumperchen


 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.zkplus.databind;

import java.util.List;

import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.UiException;
import org.zkoss.zul.ListModel;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listitem;

/**
 * @deprecated As of release 7.0.0, replace with new ZK binding.
 */
/* package */class ListitemCollectionItem implements CollectionItemExt, java.io.Serializable {
	private static final long serialVersionUID = 200808191434L;

	public Component getComponentCollectionOwner(Component comp) {
		if (comp instanceof Listitem) {
			final Listitem item = (Listitem) comp;
			return item.getListbox();
		} else {
			throw new UiException("Unsupported type for ListitemCollectionItem: " + comp);
		}
	}

	public ListModel getModelByOwner(Component comp) {
		if (comp instanceof Listbox) {
			final Listbox listbox = (Listbox) comp;
			return listbox.getModel();
		} else {
			throw new UiException("Unsupported type for ListitemCollectionItem: " + comp);
		}
	}

	public Component getComponentAtIndexByOwner(Component comp, int index) {
		if (comp instanceof Listbox) {
			final Listbox listbox = (Listbox) comp;
			return listbox.getItemAtIndex(index);
		} else {
			throw new UiException("Unsupported type for ListitemCollectionItem: " + comp);
		}
	}

	public void setupBindingRenderer(Component comp, DataBinder binder) {
		if (comp instanceof Listitem) {
			final Listitem li = (Listitem) comp;
			final Listbox lbx = li.getListbox();
			if (lbx.getItemRenderer() == null) {
				lbx.setItemRenderer(new BindingListitemRenderer(li, binder));
			}
		}
	}

	public List getItems(Component comp) {
		if (comp instanceof Listbox) {
			final Listbox listbox = (Listbox) comp;
			return listbox.getItems();
		} else {
			throw new UiException("Unsupported type for ListitemCollectionItem: " + comp);
		}
	}

}
