!7 sclass DynSCP extends DynModule { SingleComponentPanel scp; final JComponent visualize() { ret scp = singleComponentPanel(visualize2()); } void unvisualize2() { scp = null; } JComponent visualize2() { null; } } sclass LastImagesInDirectory extends DynModule { /*DirectoryInfo*/O mate; S dir; L imageFiles; transient DynamicHStack stack; File dirObject() { ret newFile(dir); } void start { ownTimer(doEvery(10.0, r fullUpdate)); } JComponent visualize2() { if (mate == null) ret jcenteredlabel("Need directory"); ret jHigherScrollPane(jfullcenter(stack = makeNiceButtons()); } void update { lock lock; if (mate == null) mate = dm_findMateOfType(this, 'DirectoryInfo); if (mate == null) ret; setField(dir := (S) call(mate, 'getDir)); L allFiles = castCall(mate, 'getFiles); if (setField(imageFiles := filterOrNull(allFiles, f isImageFileName))) revisualize(); } }