transient sclass JGallery is Swingable { L files; settable bool horizontal = true; simplyCached DynamicStack buttons() { ret horizontal ? makeNiceButtons() : verticalNiceButtons(); } simplyCached ButtonImageLoader imageLoader() { ret new ButtonImageLoader(buttons()); } void setImageFiles(Cl filesCollection) { var files = asList(filesCollection); if (eq(this.files, files)) ret; this.files = files; printVars("JGallery.setImageFiles", files); L l = filesForNiceButtons(files, lambda1 openImage); /*for (final TextImageAction tia : l) tia.popupMenuMaker = imageFilesPopupMenuFunction(tia);*/ replaceNiceButtons(buttons(), l); imageLoader().update(); } cachedVisual jHigherScrollPane(jfullcenter(buttons())); swappable void openImage(File f) { showImage(f); } }