/* Copyright (C) 2016 maik.jablonski@jease.org This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package jfix.zk; import java.util.ArrayList; import java.util.List; import org.zkoss.zul.ListModel; import org.zkoss.zul.SimpleListModel; import org.zkoss.zul.ext.Selectable; public class Listbox extends org.zkoss.zul.Listbox { public Listbox() { setSeltype("single"); } public Listbox(List<Object> values) { setValues(values); } public Listbox(Object[] values) { setValues(values); } public Listbox doPaged(int pageSize) { setMold("paging"); setPageSize(pageSize); return this; } public void setValues(Object[] values) { if (values != null) { setModel(new SimpleListModel<Object>(values)); } } public void setValues(List<?> values) { if (values != null) { setModel(new SimpleListModel<Object>(values)); } } public void setModel(ListModel<?> model) { super.setModel(model); } public void setSelection(List<?> values, Object selected) { setValues(values); setSelectedValue(selected); } public void setModel(Object[] values, Object selected) { setValues(values); setSelectedValue(selected); } public Object getSelectedValue() { if (getSelectedIndex() != -1) { return getModel().getElementAt(getSelectedIndex()); } return null; } public Object[] getValues() { List<Object> values = new ArrayList<>(); for (int i = 0; i < getItemCount(); i++) { Object value = getItemAtIndex(i).getValue(); if (value != null) { values.add(getItemAtIndex(i).getValue()); } } return values.toArray(new Object[] {}); } public void setSelectedValue(Object value) { setSelectedIndex(-1); if (value != null) { for (int i = 0; i < getModel().getSize(); i++) { if (value.equals(getModel().getElementAt(i))) { setSelectedIndex(i); return; } } } } public boolean isEmpty() { return getSelectedValue() == null; } public void clearSelection() { super.clearSelection(); ((Selectable<Object>) getModel()).clearSelection(); } }