package foldertree class PlacesTreeBehaviour( form : PlacesTreeForm ) : FolderTreeBehaviour( form ) { constructor() : this( PlacesTreeForm() ) val folderActions = listOf() init { title = "Places" iconName = "favourite" for (place in sharedPlaces()) { val action = Action( place.alias, this:>changeFolder.curry(place.file) ) folderActions.add( action ) } } override meth toolbar() : List { val sup : List = super.toolbar() as List sup.add( sup.size() - 1, MenuFeature( "Select", folderActions ) ) return sup } meth changeFolder( folder : File ) { form.folder.value = folder refresh() } } /** * We need a specific subclass of FolderTreeForm, so that `runner()` returns a PlacesTreeBehaviour, * and not a FolderTreeBehaviour. */ class PlacesTreeForm( folder : File ) : FolderTreeForm( "Places", folder ) { constructor() : this( sharedPlaces()[0].file ) override meth runner() = PlacesTreeBehaviour( this ) }