package org.open2jam.gui;
import java.util.ArrayList;
import java.util.List;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
import org.open2jam.parsers.Chart;
import org.open2jam.parsers.ChartList;
/**
*
* @author fox
*/
public class ChartTableModel implements TableModel
{
private final List<Chart> items;
private final String[] col_names = new String[] { "Level", "Notes", "Keys" };
private ChartList chartlist;
private final List<TableModelListener> listeners;
public ChartTableModel()
{
listeners = new ArrayList<TableModelListener>();
items = new ArrayList<Chart>();
}
public void clear()
{
items.clear();
}
public void addRow(Chart h)
{
items.add(h);
fireListeners();
}
public void setChartList(ChartList c)
{
this.chartlist = c;
for(Chart h : this.chartlist)addRow(h);
fireListeners();
}
public ChartList getChartList(){
return chartlist;
}
public Chart getRow(int row)
{
return items.get(row);
}
public int getRowCount() {
return items.size();
}
public int getColumnCount() {
return col_names.length;
}
public String getColumnName(int columnIndex) {
return col_names[columnIndex];
}
public Class<?> getColumnClass(int columnIndex) {
switch(columnIndex)
{
case 0:return Integer.class;
case 1:return Integer.class;
case 2:return Integer.class;
}
return Object.class;
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
public Object getValueAt(int rowIndex, int columnIndex) {
Chart c = items.get(rowIndex);
switch(columnIndex)
{
case 0:return c.getLevel();
case 1:return c.getNoteCount();
case 2:return c.getKeys();
}
return null;
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
throw new UnsupportedOperationException("Can't do that cowboy");
}
public void addTableModelListener(TableModelListener l) {
listeners.add(l);
}
public void removeTableModelListener(TableModelListener l) {
listeners.remove(l);
}
private void fireListeners() {
TableModelEvent e = new TableModelEvent(this);
fireListeners(e);
}
private void fireListeners(TableModelEvent e) {
for(TableModelListener l : listeners)l.tableChanged(e);
}
}