package Ġorg . move . openapi ext Ċ Ċ import Ġcom . intellij . openapi . Disposable Ċ import Ġcom . intellij . openapi . application . Modal ity State Ċ import Ġcom . intellij . openapi . application . invoke Later Ċ import Ġcom . intellij . openapi . file Chooser . FileChooser Descriptor Ċ import Ġcom . intellij . openapi . file Chooser . FileChooser Descriptor Factory Ċ import Ġcom . intellij . openapi . ui . Text Component Accessor Ċ import Ġcom . intellij . openapi . ui . TextField With Browse Button Ċ import Ġcom . intellij . openapi . util . Dis poser Ċ import Ġcom . intellij . ui . Document Adapter Ċ import Ġcom . intellij . util . Alarm Ċ import Ġjavax . swing . event . Document Event Ċ Ċ class ĠUi De bounc er ( ĊĠĠĠ Ġprivate Ġval Ġparent Disposable : ĠDis posable , ĊĠĠĠ Ġprivate Ġval Ġdelay Millis : ĠInt Ġ= Ġ 2 0 0 Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġalarm Ġ= ĠAlarm ( Alarm . Thread ToUse . PO O LED _ THREAD , Ġparent Disposable ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġon Ui Thread : Ġcallback Ġto Ġbe Ġexecuted Ġin ĠE DT Ġwith Ġ** any ** Ġmod ality Ġstate . ĊĠĠĠĠ Ġ* ĠUse Ġit Ġonly Ġfor ĠUI Ġupdates ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġrun ( on P ooled Thread : Ġ() Ġ-> ĠT , Ġon Ui Thread : Ġ( T ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Dis poser . is Disposed ( parent Disposable )) Ġreturn ĊĠĠĠĠĠĠĠ Ġalarm . cancel All Requests () ĊĠĠĠĠĠĠĠ Ġalarm . add Request ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġon P ooled Thread () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvoke Later ( Modal ity State . any ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Dis poser . is Disposed ( parent Disposable )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ui Thread ( r ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġdelay Millis ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġpath To Directory TextField ( ĊĠĠĠ Ġdis posable : ĠDis posable , ĊĠĠĠ Ġtitle : ĠString , ĊĠĠĠ Ġon TextChanged : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, Ċ ): ĠTextField With Browse Button Ġ= ĊĠĠĠ Ġpath TextField ( ĊĠĠĠĠĠĠĠ ĠFile Chooser Descriptor Factory . create Single Folder Descriptor (), ĊĠĠĠĠĠĠĠ Ġdis posable , ĊĠĠĠĠĠĠĠ Ġtitle , ĊĠĠĠĠĠĠĠ Ġon TextChanged ĊĠĠĠ Ġ) Ċ Ċ fun Ġpath TextField ( ĊĠĠĠ Ġfile Chooser Descriptor : ĠFile Chooser Descriptor , ĊĠĠĠ Ġdis posable : ĠDis posable , ĊĠĠĠ Ġtitle : ĠString , ĊĠĠĠ Ġon TextChanged : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, Ċ ): ĠTextField With Browse Button Ġ{ ĊĊĠĠĠ Ġval Ġcomponent Ġ= ĠTextField With Browse Button ( null , Ġdis posable ) ĊĠĠĠ Ġcomponent . add Browse Folder Listener ( title , Ġnull , Ġnull , ĊĠĠĠĠĠĠĠ Ġfile Chooser Descriptor , ĊĠĠĠĠĠĠĠ ĠText Component Accessor . TEXT _ FIELD _ W HO LE _ TEXT ĊĠĠĠ Ġ) ĊĠĠĠ Ġcomponent . child Component . document . add Document Listener ( object Ġ: ĠDocument Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtext Changed ( e : ĠDocument Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon TextChanged () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġreturn Ġcomponent Ċ } Ċ