/* Ċ Ġ* ĠĠĠ ĠCopyright Ġ 2 0 1 6 ĠJon athan ĠBe aud oin Ċ Ġ* Ċ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . d roid . explorer Ċ Ċ import Ġcom . d roid . explorer . command . adb . impl . Device Serial Ċ import Ġcom . d roid . explorer . command . adb . impl . Device State Ċ import Ġcom . d roid . explorer . command . adb . impl . Root Ċ import Ġcom . d roid . explorer . command . adb . impl . Start Ċ import Ġcom . d roid . explorer . filesystem . FileSystem Ċ import Ġcom . d roid . explorer . filesystem . entry . Entry Ċ import Ġcom . d roid . explorer . gui . Css Ċ import Ġcom . d roid . explorer . gui . Icons Ċ import Ġcom . d roid . explorer . gui . Text Icon Cell Ċ import Ġcom . d roid . explorer . util . action Ċ import Ġjavafx . animation . Animation Ċ import Ġjavafx . animation . Key Frame Ċ import Ġjavafx . animation . Timeline Ċ import Ġjavafx . event . EventHandler Ċ import Ġjavafx . scene . Scene Ċ import Ġjavafx . scene . control .* Ċ import Ġjavafx . scene . control . cell . PropertyValue Factory Ċ import Ġjavafx . scene . input . MouseEvent Ċ import Ġjavafx . scene . layout . Anchor Pane Ċ import Ġjavafx . stage . Stage Ċ import Ġjavafx . util . Duration Ċ import Ġorg . controls fx . control . B read Cr umb Bar Ċ import Ġt orn ad of x . App Ċ import Ġt orn ad of x . FX Ċ import Ġt orn ad of x . FX . Companion . stylesheets Ċ import Ġt orn ad of x . View Ċ import Ġt orn ad of x . find Ċ import Ġjava . util .* Ċ import Ġkotlin . concurrent . thread Ċ import Ġkotlin . properties . Deleg ates . notNull Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠJon athan Ġon Ġ 4 / 2 3 / 2 0 1 6 . Ċ Ġ*/ Ċ class ĠApp Class Ġ: ĠApp () Ġ{ ĊĉĊ ĉ override Ġval Ġprimary View Ġ= ĠD roid Explorer :: class ĊĉĊ ĉ override Ġfun Ġstart ( stage : ĠStage ) Ġ{ Ċĉ ĉ FX . set Primary Stage ( stage Ġ= Ġstage ) Ċĉ ĉ FX . set Application ( application Ġ= Ġthis ) ĊĉĉĊĉ ĉ try Ġ{ Ċĉĉ ĉ val Ġview Ġ= Ġfind ( primary View ) Ċĉĉ ĉ d roid Explorer Ġ= Ġview ĊĉĉĉĊĉĉ ĉ stage . apply Ġ{ Ċĉĉĉ ĉ scene Ġ= ĠScene ( view . root ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscene . stylesheets . addAll ( FX . stylesheets ) Ċĉĉĉ ĉ title Property (). bind ( view . title Property ) Ċĉĉĉ ĉ show () Ċĉĉ ĉ } Ċĉ ĉ } Ġcatch Ġ( ex : ĠException ) Ġ{ Ċĉĉ ĉ ex . printStackTrace () Ċĉ ĉ } Ċ ĉ } Ċĉ Ċ } Ċ Ċ var Ġd roid Explorer Ġby Ġnot Null < Droid Explorer >() Ċ Ċ class ĠD roid Explorer Ġ: ĠView () Ġ{ ĊĉĊ ĉ override Ġval Ġroot : ĠAnchor Pane Ġby Ġf xml () ĊĊĠĠĠ Ġprivate Ġval Ġtype : ĠTable Column < Entry , ĠString > Ġby Ġfx id () ĊĠĠĠ Ġprivate Ġval Ġname : ĠTable Column < Entry , ĠString > Ġ Ġby Ġfx id () ĊĠĠĠ Ġprivate Ġval Ġstatus : ĠLabel Ġby Ġfx id () ĊĉĊ ĉ val Ġfile Table : ĠTable View < Entry > Ġ Ġby Ġfx id () Ċ ĉ val Ġdate : ĠTable Column < Entry , ĠString > Ġ Ġby Ġfx id () Ċ ĉ val Ġpermissions : ĠTable Column < Entry , ĠString > Ġby Ġfx id () Ċ ĉ val ĠfilePath : ĠB read Cr umb Bar < Entry > Ġby Ġfx id () Ċ ĉ val Ġback : ĠButton Ġby Ġfx id () Ċ ĉ val Ġforward : ĠButton Ġby Ġfx id () Ċ ĉ val Ġrefresh : ĠButton Ġby Ġfx id () Ċ ĉ val Ġhome : ĠButton Ġby Ġfx id () ĊĉĊ ĉ init Ġ{ Ċĉ ĉ Start (). run () ĊĠĠĠĠĠĠĠ ĠRoot (). run () ĊĉĉĊĉ ĉ title Ġ= Ġ" Droid ĠExplorer " ĊĉĉĊĉ ĉ primary Stage . min Height Ġ= Ġ 3 0 0 . 0 Ċĉ ĉ primary Stage . min Width Ġ= Ġ 5 7 5 . 0 ĊĉĉĊĉ ĉ name . cell Value Factory Ġ= ĠProperty Value Factory (" name ") Ċĉ ĉ date . cell Value Factory Ġ= ĠProperty Value Factory (" date ") Ċĉ ĉ permissions . cell Value Factory Ġ= ĠProperty Value Factory (" permissions ") Ċĉ ĉ type . cell Value Factory Ġ= ĠProperty Value Factory (" type ") ĊĉĉĊĉ ĉ file Table . placeholder Ġ= ĠLabel (" This Ġfolder Ġis Ġempty .") ĊĉĉĊĉ ĉ stylesheets . add ( Css . MAIN ) Ċĉ ĉ primary Stage . icons . add ( Icons . FA V ICON . image ) ĊĉĉĊĉ ĉ back . graphic Ġ= ĠIcons . BACK Ċĉ ĉ forward . graphic Ġ= ĠIcons . FORWARD Ċĉ ĉ refresh . graphic Ġ= ĠIcons . REFRESH Ċĉ ĉ home . graphic Ġ= ĠIcons . HOME ĊĉĉĊĉ ĉ refresh . action Ġ= ĠFileSystem :: refresh Ċĉ ĉ home . action Ġ= ĠFileSystem . root :: navigate ĊĉĉĊĉ ĉ back . action Ġ= ĠFileSystem :: back Ċĉ ĉ forward . action Ġ= ĠFileSystem :: forward ĊĉĉĊĉ ĉ name . set Cell Factory Ġ{ ĠText Icon Cell () Ġ} ĊĉĉĊĉ ĉ file Table . on Mouse Clicked Ġ= ĠEventHandler < MouseEvent > Ġ{ Ġmouse Event Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mouse Event . click Count Ġ% Ġ 2 Ġ== Ġ 0 ) Ġ{ Ċĉĉĉ ĉ val Ġfile Ġ= Ġfile Table . selection Model . selected Item Ċĉĉĉ ĉ file ?. navigate () Ċĉĉ ĉ } Ċĉ ĉ } ĊĉĉĊĉ ĉ file Table . selection Model . selection Mode Ġ= ĠSelection Mode . MULTIPLE ĊĉĉĊĉ ĉ filePath . setOn Cr umb Action Ġ{ Ġit . selected Cr umb . value !!. navigate () Ġ} ĊĉĉĊĉ ĉ thread Ġ{ Ċĉĉ ĉ val Ġtimeline Ġ= ĠTimeline ( Key Frame ( Duration . ZERO , ĠEventHandler Ġ{ Ċĉĉĉ ĉ Device State (). run Ġ{ Ċĉĉĉĉ ĉ if Ġ( it Ġ== Ġ" unknown ") Ġ{ Ċĉĉĉĉĉ ĉ connected Ġ= Ġfalse Ċĉĉĉĉ ĉ } Ġelse Ġif Ġ(! connected Ġ&& Ġit Ġ== Ġ" device ") Ġ{ Ċĉĉĉĉĉ ĉ Device Serial (). run Ġ{ Ċĉĉĉĉĉĉ ĉ connected Ġ= Ġtrue Ċĉĉĉĉĉ ĉ } Ċĉĉĉĉ ĉ } Ċĉĉĉ ĉ } Ċĉĉ ĉ }), ĠKey Frame ( Duration . millis ( 2 5 0 . 0 ))) Ċĉĉ ĉ timeline . cycle Count Ġ= ĠAnimation . IN DEFIN ITE Ċĉĉ ĉ timeline . play () Ċĉ ĉ } Ċ ĉ } ĊĉĊ ĉ var Ġconnected : ĠBoolean Ġ= Ġfalse Ċĉ ĉ set ( value ) Ġ{ Ċĉĉ ĉ field Ġ= Ġvalue Ċĉĉ ĉ if Ġ(! connected ) Ġfile Table . items . clear () Ċĉĉ ĉ status . text Ġ= Ġif Ġ( connected ) Ġ" Connected " Ġelse Ġ" Disconnected " Ċĉĉ ĉ FileSystem . refresh () Ċĉ ĉ } Ċĉ Ċ } ĊĊ