package Ġdev . ro bo code . tank roy ale . gui . ui . config Ċ Ċ import Ġdev . ro bo code . tank roy ale . gui . ui . MainWindow Ċ import Ġdev . ro bo code . tank roy ale . gui . settings . Config Settings Ċ import Ġdev . ro bo code . tank roy ale . gui . ui . components . Rc Dialog Ċ import Ġdev . ro bo code . tank roy ale . gui . ui . extensions . J Component Ext . add Button Ċ import Ġdev . ro bo code . tank roy ale . gui . ui . extensions . J Component Ext . add Label Ċ import Ġdev . ro bo code . tank roy ale . gui . ui . extensions . J Component Ext . setDefault Button Ċ import Ġdev . ro bo code . tank roy ale . gui . ui . extensions . Window Ext . on Activated Ċ import Ġdev . ro bo code . tank roy ale . gui . ui . extensions . Window Ext . on Closing Ċ import Ġdev . ro bo code . tank roy ale . gui . util . Event Ċ import Ġnet . mig info com . swing . M ig Layout Ċ import Ġjavax . swing .* Ċ Ċ object ĠBot Root Directories Config Dialog Ġ: ĠR c Dialog ( MainWindow , Ġ" bot _ root _ directories _ config _ dialog ") Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent Pane . add ( Bot Directory Config Panel ) ĊĠĠĠĠĠĠĠ Ġpack () ĊĠĠĠĠĠĠĠ Ġset Location Relative To ( MainWindow ) Ġ// Ġcenter Ġon Ġmain Ġwindow ĊĊĠĠĠĠĠĠĠ Ġon Closing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Settings . bot Directories Ġ= ĠBot Directory Config Panel . list Model . elements (). toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġobject ĠBot Directory Config Panel Ġ: ĠJPanel ( M ig Layout (" fill ")) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġon Add Ġ= ĠEvent < JButton >() ĊĠĠĠ Ġprivate Ġval Ġon Remove Ġ= ĠEvent < JButton >() ĊĠĠĠ Ġprivate Ġval Ġon Dismiss Ġ= ĠEvent < JButton >() ĊĊĠĠĠ Ġval Ġlist Model Ġ= ĠDefault ListModel < String >() ĊĠĠĠ Ġval Ġlist Ġ= ĠJ List ( list Model ) ĊĠĠĠ Ġval Ġscroll Pane Ġ= ĠJ ScrollPane ( list ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Label (" bot _ root _ dirs ", Ġ" wrap ") ĊĠĠĠĠĠĠĠ Ġadd ( scroll Pane , Ġ" span Ġ 2 , Ġgrow , Ġwrap ") ĊĊĠĠĠĠĠĠĠ Ġval Ġbutton Panel Ġ= ĠJPanel ( M ig Layout ("", Ġ" [][] [ 5 ][] ")) ĊĠĠĠĠĠĠĠ Ġbutton Panel . add Button (" add ", Ġon Add ) ĊĠĠĠĠĠĠĠ Ġbutton Panel . add Button (" remove ", Ġon Remove ) ĊĠĠĠĠĠĠĠ Ġval Ġdismiss Button Ġ= Ġbutton Panel . add Button (" dismiss ", Ġon Dismiss , Ġ" skip "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetDefault Button ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadd ( button Panel ) ĊĊĠĠĠĠĠĠĠ ĠConfig Settings . bot Directories . forEach Ġ{ Ġlist Model . addElement ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġon Add . subscribe ( Bot Root Directories Config Dialog ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcho oser Ġ= ĠJ FileChooser () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser . file Selection Mode Ġ= ĠJ FileChooser . DIRECT ORIES _ ONLY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreturn Val Ġ= Ġcho oser . show Open Dialog ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( return Val Ġ== ĠJ FileChooser . APPRO VE _ OPTION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġcho oser . selected File . to Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Model . addElement ( path . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġon Remove . subscribe ( Bot Root Directories Config Dialog ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . selected Values List . forEach Ġ{ Ġlist Model . remove Element ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Settings () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġon Dismiss . subscribe ( Bot Root Directories Config Dialog ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBot Root Directories Config Dialog . dispose () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠBot Root Directories Config Dialog . on Activated Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Button . request Focus () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Settings () Ġ{ ĊĠĠĠĠĠĠĠ ĠConfig Settings . bot Directories Ġ= Ġlist Model . elements (). toList () ĊĠĠĠ Ġ} Ċ }