package net.java.visualvm.modules.glassfish.ui;
import java.util.Vector;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.TableModelEvent;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
public class StatsTable extends JTable {
private String selectedRowRef = null;
{
getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
public StatsTable(Object[][] rowData, Object[] columnNames) {
super(rowData, columnNames);
}
public StatsTable(Vector rowData, Vector columnNames) {
super(rowData, columnNames);
}
public StatsTable(int numRows, int numColumns) {
super(numRows, numColumns);
}
public StatsTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm) {
super(dm, cm, sm);
}
public StatsTable(TableModel dm, TableColumnModel cm) {
super(dm, cm);
}
public StatsTable(TableModel dm) {
super(dm);
}
public StatsTable() {
super();
}
@Override
public void tableChanged(TableModelEvent e) {
selectedRowRef = getSelectedRowID();
super.tableChanged(e);
setSelectedRowByID(selectedRowRef);
}
private String getSelectedRowID() {
int rc = getRowCount();
int sr = getSelectedRow();
if (getRowCount() == 0 || getSelectedRow() <= 0) {
return null;
}
return getValueAt(getSelectedRow(), 0).toString();
}
private void setSelectedRowByID(String id) {
if (id == null) {
return;
}
for (int i = 0; i < getRowCount(); i++) {
if (getValueAt(i, 0).equals(id)) {
setRowSelectionInterval(i, i);
return;
}
}
}
}