package Ġnet . app tr onic . core . android . view model . view Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġnet . app tr onic . core . android . view model . View Binder Ċ import Ġnet . app tr onic . core . view model . I ViewModel Ċ Ċ interface ĠDialog View Adapter Ġ: ĠView Adapter Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġ[ Dialog ] Ġwhich Ġshould Ġshow Ġ[ View ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠonCreate Dialog ( ĊĠĠĠĠĠĠĠ ĠviewModel : ĠI ViewModel , ĊĠĠĠĠĠĠĠ Ġview Binder : ĠView Binder <* >, ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext ĊĠĠĠ Ġ): ĠDialog Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDialog ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġ[ View ] Ġfor Ġ[ Dialog ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠonCreate Dialog View ( ĊĠĠĠĠĠĠĠ ĠviewModel : ĠI ViewModel , ĊĠĠĠĠĠĠĠ Ġview Binder : ĠView Binder <* >, ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġview Binder . onCreate View ( view Binder , Ġcontext , ĠLayoutInflater . from ( context ), Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAttach Ġ[ View ] Ġto Ġ[ dialog ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Attach Dialog View ( ĊĠĠĠĠĠĠĠ ĠviewModel : ĠI ViewModel , ĊĠĠĠĠĠĠĠ Ġview Binder : ĠView Binder <* >, ĊĠĠĠĠĠĠĠ Ġdialog : ĠDialog , ĊĠĠĠĠĠĠĠ Ġview : ĠView ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog . set ContentView ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon ShowDialog ( viewModel : ĠI ViewModel , Ġview Binder : ĠView Binder <* >, Ġdialog : ĠDialog ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Dismiss Dialog ( viewModel : ĠI ViewModel , Ġview Binder : ĠView Binder <* >, Ġdialog : ĠDialog ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġ[ dialog ] Ġfor Ġ[ viewModel ] Ġis Ġshown . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠMay Ġbe Ġcalled Ġmany Ġtimes Ġafter Ġsave / restore Ġ[ View ] Ġin Ġcase Ġof Ġ[ Activity ] Ġre creation . ĠEach ĊĠĠĠĠ Ġ* Ġtime Ġnew Ġinstance Ġof Ġ[ dialog ] Ġis Ġcreated Ġfor Ġsame Ġ[ viewModel ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Dialog Shown ( viewModel : ĠI ViewModel , Ġview Binder : ĠView Binder <* >, Ġdialog : ĠDialog ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog . setOn Dismiss Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( viewModel . is Bound ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . close Self () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }