compact module Tabs { sclass Tab { S name; } L tabs = notifyingList(r { dm_q(r updateTabs) }); transient JTabbedPane jtabs; visualize { jtabs = jtabs(); updateTabs(); ret jtabs; } void updateTabs { if (jtabs == null) ret; fillJTabs(jtabs, collect name(tabs)); } // API void addTab(S name) { tabs.add(name); } }