package Ġme . sed lar . midi . binding . actions Ċ Ċ import Ġjavafx . scene . Node Ċ import Ġjavafx . scene . control . Button Ċ import Ġjavafx . stage . FileChooser Ċ import Ġme . sed lar . midi . binding . MIDI Action Ċ import Ġme . sed lar . midi . binding . MID IB ind ing Ċ import Ġme . sed lar . util . J FX Ċ import Ġjava . awt . Desktop Ċ import Ġjava . io . File Ċ Ċ class ĠProgram Action Ġ: ĠMIDI Action (" Program ") Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġbuild ( conf ir mer : ĠRunnable ): ĠPair < Node , ĠRunnable > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnode Ġ= ĠJ FX . load FXML ("/ bindings / program . f xml ") ĊĠĠĠĠĠĠĠ Ġval Ġbtn Program Ġ= Ġnode . lookup ("# btn - program ") Ġas ĠButton ĊĠĠĠĠĠĠĠ Ġbtn Program . setOn Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Chooser Ġ= ĠFile Chooser () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Chooser . show Open Dialog ( null )?. let Ġ{ Ġfile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠformData Ġ= Ġfile . absolute Path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Program . text Ġ= Ġfile . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconf ir mer . run () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnode Ġto ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Program . text Ġ= ĠformData ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( binding : ĠM ID IB ind ing , Ġbtn Data : ĠByte ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDesktop . get Desktop (). open ( File ( binding . data )) ĊĠĠĠ Ġ} Ċ }