/* * SelectOneDataModel.java * * Created on 15 de Outubro de 2007, 14:07 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package br.uff.ic.oceano.view; import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.faces.model.SelectItem; /** * * @author thiago */ public class SelectOneDataModel<T> { public static final String TEXTO_SELECIONE_AQUI = "Selecione aqui"; private String selecao; private List<SelectItem> listaSelecao; public static <T> SelectOneDataModel<T> criaSemTextoInicial(final Collection<T> itens) { SelectOneDataModel<T> select = new SelectOneDataModel<T>(); List<SelectItem> listaSelecao = new ArrayList<SelectItem>(itens.size()); for (Object elem : itens) { listaSelecao.add(new SelectItem(elem, elem.toString())); } select.setListaSelecao(listaSelecao); return select; } /** * O texto default no comboBox é: Selecione aqui * @param <T> * @param itens * @return */ public static <T> SelectOneDataModel<T> criaComTextoInicialDefault(final Collection<T> itens) { SelectOneDataModel<T> select = new SelectOneDataModel<T>(); List<SelectItem> listaSelecao = new ArrayList<SelectItem>(itens.size() + 1); listaSelecao.add(new SelectItem(null, TEXTO_SELECIONE_AQUI)); for (Object elem : itens) { listaSelecao.add(new SelectItem(elem, elem.toString())); } select.setSelecao(TEXTO_SELECIONE_AQUI); select.setListaSelecao(listaSelecao); return select; } public static <T> SelectOneDataModel<T> criaComTextoInicialPersonalizado(Collection<T> itens, final String LabelPrimeiroElemento) { SelectOneDataModel<T> select = new SelectOneDataModel<T>(); List<SelectItem> listaSelecao = new ArrayList<SelectItem>(itens.size() + 1); listaSelecao.add(new SelectItem(null, LabelPrimeiroElemento)); for (Object elem : itens) { listaSelecao.add(new SelectItem(elem, elem.toString())); } String selecao = LabelPrimeiroElemento; select.setSelecao(selecao); select.setListaSelecao(listaSelecao); return select; } public static <T> SelectOneDataModel<T> criaComObjetoSelecionado(Collection<T> itens, T objetoSelecionado) { SelectOneDataModel<T> select = new SelectOneDataModel<T>(); List<SelectItem> listaSelecao = new ArrayList<SelectItem>(itens.size() + 1); listaSelecao.add(new SelectItem(null, TEXTO_SELECIONE_AQUI)); for (Object elem : itens) { listaSelecao.add(new SelectItem(elem, elem.toString())); } String selecao = objetoSelecionado.toString(); select.setSelecao(selecao); select.setListaSelecao(listaSelecao); return select; } public static <T> SelectOneDataModel<T> criaComObjetoSelecionadoSemTextoInicial(Collection<T> itens, T objetoSelecionado) { SelectOneDataModel<T> select = new SelectOneDataModel<T>(); List<SelectItem> listaSelecao = new ArrayList<SelectItem>(itens.size() + 1); for (Object elem : itens) { listaSelecao.add(new SelectItem(elem, elem.toString())); } String selecao = objetoSelecionado.toString(); select.setSelecao(selecao); select.setListaSelecao(listaSelecao); return select; } public SelectOneDataModel() { listaSelecao = new ArrayList<SelectItem>(1); listaSelecao.add(new SelectItem(null, TEXTO_SELECIONE_AQUI)); selecao = TEXTO_SELECIONE_AQUI; } public SelectOneDataModel(Collection<T> itens) { if (itens != null) { listaSelecao = new ArrayList<SelectItem>(itens.size() + 1); } else { listaSelecao = new ArrayList<SelectItem>(1); } listaSelecao.add(new SelectItem(null, TEXTO_SELECIONE_AQUI)); for (Object elem : itens) { listaSelecao.add(new SelectItem(elem, elem.toString())); } } public String getSelecao() { return selecao; } public void setSelecao(String selecao) { this.selecao = selecao; } public List<SelectItem> getListaSelecao() { return listaSelecao; } public void setListaSelecao(List<SelectItem> listaSelecao) { this.listaSelecao = listaSelecao; } public T getObjetoSelecionado() { if (selecao == null) { return null; } for (SelectItem item : listaSelecao) { if (item.getLabel().equals(selecao)) { return (T) item.getValue(); } } return null; } public int getQuantidadeElementos() { int qtd = listaSelecao.size() - 1; return (qtd > 0) ? qtd : 0; } public boolean isTextoInicialSelecionado() { if (selecao == null) { return true; } return false; } }