package Ġtv . w under box . n fd Ċ Ċ import Ġarrow . core . Either Ċ import Ġtv . w under box . n fd . awt . A wt FileDialog Ċ import Ġtv . w under box . n fd . n fd . N fd FileDialog Ċ import Ġjava . awt . Component Ċ import Ġjava . io . File Ċ Ċ interface ĠFile Dialog Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDefault Ġimplementation Ġtries Ġto Ġopen Ġthe Ġnative Ġfile Ġdialog , Ġand ĊĠĠĠĠĠĠĠĠ Ġ* Ġfalls Ġback Ġto Ġthe ĠA WT Ġfile Ġdialog Ġif Ġthat . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġdefault ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow : ĠComponent , ĊĠĠĠĠĠĠĠ Ġ): ĠFile Dialog Ġ= Ġkotlin . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn fd Ġ= ĠN fd FileDialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa wt Ġ= ĠA wt FileDialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow Ġ= Ġwindow , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn fd . fallback With ( awt ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave ( ĊĠĠĠĠĠĠĠ Ġfilters : ĠList < Filter > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġdefault Path : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġdefault Name : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġ): ĠEither < Error , ĠFile > ĊĊĠĠĠ Ġfun Ġpick File ( ĊĠĠĠĠĠĠĠ Ġfilters : ĠList < Filter > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġdefault Path : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġ): ĠEither < Error , ĠFile > ĊĊĠĠĠ Ġfun Ġpick File Many ( ĊĠĠĠĠĠĠĠ Ġfilters : ĠList < Filter > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġdefault Path : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġ): ĠEither < Error , ĠList < File >> ĊĊĠĠĠ Ġfun Ġpick Directory ( ĊĠĠĠĠĠĠĠ Ġdefault Path : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġ): ĠEither < Error , ĠFile > ĊĊĠĠĠ Ġenum Ġclass ĠError Ġ{ ĊĠĠĠĠĠĠĠ ĠERROR , ĊĠĠĠĠĠĠĠ ĠCANCEL , ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠFilter ( ĊĠĠĠĠĠĠĠ Ġval Ġtitle : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġextensions : ĠList < String >, ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun ĠFile Dialog . fallback With ( n fd : ĠFile Dialog ): ĠFile Dialog Ġ= ĊĠĠĠ Ġobject Ġ: ĠFile Dialog Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsave ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilters : ĠList < FileDialog . Filter >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Path : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Name : ĠString ?, ĊĠĠĠĠĠĠĠ Ġ): ĠEither < FileDialog . Error , ĠFile > Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ fallback With . save ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilters Ġ= Ġfilters , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Path Ġ= Ġdefault Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Name Ġ= Ġdefault Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġotherwise Ġfallback ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn fd . save ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilters Ġ= Ġfilters , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Path Ġ= Ġdefault Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Name Ġ= Ġdefault Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpick File ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilters : ĠList < FileDialog . Filter >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Path : ĠString ?, ĊĠĠĠĠĠĠĠ Ġ): ĠEither < FileDialog . Error , ĠFile > Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ fallback With . pick File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilters Ġ= Ġfilters , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Path Ġ= Ġdefault Path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġotherwise Ġfallback ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn fd . pick File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilters Ġ= Ġfilters , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Path Ġ= Ġdefault Path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpick File Many ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilters : ĠList < FileDialog . Filter >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Path : ĠString ?, ĊĠĠĠĠĠĠĠ Ġ): ĠEither < FileDialog . Error , ĠList < File >> Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ fallback With . pick File Many ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilters Ġ= Ġfilters , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Path Ġ= Ġdefault Path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġotherwise Ġfallback ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn fd . pick File Many ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilters Ġ= Ġfilters , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Path Ġ= Ġdefault Path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpick Directory ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Path : ĠString ?, ĊĠĠĠĠĠĠĠ Ġ): ĠEither < FileDialog . Error , ĠFile > Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ fallback With . pick Directory ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Path Ġ= Ġdefault Path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġotherwise Ġfallback ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn fd . pick Directory ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Path Ġ= Ġdefault Path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ