package Ġorg . wikipedia . diff Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . core . widget . do On TextChanged Ċ import Ġorg . wikipedia . R Ċ import Ġorg . wikipedia . databinding . Dialog Undo Edit Binding Ċ Ċ class ĠUndo Edit Dialog Ġconstructor ( context : ĠContext , Ġcallback : ĠCallback ) Ġ: ĠAlertDialog ( context ) Ġ{ ĊĠĠĠ Ġfun Ġinterface ĠCallback Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠonSuccess ( text : ĠCharSequence ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġbinding Ġ= ĠDialog Undo Edit Binding . inflate ( LayoutInflater . from ( context )) ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġwatcher : ĠText Watcher ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset View ( binding . root ) ĊĠĠĠĠĠĠĠ Ġbinding . textInput Container . isError Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġset Button ( BUTTON _ POSITIVE , Ġcontext . getString ( R . string . edit _ undo )) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Success ( binding . textInput . text . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Button ( BUTTON _ NEGATIVE , Ġcontext . getString ( R . string . text _ input _ dialog _ cancel _ button _ text )) Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĠĠĠĠĠĠĠ Ġcreate () ĊĠĠĠĠĠĠĠ Ġset Positive Button Enabled ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Positive Button Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Button ( BUTTON _ POSITIVE ). isEnabled Ġ= Ġenabled ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attached To Window () ĊĠĠĠĠĠĠĠ Ġwatcher Ġ= Ġbinding . textInput . do On TextChanged Ġ{ Ġtext , Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Positive Button Enabled (! text . isNull Or Blank ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () ĊĠĠĠĠĠĠĠ Ġbinding . textInput . remove TextChanged Listener ( watcher ) ĊĠĠĠ Ġ} Ċ } Ċ