sbool showImageConceptsAsTable_latestFirst; static JTable showImageConceptsAsTable(S title) { ret showImageConceptsAsTable(title, null); } static JTable showImageConceptsAsTable(S title, JTable table) { new L data; Collection concepts = allConcepts(); if (showImageConceptsAsTable_latestFirst) concepts = reversed(concepts); for (Concept c : concepts) { S n = shortDynClassName(c) + c.id; if (c instanceof PNGFile) try { BufferedImage img = c/PNGFile.loadImage(); if (img != null) data.add(ll(n, img)); else data.add(ll(n, missingImageIcon())); } catch e { data.add(ll(n, missingImageIcon())); } for (S field : conceptFields(c)) { O o = cget(c, field); BufferedImage img = showImageConceptsAsTable_toBufferedImage(o); if (img != null) data.add(ll(n + "." + field, img)); if (o instanceof Collection /*&& !o instanceof Concept.RefL*/) { int i = 0; for (O x : (Collection) o) { img = showImageConceptsAsTable_toBufferedImage(o); if (img != null) data.add(ll(n + "." + field + "[" + i + "]", img)); ++i; } } } } L cols = splitAtSpace("Concept.Field Image"); if (table == null) table = sexyTable(); fillTableWithData(table, data, cols); table.setRowHeight(100); showFrame(title, table); ret table; } static BufferedImage showImageConceptsAsTable_toBufferedImage(O o) { if (o instanceof BWImage) ret ((BWImage) o).getBufferedImage(); if (o instanceof RGBImage) ret ((RGBImage) o).getBufferedImage(); null; }