Package org.open2jam.gui

Source Code of org.open2jam.gui.ChartListTableModel

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 ChartListTableModel implements TableModel
{
    private ArrayList<ChartList> items;
    private final String[] col_names = new String[] { "Name", "Level", "Genre" };
    private int rank;
   
    private final ArrayList<TableModelListener> listeners;

    public ChartListTableModel()
    {
        listeners = new ArrayList<TableModelListener>();
        items = new ArrayList<ChartList>();
    }
   
    public void clear()
    {
        items.clear();
    }

    public void addRows(List<ChartList> l)
    {
        items.addAll(l);
        fireListeners();
    }

    public void setRawList(ArrayList<ChartList> list) {
        items = list;
        fireListeners();
    }

    public ArrayList<ChartList> getRawList() {
        return items;
    }

    public void setRank(int rank)
    {
        this.rank = rank;
        fireListeners();
    }

    public ChartList getRow(int row)
    {
        try {
            return items.get(row);
        } catch (IndexOutOfBoundsException e) {
            return null;
        }
    }

    @Override
    public int getRowCount() {
        return items.size();
    }

    @Override
    public int getColumnCount() {
       return col_names.length;
    }

    @Override
    public String getColumnName(int columnIndex) {
        return col_names[columnIndex];
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
       switch(columnIndex)
        {
            case 0:return String.class;
            case 1:return Integer.class;
            case 2:return String.class;
        }
       return Object.class;
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
       
        Chart c;
        if(items.size() <= rowIndex)return null;
        if(items.get(rowIndex).isEmpty()) return null;
        if(items.get(rowIndex).size()-1 < rank)
            c = items.get(rowIndex).get(0);
        else
            c = items.get(rowIndex).get(rank);
        switch(columnIndex)
        {
            case 0:
                String str = c.getTitle();
                if(items.get(rowIndex).size()-1 < rank)
                    str = "[AUTO-EASY] "+str;
                return str;
            case 1:return c.getLevel();
            case 2:return c.getGenre();
        }
        return null;
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        throw new UnsupportedOperationException("Can't do that cowboy");
    }

    @Override
    public void addTableModelListener(TableModelListener l) {
        listeners.add(l);
    }

    @Override
    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);
    }
}
TOP

Related Classes of org.open2jam.gui.ChartListTableModel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.