package com.aerhard.oxygen.plugin.dbtagger.ui;
import com.aerhard.oxygen.plugin.dbtagger.TableData;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.util.HashSet;
import java.util.Set;
public class Table extends JTable {
/** The maximum width of the first row. */
private static final int FIRST_ROW_MAX_WIDTH = 100;
public Table () {
setDefaultFocusTraversal();
}
/**
* Sets default focus traversal rules: tab and shift tab should select new siblings rather than other parts of the table.
*/
private void setDefaultFocusTraversal() {
Set<AWTKeyStroke> forward = new HashSet<AWTKeyStroke>(
getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
forward.add(KeyStroke.getKeyStroke("TAB"));
setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
forward);
Set<AWTKeyStroke> backward = new HashSet<AWTKeyStroke>(
getFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS));
backward.add(KeyStroke.getKeyStroke("shift TAB"));
setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,
backward);
}
/**
* Gets the data of the currently selected row.
*
* @return the row data
*/
public String[] getSelectedRowData() {
int row = getSelectedRow();
int colCount = getModel().getColumnCount();
if (row != -1 && colCount != 0) {
String[] result = new String[colCount];
for (int i = 0; i < colCount; i++) {
result[i] = getModel().getValueAt(row, i)
.toString();
}
return result;
}
return null;
}
public void initTableModel(TableData result) {
String[][] data = result.getBody();
String[] titles = result.getHeaders();
DefaultTableModel tableModel = new DefaultTableModel(data, titles) {
private static final long serialVersionUID = 1L;
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
setModel(tableModel);
// key column width
getColumnModel().getColumn(0)
.setMaxWidth(FIRST_ROW_MAX_WIDTH);
}
}