package me.corriekay.pokegoutil.utils.windows;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import org.apache.commons.lang3.mutable.MutableInt;
import com.pokegoapi.api.PokemonGo;
import com.pokegoapi.api.pokemon.Pokemon;
import me.corriekay.pokegoutil.data.enums.PokeColumn;
@SuppressWarnings( {"serial", "rawtypes"})
public class PokemonTableModel extends AbstractTableModel {
PokemonTable pt;
private final ArrayList<Pokemon> pokeCol = new ArrayList<>();
private final PokemonGo go;
@Deprecated
PokemonTableModel(final PokemonGo go, final List<Pokemon> pokes, final PokemonTable pt) {
this.pt = pt;
this.go = go;
updateTableData(pokes);
}
/**
* Updates the table data with given pokemon list.
*
* @param pokes The list of pokemon that should be displayed
*/
@SuppressWarnings("unchecked")
public void updateTableData(final List<Pokemon> pokes) {
ClearTable();
final MutableInt i = new MutableInt();
pokes.forEach(p -> {
pokeCol.add(i.getValue(), p);
for (final PokeColumn column : PokeColumn.values()) {
// Now lets add the value for that column
column.data.add(i.getValue(), column.get(p));
}
i.increment();
});
fireTableDataChanged();
}
private void ClearTable() {
pokeCol.clear();
for (final PokeColumn column : PokeColumn.values()) {
column.data.clear();
}
}
public Pokemon getPokemonByIndex(final int i) {
try {
return pokeCol.get(pt.convertRowIndexToModel(i));
} catch (final Exception e) {
e.printStackTrace();
return null;
}
}
@Override
public String getColumnName(final int columnIndex) {
return PokeColumn.getForId(columnIndex).heading;
}
@Override
public int getColumnCount() {
return PokeColumn.values().length;
}
@Override
public int getRowCount() {
return pokeCol.size();
}
@Override
public Object getValueAt(final int rowIndex, final int columnIndex) {
return PokeColumn.getForId(columnIndex).data.get(rowIndex);
}
}