package Ġde . fl ap do od le . dir sync . ui . events Ċ Ċ import Ġde . fl ap do od le . dir sync . ui . config . Sync Config Ċ import Ġde . fl ap do od le . dir sync . ui . config . Sync Entry Ċ import Ġde . fl ap do od le . dir sync . ui . io . Scanner Ċ import Ġde . fl ap do od le . dir sync . ui . tasks . Tasks Ċ import Ġde . fl ap do od le . fx . extensions . fire Ċ import Ġde . fl ap do od le . fx . lazy . Lazy Value Ċ import Ġde . fl ap do od le . photos ync . progress . Monitor Ċ import Ġjavafx . scene . control . Alert Ċ import Ġt orn ad of x . Event Context Ċ import Ġjava . lang . Exception Ċ import Ġjava . nio . file . Path Ċ import Ġjava . nio . file . Paths Ċ Ċ class ĠAction EventHandler ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtasks : ĠTasks , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcurrent Config : ĠLazy Value < Sync Config > Ċ ) Ġ: ĠEventHandler Factory < ActionEvent > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinstance (): ĠEvent Context .( ActionEvent ) Ġ-> ĠUnit Ġ= Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction Event . Action . Start Scan Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Scan ( current Config . value (). entry ( event . action . id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalert Ġ= ĠAlert ( Alert . Alert Type . ERROR , Ġex . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalert . header Text Ġ= Ġ" scan " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalert . show And Wait () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAction Event . scan Abort ed ( event . action . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction Event . Action . Scan Finished Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" -------------------------------- - ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" diff ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . action . diff . diff Entries . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" -------------------------------- - ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction Event . Action . Stop Scan Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" stop Ġsc ap Ġcalled ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtasks . stop ( event . action . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Scan ( config : ĠSync Entry ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġconfig . id ĊĠĠĠĠĠĠĠ Ġval Ġsrc Path Ġ= ĠPaths . get ( config . src ) ĊĠĠĠĠĠĠĠ Ġval Ġdst Path Ġ= ĠPaths . get ( config . dst ) ĊĠĠĠĠĠĠĠ Ġval Ġfilter : Ġ( Path ) Ġ-> ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( config . exclude s . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġpath Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġas String Ġ= Ġpath . fileName . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvisit Path Ġ= Ġconfig . exclude s . none Ġ{ Ġpart Ġ-> Ġas String . contains ( part ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisit Path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġit Ġ-> Ġtrue Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġscanner Ġ= ĠScanner ( src Path , Ġdst Path , Ġfilter Ġ= Ġfilter ) ĊĠĠĠĠĠĠĠ Ġtasks . async ( id , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġscanner . sync ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreporter Ġ= ĠMonitor . Reporter Ġ{ Ġupdate Message ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġabort Ġ= Ġ{ Ġis Cancelled Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Ġ= Ġ{ Ġcurrent , Ġmax Ġ-> Ġupdate Progress ( current . to Long (), Ġmax . to Long ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠ Ġ}, ĠonSuccess Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAction Event . scan Finished ( id , Ġit ). fire () ĊĠĠĠĠĠĠĠ Ġ}, Ġon Cancel Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAction Event . scan Abort ed ( id ). fire () ĊĠĠĠĠĠĠĠ Ġ}, Ġon Fail Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAction Event . scan Abort ed ( id ). fire () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }