!7 module SensoryStatus > DynModule { transient L panels; transient volatile bool online, cam, mic; transient ReliableSingleThread rst = dm_rst(this, r actualUpdate); visualize { ret hgrid(panels = repF singleComponentPanel(3)); } start { doEvery(10000, rst); dm_afterVisualize(rst); } void actualUpdate { temp enter(); online = main.areWeOnline(); cam = dm_isWebCamLive(); mic = dm_anyIncomingAudio(); if (nempty(panels)) { setComponent(0, jimage(online ? #1101406 : #1101405), online ? "I have Internet" : "I am offline"); setComponent(1, jimage(cam ? #1101410 : null), cam ? "I can see!" : "I am blind"); setComponent(2, jimage(mic ? #1019081 : null), mic ? "I can hear something!" : "I can't hear anything"); } setModuleName("Sensory Status +" + count()); } void setComponent(int i, JComponent c, S tooltip) { SingleComponentPanel panel = get(panels, i); if (panel != null) { setToolTip(c, tooltip); panel.setComponent(c); } } int count() { ret addBools(online, cam, mic); } }