/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.bearsoft.gui.grid;
import com.bearsoft.gui.grid.insets.LinearInset;
import com.bearsoft.gui.grid.constraints.LinearConstraint;
import java.util.Arrays;
import java.util.Date;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.TableColumn;
import org.junit.Before;
import org.junit.Test;
/**
*
* @author Gala
*/
public class BaseTableTest {
protected final static long millis = System.currentTimeMillis();
protected final static long delta = 60000;
protected final static Object[] columnNames = {"id", "consumed", "when", "desc", "age", "reviewed"};
protected static Object[][] sampleData = {
{1l, true, new Date(millis + 10 * delta), "sample1", 67, false},
{2l, true, new Date(millis + 20 * delta), "sample2", 68, false},
{3l, true, new Date(millis + 30 * delta), "sample3", 69, false},
{4l, false, new Date(millis + 40 * delta), "sample4", 70, false},
{5l, false, new Date(millis + 50 * delta), "sample5", 71, false},
{6l, true, new Date(millis + 60 * delta), "sample6", 72, true},
{7l, false, new Date(millis + 70 * delta), "sample7", 73, false}
};
protected static Object[][] sampleDataSaveStorage = new Object[sampleData.length][sampleData[0].length];
protected class SampleTableModel extends AbstractTableModel {
public SampleTableModel() {
super();
}
@Override
public String getColumnName(int column) {
if (column >= 0 && column < columnNames.length) {
return columnNames[column].toString();
} else {
return "";
}
}
public int getRowCount() {
return sampleData.length;
}
public int getColumnCount() {
return columnNames.length;
}
public Object getValueAt(int row, int col) {
return sampleData[row][col];
}
@Override
public boolean isCellEditable(int row, int column) {
return true;
}
@Override
public void setValueAt(Object value, int row, int col) {
sampleData[row][col] = value;
fireTableCellUpdated(row, col);
}
public void deleteRow(int row) {
Object[][] head = Arrays.copyOfRange(sampleData, 0, row);
Object[][] tail = Arrays.copyOfRange(sampleData, row+1, sampleData.length);
sampleData = new Object[sampleData.length-1][columnNames.length];
int j=0;
for(int i=0;i<head.length;i++)
{
sampleData[j++] = head[i];
}
for(int i=0;i<tail.length;i++)
{
sampleData[j++] = tail[i];
}
fireTableRowsDeleted(row, row);
}
public void insertRow(int row) {
Object[][] head = Arrays.copyOfRange(sampleData, 0, row);
Object[][] tail = Arrays.copyOfRange(sampleData, row, sampleData.length);
sampleData = new Object[sampleData.length+1][columnNames.length];
int j=0;
for(int i=0;i<head.length;i++)
{
sampleData[j++] = head[i];
}
sampleData[j++] = new Object[columnNames.length];
for(int i=0;i<tail.length;i++)
{
sampleData[j++] = tail[i];
}
fireTableRowsInserted(row, row);
}
}
protected class SampleColumnModel extends DefaultTableColumnModel {
public SampleColumnModel(LinearConstraint aConstraint) {
super();
for (int i = aConstraint.getMin(); i <= Math.min(columnNames.length - 1, aConstraint.getMax()); i++) {
TableColumn tc = new TableColumn(i - aConstraint.getMin(), 60);
tc.setHeaderValue(columnNames[i]);
addColumn(tc);
}
}
public SampleColumnModel(LinearInset aInset) {
super();
for (int i = 0; i < aInset.getPreFirst(); i++) {
TableColumn tc = new TableColumn(i, 60);
tc.setHeaderValue(String.valueOf(i - aInset.getPreFirst()));
addColumn(tc);
}
for (int i = 0; i < columnNames.length; i++) {
TableColumn tc = new TableColumn(i + aInset.getPreFirst(), 60);
tc.setHeaderValue(columnNames[i]);
addColumn(tc);
}
for (int i = 0; i < aInset.getAfterLast(); i++) {
TableColumn tc = new TableColumn(i + aInset.getPreFirst() + columnNames.length, 60);
tc.setHeaderValue("+" + String.valueOf(i + 1));
addColumn(tc);
}
}
}
@Test
public void dummyTest() {
}
@Before
public void copySampleData2SaveStorage() {
sampleDataSaveStorage = Arrays.copyOf(sampleData, sampleData.length);
}
protected void restoreSampleData() {
sampleData = Arrays.copyOf(sampleDataSaveStorage, sampleDataSaveStorage.length);
}
}