static Component selectSubdirOrCreateNew(File motherDir, final VF1 action) { JList list = jlist(map f2s(listDirs(motherDir))); onDoubleClickOrEnter(list, voidfunc(S path) { callF(action, newFile(path)); disposePIFrame(list); }); ret showFrame_returnContents("Choose a directory", withCenteredButtons( withTitle("Please select a directory or create one", list), listDependentButton(list, "OK", r { callFInNewThread(action, newFile(selectedItem(list))); disposePIFrame(list); }), jbutton("Create directory...", r { inputText("Name of new directory", voidfunc(S name) { File f = mkdirs(newFile(motherDir, name)); callFInNewThread(action, f); disposePIFrame(list); }); }))); }