sclass JObjectTable is Swingable {
new L data;
transient IF1 itemToMap;
transient Set hideFields;
transient bool debug, fieldsInOrder = true, withSearcher;
settable IVF1 defaultAction;
transient gettable JTable table;
transient TableSearcher searcher;
transient bool useStruct = false; // possible breaking change for older modules
event listChanged;
*() {
itemToMap = a -> {
if (a instanceof S) ret litorderedmap("" := (S) a);
Map map = humanizeKeys(fieldsInOrder ? objectToMap_inOrder_withoutFields(a, hideFields) : objectToMap(a));
if (!useStruct) map = mapValues strOrEmpty(map);
ret map;
};
}
void onListChangedAndNow(Runnable r) {
if (r == null) ret;
onListChanged(r);
r.run();
}
cachedVisualize {
L