package Ġcom . h jq . demo . ui . dialog Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . TextView . On Editor ActionListener Ċ import Ġandroidx . annotation . String Res Ċ import Ġcom . h jq . base . Base Dialog Ċ import Ġcom . h jq . demo . R Ċ import Ġcom . h jq . demo . aop . Single Click Ċ import Ġcom . h jq . widget . view . Regex EditText Ċ Ċ /** Ċ Ġ* ĠĠĠ Ġauthor Ġ: ĠAndroid Ġ è½® åŃĲ åĵ ¥ Ċ Ġ* ĠĠĠ Ġgithub Ġ: Ġhttps :// github . com / getActivity / Android Project - Kotlin Ċ Ġ* ĠĠĠ Ġtime ĠĠ Ġ: Ġ 2 0 1 9 / 0 2 / 2 7 Ċ Ġ* ĠĠĠ Ġdesc ĠĠ Ġ: Ġ è¾ĵåħ¥ å¯¹ è¯Ŀ æ¡Ĩ Ċ Ġ*/ Ċ class ĠInput Dialog Ġ{ ĊĊĠĠĠ Ġclass ĠBuilder ( context : ĠContext ) Ġ: ĠCommon Dialog . Builder < Builder >( context ), ĊĠĠĠĠĠĠĠ ĠBase Dialog . On Show Listener , ĠOn Editor ActionListener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġinput View : ĠRegex EditText ? Ġby Ġlazy Ġ{ ĠfindViewById ( R . id . tv _ input _ message ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlistener : ĠOn Listener ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Custom View ( R . layout . input _ dialog ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput View ?. setOn Editor ActionListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd On Show Listener ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Hint (@ String Res Ġid : ĠInt ): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Hint ( getString ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Hint ( text : ĠCharSequence ?): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput View ?. hint Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Content (@ String Res Ġid : ĠInt ): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Content ( getString ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Content ( text : ĠCharSequence ?): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput View ?. setText ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditable Ġ= Ġinput View ?. text Ġ?: Ġreturn @ apply ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġeditable . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ apply ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput View ?. request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput View ?. setSelection ( index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Input Regex ( regex : ĠString ?): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput View ?. setInput Regex ( regex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Listener ( listener : ĠOn Listener ?): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ Base Dialog . On Show Listener ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Show ( dialog : ĠBase Dialog ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ({ Ġshow Keyboard ( input View ) Ġ}, Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Single Click ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( view . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . tv _ ui _ confirm Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Confirm ( get Dialog (), Ġinput View ?. text ?. toString () Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . tv _ ui _ cancel Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Cancel ( get Dialog ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ TextView . On Editor ActionListener ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Editor Action ( v : ĠTextView ?, Ġaction Id : ĠInt , Ġevent : ĠKeyEvent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠEditor Info . IME _ ACTION _ DONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . tv _ ui _ confirm )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæ¨¡ æĭŁ çĤ¹åĩ» ç¡®è®¤ æĮīéĴ® ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Listener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ çĤ¹åĩ» ç¡®å®ļ æĹ¶ åĽŀè°ĥ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġon Confirm ( dialog : ĠBase Dialog ?, Ġcontent : ĠString ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ çĤ¹åĩ» åıĸæ¶Ī æĹ¶ åĽŀè°ĥ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġon Cancel ( dialog : ĠBase Dialog ?) Ġ{} ĊĠĠĠ Ġ} Ċ }