!7 static Class _classMigration_LastImagesInDirectory = ImagesInDirectory; // not implemented yet sclass ImagesInDirectory extends DynSCP { File dir; L allFiles, imageFiles; transient DynamicHStack buttons; transient ButtonImageLoader imageLoader; File dirObject() { ret dir; } JComponent visualize2() { if (buttons == null) { buttons = makeNiceButtons(); updateButtons(); } if (imageLoader == null) imageLoader = new ButtonImageLoader(buttons); if (mate! == null) ret jcenteredlabel("Need directory"); ret jHigherScrollPane(jfullcenter(buttons)); } void update { lock lock; try { if (dir == null) ret; L allFiles = castCall(mate!, 'getFiles); if (this.allFiles != allFiles) { setField(+allFiles); setField(imageFiles := filterOrNull(allFiles, f isImageFileName)); } } finally { if (changeCount != oldChangeCount) updateButtons(); } } void updateButtons { if (dir == null || buttons == null) ret with setModuleName("Images in directory"); L l = filesForNiceButtons(sortFilesByDate( fileNamesInDirToFile(new File(dir), imageFiles)), f showImage); for (final TextImageAction tia : l) tia.popupMenuMaker = ImagesInDirectory_popupMenu(this, tia); replaceNiceButtons(buttons, l); setModuleName(imageFiles == null ? "Not allowed to look in directory " + fileName(dirObject()) : n2(l, "image") + " in directory " + fileName(dirObject())); if (imageLoader != null) imageLoader.update(); } } static VF1 ImagesInDirectory_popupMenu(ImagesInDirectory m, final TextImageAction tia) { // Haha, not even used //final WeakReference me = new(m); ret voidfunc(JPopupMenu menu) { addPopupItemsForImageFile(menu, filesForNiceButtons_map.get(tia)) }; }