!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 allFiles, imageFiles; transient DynamicHStack stack; File dirObject() { ret newFile(dir); } 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 (this.allFiles != allFiles) { setField(this, +allFiles); if (setField(imageFiles := filterOrNull(allFiles, f isImageFileName))) revisualize(); } } }