package Ġcom . h end ra angg rian . open p ss . ui . invoice Ċ Ċ import Ġcom . h end ra angg rian . open p ss . Fx Component Ċ import Ġcom . h end ra angg rian . open p ss . R Ċ import Ġcom . h end ra angg rian . open p ss . R 2 Ċ import Ġcom . h end ra angg rian . open p ss . api . Open PSS Api Ċ import Ġcom . h end ra angg rian . open p ss . schema . Customer Ċ import Ġcom . h end ra angg rian . open p ss . ui . Result able Pop Over Ċ import Ġcom . h end ra angg rian . open p ss . ui . customer . Customer ListView Ċ import Ġjavafx . scene . control . ListView Ċ import Ġjavafx . scene . control . TextField Ċ import Ġjavafx . scene . input . KeyCode . ENTER Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġk tf x . collections . to Observable List Ċ import Ġk tf x . controls . isSelected Ċ import Ġk tf x . controls . not Selected Binding Ċ import Ġk tf x . coroutines . listener Ċ import Ġk tf x . coroutines . on Key Pressed Ċ import Ġk tf x . coroutines . on Mouse Clicked Ċ import Ġk tf x . inputs . is DoubleClick Ċ import Ġk tf x . j fo enix . layouts . j fx TextField Ċ import Ġk tf x . layouts . v box Ċ import Ġk tf x . to Binding Ċ Ċ class ĠSearch Customer Pop Over ( component : ĠF x Component ) Ġ: ĊĠĠĠ ĠResult able Pop Over < Customer >( component , ĠR 2 . string . search _ customer ) Ġ{ ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠITE MS _ PER _ PAGE Ġ= Ġ 1 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsearch Field : ĠTextField ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcustomer List : ĠListView < Customer > ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġv box Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Field Ġ= Ġj fx TextField Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprompt Text Ġ= ĠgetString ( R 2 . string . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustomer List Ġ= Ġadd Child ( Customer ListView (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpref Height Ġ= Ġ 2 6 2 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems Property (). bind ( search Field . text Property (). to Binding Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOpen PSS Api . get Customers ( it !! , Ġ 0 , ĠITE MS _ PER _ PAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. items ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( ITEMS _ PER _ PAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Observable List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems Property (). listener Ġ{ Ġ_, Ġ_, Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value . isNotEmpty ()) Ġselection Model . select First () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonMouse Clicked Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is DoubleClick () Ġ&& Ġcustomer List . selection Model . isSelected ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Button . fire () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Key Pressed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . code Ġ== ĠENTER Ġ&& Ġcustomer List . selection Model . isSelected ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Button . fire () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġtop Margin Ġget Double ( R . value . padding _ medium ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdefault Button . disable Property (). bind ( customer List . selection Model . not Selected Binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġnullable Result : ĠCustomer ? Ġget () Ġ= Ġcustomer List . selection Model . selected Item Ċ } Ċ