abstract sclass DynCopiedObjectTable extends DynObjectTable {
S srcModuleLibID;
transient bool autoScrollDown;
transient ReliableSingleThread rstGrabData = dm_rst(this, r grabData);
void init {} // override this in subclasses
start {
init();
dm_require(srcModuleLibID);
dm_vmBus_onMessage listChanged(voidfunc(O mod, L list) {
if (empty(srcModuleLibID) || dm_isMe(mod) || !eq(dm_moduleLibID(mod), srcModuleLibID)) ret;
rstGrabData.trigger(); // goes through RST + Q
});
rstGrabData.trigger();
}
void grabData {
L l = cast dm_callModuleWithLibID(srcModuleLibID, 'getList);
if (l == null) ret;
setList(quickImport(l));
if (autoScrollDown) scrollDown();
}
}