!7 module TaskBar_dev extends DynObjectTable { transient SimpleLiveValue lvInvisible = stringLiveValue(); start { itemToMap = func(S mod) -> Map { litorderedmap("Name" := dm_moduleName(mod)) }; ownResource(vmBus_onMessages(vmBus_modulesListChangeMessages(), rstUpdate())); rstUpdate().trigger(); } void update { L invis = dm_invisibleModules(); lvInvisible.set(empty(invis) ? "" : "+ " + l(invis) + " invisible"); setData(dm_visibleModuleIDs()); } visualize { JComponent c = super.visualize(); for (final Pair> p : dm_moduleMenuItems()) tablePopupMenuItem(table, p.a, voidfunc(final int row) { thread { callF(p.b, dm_getModule(_get(data, row))); } }); ret northAndCenter( withMargin(3, onLeftClick(jLiveValueLabel(lvInvisible), r dm_showInvisibleModulesList)), c); } }