package foldertree open class FolderTreeForm( title : String, initialFolder : File ) : PromptForm( title ) { constructor( initialFolder : File ) : this( "Folder Tree", initialFolder ) constructor() : this( homeFolder() ) val folder = folderProperty( "Folder", initialFolder ) val showHiddenFiles = boolProperty( "Show Hidden Files", FolderTree.default_showHiddenFiles ) .shortcut( Key.PERIOD.control() ).icon( "hidden_file" ) val showHiddenFolders = boolProperty( "Show Hidden Folders", FolderTree.default_showHiddenFolders ) .shortcut( Key.PERIOD.control().shift() ).icon( "hidden_folder" ) val filesFirst = boolProperty( "Files First", FolderTree.default_filesFirst ) val noFiles = boolProperty( "Hide Files", false ) .shortcut( Key.N.control() ).icon( "no_files" ) meth folder( folder : File ) = this.apply { this.folder.value = folder } override meth elements() = listOf( folder, filesFirst, noFiles, showHiddenFiles, showHiddenFolders ) override meth validate() : FormError { if (!folder.value.exists()) { return FormError( folder, "Folder not found" ) } if (!folder.value.isFolder()) { return FormError( folder, "Not a folder" ) } return null } override meth runner() = FolderTreeBehaviour( this ) override meth copy() : FolderTreeForm = super.copy() as FolderTreeForm }