/** * */ package org.msh.utils; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * Classe usada para manter uma lista de objetos ItemSelect. * Inicialmente foi criada para ser usada em componentes JSF DataTable, mas * pode ser utilizada em qualquer outra situacao. * @author Ricardo */ public class ItemSelectUtils { /** * Cria uma lista de objetos ItemSelect a partir de uma lista de objetos. */ public static List> createList(List lst) { ArrayList> ret = new ArrayList>(); for (int i=0; i < lst.size(); i++) { ItemSelect it = new ItemSelect(); it.setItem(lst.get(i)); it.setSelected(false); ret.add(it); } return ret; } public static void selectItems(List> lst, List items, boolean select) { for (int i=0; i < lst.size(); i++) { ItemSelect it = lst.get(i); if (it != null) { boolean bSel = items.contains(it.getItem()) && (select); it.setSelected(bSel); } } } /** * cria uma lista de objetos a partir de uma lista de objetos ItemSelect. * List eh uma lista de objetos ItemSelect, e selected indica se a * lista sera montada com objetos selecionados ou nao. * * Retorno * Lista de objetos referenciados por ItemSelect */ public static List getSelectedItems(List> selItems, boolean aSelected) { ArrayList lst = new ArrayList(); for (int i=0; i < selItems.size(); i++) { ItemSelect it = selItems.get(i); if (it.isSelected() == aSelected) { lst.add(it.getItem()); } } return lst; } /** * Filtra uma lista de objetos ItemSelect deixando apenas objetos selecionados ou * objetos nao selecionados, de acordo com o parametro selected. */ public static void filter(List> lst, boolean selected) { Iterator> i = lst.iterator(); while (i.hasNext()) { ItemSelect it = i.next(); if (it.isSelected() == selected) i.remove(); } } /** * Adiciona um objeto a uma lista de objetos ItemSelect */ public static ItemSelect add(List> items, Object item, boolean selected) { ItemSelect it = new ItemSelect(); it.setItem(item); it.setSelected(selected); items.add(it); return it; } /** * Remove um objeto de uma lista de objetos ItemSelect */ public static void remove(List items, Object aItem) { for (int i=0; i < items.size(); i++) { ItemSelect it = (ItemSelect)items.get(i); if (it.getItem() == aItem) { items.remove(it); break; } } } /** * Check or uncheck all items of a list of {@link ItemSelect} objects according to the argument select */ public static void selectAll(List items, boolean select) { for (int i=0; i < items.size(); i++) { ItemSelect it = (ItemSelect)items.get(i); it.setSelected(select); } } /** * Check if an item is inside the list * @param items * @param item * @return */ public static boolean contains(List> items, E item) { for (ItemSelect it: items) { if (it.getItem().equals(item)) { return true; } } return false; } /** * Return the index of the item in the list, starting with 0 * @param items * @param item * @return */ public static int itemIndex(List items, E item) { int index = 0; for (ItemSelect it: items) { if (it.getItem().equals(item)) { return index; } index++; } return -1; } }