package Ġview . main Ċ Ċ import Ġjavafx . stage . FileChooser Ċ Ċ @ Experimental Std lib Api Ċ class ĠFile Handler View ( private Ġval Ġmain View : ĠMain View , Ġprivate Ġval Ġdrawer : ĠGraph Drawer ) Ġ{ ĊĊĠĠĠ Ġinternal Ġfun Ġopen Graph () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcho oser Ġ= ĠFile Chooser () ĊĠĠĠĠĠĠĠ Ġwith ( cho oser ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Open Ġgraph " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextension Filters . add ( FileChooser . Extension Filter (" SQLite ", Ġ"*. db ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextension Filters . add ( FileChooser . Extension Filter (" CSV ", Ġ"*. csv ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġcho oser . show Open Dialog ( main View . current Window ) ĊĠĠĠĠĠĠĠ Ġif Ġ( file Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( file . extension ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" db " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġmain View . SQ lite File Handling Strategy . open ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain View . graph Ġ= Ġdata . first ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data . second Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain View . graph View Ġ= Ġdata . second !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer . show Graph With Graph View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer . show Graph Without Graph View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" csv " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġmain View . csv Strategy . open ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain View . graph Ġ= Ġdata . first ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data . second Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain View . graph View Ġ= Ġdata . second !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġhas Coordinates Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain View . graph View . vertices (). on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . center X Ġ!= Ġ 0 . 0 Ġ|| Ġit . center Y Ġ!= Ġ 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Coordinates Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ on Each ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! has Coordinates ) Ġdrawer . show Graph Without Graph View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġdrawer . show Graph With Graph View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġdrawer . show Graph Without Graph View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer . update Graph Info () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġsave Graph () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcho oser Ġ= ĠFile Chooser () ĊĠĠĠĠĠĠĠ Ġwith ( cho oser ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Save Ġgraph " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextension Filters . add ( FileChooser . Extension Filter (" SQLite ", Ġ"*. db ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextension Filters . add ( FileChooser . Extension Filter (" CSV ", Ġ"*. csv ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġcho oser . show Save Dialog ( main View . current Window ) ĊĠĠĠĠĠĠĠ Ġif Ġ( file Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( file . extension ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" db " Ġ-> Ġmain View . SQ lite File Handling Strategy . save ( file , Ġmain View . graph , Ġmain View . graph View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" csv " Ġ-> Ġmain View . csv Strategy . save ( file , Ġmain View . graph , Ġmain View . graph View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }