package Ġcom . gi ye ok . pass zero 2 . ui Ċ Ċ import Ġcom . gi ye ok . pass zero 2 . core . Session Secret Ċ import Ġd ork box . system Tray . MenuItem Ċ import Ġd ork box . system Tray . System Tray Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġjavafx . application . Application Ċ import Ġjavafx . application . Platform Ċ import Ġjavafx . scene . Parent Ċ import Ġjavafx . scene . Scene Ċ import Ġjavafx . scene . control . Alert Ċ import Ġjavafx . scene . layout . Stack Pane Ċ import Ġjavafx . stage . Stage Ċ import Ġjava . awt . Image Ċ import Ġjava . awt . Toolkit Ċ import Ġjava . io . File Ċ import Ġjavax . image io . Image IO Ċ Ċ open Ġclass ĠString Registry Ġ: Ġ( String ) Ġ-> ĠString Ġ{ ĊĠ Ġoverride Ġfun Ġinvoke ( key : ĠString ): ĠString Ġ= Ġget ( key ) ĊĊĠ Ġfun Ġget ( key : ĠString ): ĠString Ġ= Ġkey Ċ } Ċ Ċ class ĠUi Config ( string Registry : ĠString Registry , Ġval Ġlocal Info File : ĠFile ) Ġ{ ĊĠ Ġval Ġs Ġ= Ġstring Registry ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġval Ġdefault Ġ= ĠUi Config ( String Registry (), ĠFile ("./ local Info . p 0 ")) ĊĠ Ġ} Ċ } Ċ Ċ class ĠUi Main ( val Ġconfig : ĠUi Config ) Ġ: ĠApplication () Ġ{ ĊĠ Ġconstructor () Ġ: Ġthis ( Ui Config . default ) ĊĊĠ Ġprivate Ġlateinit Ġvar Ġprimary Stage : ĠStage ĊĠ Ġprivate Ġlateinit Ġvar Ġlocked Icon : ĠImage ĊĠ Ġprivate Ġlateinit Ġvar Ġun locked Icon : ĠImage ĊĠ Ġprivate Ġlateinit Ġvar Ġsystem Tray : ĠSystem Tray ĊĊĠ Ġprivate Ġval Ġroot Stack Pane Ġ= ĠStack Pane () ĊĊĠ Ġoverride Ġfun Ġstart ( primary Stage : ĠStage ) Ġ{ ĊĠĠĠ Ġthis . primary Stage Ġ= Ġprimary Stage ĊĠĠĠ ĠPlatform . set Implicit Exit ( false ) ĊĠĠĠ Ġif Ġ( init Tray Icon ()) Ġ{ ĊĠĠĠĠĠ Ġstart Main Ui () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġinit Tray Icon (): ĠBoolean Ġ{ ĊĠĠĠ ĠToolkit . getDefault Toolkit () ĊĊĠĠĠ Ġval Ġsystem Tray Ġ= ĠSystem Tray . get () ĊĠĠĠ Ġif Ġ( system Tray Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġshow Message ( ĊĠĠĠĠĠĠĠ ĠAlert . Alert Type . ERROR , Ġconfig . s (" Error "), ĊĠĠĠĠĠĠĠ Ġconfig . s (" System Ġtr ay Ġis Ġnot Ġsupported Ġby Ġcurrent Ġplatform ") ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ ĠPlatform . exit () ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġthis . system Tray Ġ= Ġsystem Tray ĊĠĠĠ Ġsystem Tray . install Shutdown Hook () ĊĊĠĠĠ Ġthis . locked Icon Ġ= ĠImage IO . read ( java Class . getResource ("/ locked . png ")) ĊĠĠĠ Ġthis . unlocked Icon Ġ= ĠImage IO . read ( java Class . getResource ("/ unlocked . png ")) ĊĠĠĠ Ġthis . system Tray . setImage ( locked Icon ) ĊĊĠĠĠ Ġval Ġtr ay Menu Ġ= Ġthis . system Tray . menu ĊĠĠĠ Ġtr ay Menu . add ( MenuItem (" Open ĠUI ") Ġ{ ĠPlatform . run Later Ġ{ Ġthis . show Primary Stage () Ġ} Ġ}) ĊĠĠĠ Ġtr ay Menu . add ( MenuItem (" Close ĠSession ") Ġ{ ĠPlatform . run Later Ġ{ Ġthis . close Session () Ġ} Ġ}) ĊĠĠĠ Ġtr ay Menu . add ( MenuItem (" Quit ") Ġ{ ĠPlatform . exit () Ġ}) ĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} ĊĊĠ Ġfun Ġshow Message ( alert Type : ĠAlert . Alert Type , Ġtitle : ĠString , Ġtext : ĠString ) Ġ{ ĊĠĠĠ ĠPlatform . run Later Ġ{ ĊĠĠĠĠĠ Ġval Ġalert Ġ= ĠAlert ( alert Type ) ĊĠĠĠĠĠ Ġalert . title Ġ= Ġtitle ĊĠĠĠĠĠ Ġalert . content Text Ġ= Ġtext ĊĠĠĠĠĠ Ġalert . show And Wait () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġshow Primary Stage () Ġ{ ĊĠĠĠ Ġprimary Stage . show () ĊĠĠĠ Ġprimary Stage . to Front () ĊĠĠĠ Ġprimary Stage . request Focus () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġstart Main Ui () Ġ{ ĊĠĠĠ Ġprimary Stage . title Ġ= Ġconfig . s (" Pass zero ") ĊĊĠĠĠ Ġprimary Stage . scene Ġ= ĠScene ( root Stack Pane , Ġ 6 0 0 . 0 , Ġ 4 8 0 . 0 ) ĊĠĠĠ Ġprimary Stage . x Ġ= Ġ 1 0 0 . 0 ĊĠĠĠ Ġprimary Stage . y Ġ= Ġ 8 0 . 0 ĊĊĠĠĠ Ġif Ġ( config . local Info File . isFile Ġ&& Ġconfig . local Info File . exists ()) Ġ{ ĊĠĠĠĠĠ Ġswitch Ui ( Master Password Ui ( this ). view Root (), Ġtrue ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġswitch Ui ( Initialization Ui ( this ). view Root (), Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġshow Primary Stage () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġswitch Ui ( root : ĠParent , Ġlocked Tray Icon : ĠBoolean ) Ġ{ ĊĠĠĠ Ġroot Stack Pane . children . clear () ĊĠĠĠ Ġroot Stack Pane . children . add ( root ) ĊĠ Ġ} ĊĊĠ Ġfun Ġinit Session ( session Secret : ĠSession Secret ) Ġ{ ĊĠĠĠ ĠPlatform . run Later Ġ{ ĊĠĠĠĠĠ Ġval Ġpassword List Ui Ġ= ĠPassword List Ui ( this , Ġsession Secret , ĠS chedulers . computation ()) ĊĠĠĠĠĠ Ġval Ġview Root Ġ= Ġpassword List Ui . view Root () ĊĠĠĠĠĠ Ġpassword List Ui . start () ĊĠĠĠĠĠ Ġthis . system Tray . setImage ( unlocked Icon ) ĊĠĠĠĠĠ Ġswitch Ui ( view Root , Ġfalse ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġclose Session () Ġ{ ĊĠĠĠ Ġstart Main Ui () ĊĠ Ġ} Ċ } Ċ Ċ object ĠMain Ġ{ ĊĠ Ġ@ Jvm Static ĊĠ Ġfun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ ĠApplication . launch ( Ui Main :: class . java , Ġ* args ) ĊĠĠĠ ĠSystem . exit ( 0 ) ĊĠ Ġ} Ċ } Ċ