package Ġcom . las olo z . tools . q pt . gui . launcher . component Ċ Ċ import Ġcom . google . inject . Inject Ċ import Ġcom . google . inject . name . Named Ċ import Ġcom . las olo z . tools . q pt . actions . Action Config Ċ import Ġcom . las olo z . tools . q pt . gui . category . Action Category Ċ import Ġcom . las olo z . tools . q pt . gui . category . Categor ized Action Configs Ċ import Ġcom . las olo z . tools . q pt . gui . launcher . component . results . Result Action Config Component Ċ import Ġcom . las olo z . tools . q pt . gui . launcher . component . results . Result Separator Component Ċ import Ġcom . las olo z . tools . q pt . gui . stage . Stage Shown State Ċ import Ġcom . las olo z . tools . q pt . gui . state . Launch Bar Event Ċ import Ġcom . las olo z . tools . q pt . gui . state . Launcher State Ċ import Ġcom . las olo z . tools . q pt . gui . util . Gui Constants . Injection . CATEG ORIZ ED _ ACTION _ CONFIG S _ NAME _ KEY Ċ import Ġcom . las olo z . tools . q pt . gui . util . Gui Constants . Injection . GUI _ OB SERV ABLE S _ NAME _ KEY Ċ import Ġcom . las olo z . tools . q pt . gui . util . Gui Observable s Ċ import Ġcom . las olo z . tools . q pt . injection s . Injector Util Ċ import Ġjavafx . application . Platform Ċ import Ġjavafx . f xml . FXML Ċ import Ġjavafx . f xml . Initial izable Ċ import Ġjavafx . scene . layout . V Box Ċ import Ġjava . net . URL Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠController Ġfor Ġsearch Ġresult Ġcomponent Ċ Ġ*/ Ċ class ĠSearch Results Controller Ġ: ĠInitial izable Ġ{ ĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġroot V Box : ĠV Box ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlauncher State : ĠLaunch er State ĊĊĠĠĠ Ġprivate Ġvar Ġresources : ĠResource Bundle ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġaction Config List Ġ= Ġmutable ListOf < Result Action Config Component >() ĊĠĠĠ Ġprivate Ġvar Ġselection Ġ= Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInject Ġcategor ized Ġaction Ġconfigs ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcategor ized Action Configs ĠAction Ġconfigurations Ġcategor ized ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġfun Ġinject Categor ized Action Configs ( ĊĠĠĠĠĠĠĠ Ġ@ Named ( CATEG ORIZ ED _ ACTION _ CONFIG S _ NAME _ KEY ) Ġcategor ized Action Configs : ĠCategor ized Action Configs ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcategor ized Action Configs . observe Categor ized Actions (). subscribe Ġ{ Ġaction Categories Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform . run Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot V Box . children . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Config List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Categories . forEach ( this :: process Category ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect Current () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInject ĠGUI Ġobservable s Ġfor Ġevent Ġprocessing ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġgui Observable s ĠGUI Ġobservable s ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġfun Ġinject Gui Observable s (@ Named ( GUI _ OB SERV ABLE S _ NAME _ KEY ) Ġgui Observable s : ĠGui Observable s ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgui Observable s . observe Launch Bar Event (). subscribe Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLaunch Bar Event . PREVIOUS Ġ-> Ġselect Previous () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLaunch Bar Event . NEXT Ġ-> Ġselect Next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLaunch Bar Event . SELECT Ġ-> Ġcall Selection () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInject Ġlauncher Ġstate ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlauncher State ĠInject ed Ġlauncher Ġstate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġfun Ġinject Launcher State ( launcher State : ĠLaunch er State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . launcher State Ġ= Ġlauncher State ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinitialize ( location : ĠURL ?, Ġresources : ĠResource Bundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . resources Ġ= Ġresources ĊĠĠĠĠĠĠĠ ĠInject or Util . get Injector (). inject Members ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess Category ( action Category : ĠAction Category ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( action Category . action Configs . any () Ġ|| Ġaction Category . render If Missing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Category Separator ( action Category . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġaction Category . action Configs . forEach ( this :: process Action Config ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Category Separator ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠResult Separator Component ( resources ?. getString ( name ) Ġ?: Ġname ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot V Box . children . add ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess Action Config ( action Config : ĠAction Config ) Ġ{ ĊĠĠĠĠĠĠĠ ĠResult Action Config Component ( action Config ). let Ġ{ Ġcomponent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot V Box . children . add ( component ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Config List . add ( component ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġselect Next () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( actions Present ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġde select Current () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection Ġ= Ġ( selection Ġ+ Ġ 1 ) Ġ% Ġaction Config List . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect Current () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġselect Previous () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( actions Present ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġde select Current () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection Ġ= ĠMath . floor Mod ( selection Ġ- Ġ 1 , Ġaction Config List . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect Current () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġselect Current () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( actions Present ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Config List [ selection ]. select Action () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġde select Current () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( actions Present ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Config List [ selection ]. de select Action () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcall Selection () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( actions Present ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Config List [ selection ]. perform Action () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlauncher State . set Shown State ( Stage Shown State . HIDDEN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġactions Present (): ĠBoolean Ġ= Ġaction Config List . isNotEmpty () Ċ } Ċ