/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.uff.ic.oceano.view;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author DanCastellani
*/
public class SelectableItem<T> {
private boolean selected = false;
private T item;
public SelectableItem(T item) {
this.item = item;
}
public SelectableItem(T item, boolean selected) {
this.item = item;
this.selected = selected;
}
/**
* @return the selected
*/
public boolean isSelected() {
return selected;
}
/**
* @param selected the selected to set
*/
public void setSelected(boolean selected) {
this.selected = selected;
}
/**
* @return the item
*/
public <T> T getItem() {
return (T) item;
}
/**
* @param item the item to set
*/
public void setItem(T item) {
this.item = item;
}
/**
*
* @param List<T>
* @return uma lista de SelectableItem do tipo T a partir de uma lista qualquer
*/
public static <T> List<SelectableItem<T>> getListaSelecao(List<T> listaSelecao){
final List<SelectableItem<T>> lista = new ArrayList(listaSelecao.size());
for (T obj : listaSelecao) {
lista.add(new SelectableItem(obj));
}
return lista;
}
/**
*
* @param List de SelectableItem tipo T
* @return retorna um (List de SelectableItem tipo T) com os selecionados
*/
public static <T> List<SelectableItem<T>> getListaSelecaoSelecionados(List<SelectableItem<T>> listaSelecao){
final List<SelectableItem<T>> lista = new ArrayList(listaSelecao.size());
for (SelectableItem obj : listaSelecao) {
if(obj.selected) lista.add(obj);
}
return lista;
}
/**
*
* @param List de SelectableItem tipo T
* @return retorna um (List de T) dos objetos selecionados
*/
public static <T> List<T> getListaObjetosSelecionados(List<SelectableItem<T>> listaSelecao){
final List<T> lista = new ArrayList<T>(listaSelecao.size());
for (SelectableItem<T> obj : listaSelecao) {
if(obj.selected) lista.add(obj.item);
}
return lista;
}
/**
*
* @param List de SelectableItem tipo T
* @return retorna um (List de T) completa dos objetos decorados
*/
public static <T> List<T> getListaObjetosCompleta(List<SelectableItem<T>> listaSelecao){
final List<T> lista = new ArrayList<T>(listaSelecao.size());
for (SelectableItem<T> obj : listaSelecao) {
lista.add(obj.item);
}
return lista;
}
/**
*
* @param T
* @return faz o equals do objeto decorado
*/
@Override
public boolean equals(Object obj) {
return item.equals(((SelectableItem<T>)obj).item);
}
@Override
public int hashCode() {
int hash = 3;
hash = 67 * hash + (this.item != null ? this.item.hashCode() : 0);
return hash;
}
@Override
public String toString() {
return item == null ? "Objeto Não Informado" : item.toString();
}
}