!7

module DirectoryTree > DynSCP {
  File dir;
  
  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(File dir) {
    temp enter();
    setField(+dir);
    setModuleName(f2s(dir) + " [Directory Tree]");
    
    final JTree tree = jDynamicTree(dir, func(File d) -> L<File> { listDirs(d) });
    swing { tree.setCellRenderer(customToStringTreeCellRenderer(func(File f) -> S { fileName(f) })); }
    setComponent(tree);
  }
}