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(); } }