sclass JConceptsTable {
Class extends A> conceptClass;
Concepts concepts;
JTable table;
// options
IF1 renderer;
L dropFields;
IF1 postProcess;
Runnable afterUpdate;
bool latestFirst;
IF1> sorter;
int idWidth = 50;
int updateInterval = 1000;
*(Class extends A> *conceptClass) {
showAsFrame();
}
S defaultTitle() {
ret plural(shortClassName(conceptClass));
}
void showAsFrame(S title default defaultTitle()) {
makeTable();
showFrame(title, table);
}
void makeTable {
if (table != null) ret;
if (concepts == null) concepts = db_mainConcepts();
table = sexyTable();
awtOnConceptChanges(table, updateInterval, r {
new L