package Ġby . es as . tools . checking Ċ Ċ import Ġby . es as . tools . checker . Base Check Ċ import Ġby . es as . tools . checker . Checking Ċ import Ġby . es as . tools . checker . IF ocus able Checking Ċ import Ġby . es as . tools . checker . I Request Focus Handler Ċ import Ġby . es as . tools . checker . checks . NotEmpty Check Ċ import Ġby . es as . tools . input field view . Input Field View Ċ import Ġjava . lang . ref . Weak Reference Ċ Ċ class ĠField Checking ( view : ĠInput Field View ) Ġ: ĠChecking (), ĠIF ocus able Checking Ġ{ ĊĠĠĠ Ġprivate Ġval Ġfield : ĠWeak Reference < Input Field View > Ġ= ĠWeak Reference ( view ) ĊĠĠĠ Ġoverride Ġvar Ġnot Empty Rule : ĠNot Empty Check ? Ġ= ĠNot Empty Check (" Can \' t Ġbe Ġempty ") ĊĠĠĠ Ġoverride Ġvar Ġcheck Empty : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġvar Ġfocus Handler : ĠI Request Focus Handler ? Ġ= Ġobject Ġ: ĠI Request Focus Handler Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Request Focus () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield . get ()?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Text ?. request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Request Focus Handler ( handler : ĠI Request Focus Handler ): ĠField Checking Ġ{ ĊĠĠĠĠĠĠĠ Ġfocus Handler Ġ= Ġhandler ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( view : ĠInput Field View , Ġcheck Empty : ĠBoolean ) Ġ: Ġthis ( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . check Empty Ġ= Ġcheck Empty ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcheck Field ( setError : ĠBoolean , Ġerror Getter : ĠBase Check . Error Getter ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġfield . get ()?. let Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( setError ) Ġview . setError ( null ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext : ĠString Ġ= Ġview . getText () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Base Check >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check Empty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnot Empty Rule ?. let Ġ{ Ġlist . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( checks ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . forEach Ġ{ Ġrule Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! rule . check ( text )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( setError ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setError ( rule . getError ( view . context , Ġerror Getter )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrequest Focus () Ġ{ ĊĠĠĠĠĠĠĠ Ġfocus Handler ?. handle Request Focus () ĊĠĠĠ Ġ} Ċ }