package org.geogebra.desktop.cas.view;
import javax.swing.AbstractListModel;
import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
/**
* List model for row headers
*/
public class RowHeaderListModel extends AbstractListModel
implements TableModelListener {
private static final long serialVersionUID = 1L;
private JTable table;
private int size;
/**
* @param table
* creates new model
*/
public RowHeaderListModel(JTable table) {
this.table = table;
table.getModel().addTableModelListener(this);
size = table.getRowCount();
}
@Override
public int getSize() {
return size;
}
@Override
public Object getElementAt(int index) {
return Integer.toString(index + 1);
}
@Override
public void tableChanged(TableModelEvent e) {
int firstRow = e.getFirstRow();
int lastRow = e.getLastRow();
int oldSize = size;
int rowCount = table.getRowCount();
size = rowCount;
if (rowCount > oldSize) {
fireIntervalAdded(this, firstRow, lastRow);
} else if (rowCount < oldSize) {
fireIntervalRemoved(this, firstRow, lastRow);
} else {
fireContentsChanged(this, firstRow, lastRow);
}
}
}