Newer
Older
jrex / src / PivotTableModel.java

import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;
import com.google.common.collect.Tables;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author Mark George <mark.george@otago.ac.nz>
 */
public class PivotTableModel extends AbstractTableModel {

	private Table<Integer, Integer, Object> table = HashBasedTable.create();
	private TableModelListener listener;

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

	@Override
	public int getColumnCount() {
		return table.columnKeySet().size();
	}

	@Override
	public String getColumnName(int columnIndex) {
		return String.valueOf(columnIndex+1);
	}

	@Override
	public Class<?> getColumnClass(int columnIndex) {
		return Object.class;
	}

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

	@Override
	public Object getValueAt(int rowIndex, int columnIndex) {
		return table.get(rowIndex, columnIndex);
	}

	@Override
	public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
		table.put(rowIndex, columnIndex, aValue);
		fireTableCellUpdated(rowIndex, columnIndex);
	}

	public void addRow(String[] values) {
		int rowCount = getRowCount();
		for (int i = 0; i < values.length; i++) {
			table.put(rowCount, i, values[i]);
		}
		fireTableRowsInserted(rowCount, rowCount);
	}

	public void transpose() {
		table = Tables.transpose(table);
		fireTableStructureChanged();
	}


	@Override
	public String toString() {
		return table.toString();
	}

}