/* ListboxModelConverter.java Purpose: Description: History: 2011/12/12 Created by Dennis Chen Copyright (C) 2011 Potix Corporation. All Rights Reserved. */ package org.zkoss.bind.converter.sys; import org.zkoss.bind.BindContext; import org.zkoss.bind.Converter; import org.zkoss.zul.ListModel; import org.zkoss.zul.Listbox; import org.zkoss.zul.ext.Selectable; /** * The {@link Converter} implementation of the listbox for converting collection to ListModel and vice versa. * @author dennis * @since 6.0.0 */ public class ListboxModelConverter extends AbstractListModelConverter<Listbox> { private static final long serialVersionUID = 1463169907348730644L; protected ListModel<?> getComponentModel(Listbox comp) { return comp.getListModel(); } protected ListModel<?> handleWrappedModel(BindContext ctx, Listbox comp, ListModel<?> model) { if (model instanceof Selectable) { if (((Selectable<?>) model).isMultiple() != comp.isMultiple()) { //since the model was wrapped. I should respect the setting on the component //user might set the multiple on the listbox by <listbox multiple="true" //or <listbox multiple="@bind(true)" or <listbox multiple="@bind(vm.multiple)" ((Selectable<?>) model).setMultiple(comp.isMultiple()); } } return model; } }