!7 module DirectoryTree > DynSCP { File dir; start { dm_onTopInput(voidfunc(S s) { if (isAbsolutePath(s) && dirExists(s)) { switch to q(); setDir(s); } }); } JComponent visualize2() { if (dir == null) ret jcenteredbutton("Select directory...", rThread select); else { setDir(dir); ret getComponent(); } } void select { temp enter(); selectDir(voidfunc(File dir) { setDir(dir) }); } void setDir(S dir) { setDir(newFile(dir)); } void setDir(File dir) { temp enter(); setField(+dir); setModuleName(f2s(dir) + " [Directory Tree w/sizes]"); Tree dataTree = findDirsWithSizes_tree(dir); sortTreeOfFilesWithSizeBySize(dataTree); final JTree tree = jDynamicTreeFromTree(dataTree, makeChildrenIsFast := true); swing { tree.setCellRenderer(customToStringTreeCellRenderer(func(Tree t) -> S { fileName(t.a.file) + " [" + str_toM(t.a.size) + "]" })); } setComponent(tree); } }