/** čĊ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠMay ank ĠS ind w ani čĊ Ġ* čĊ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); čĊ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . čĊ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat čĊ Ġ* čĊ Ġ* ĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 čĊ Ġ* čĊ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware čĊ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , čĊ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . čĊ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand čĊ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . čĊ Ġ*/ č Ċ package Ġcom . ms ind wan . sh oe box . widgets čĊč Ċ import Ġandroid . app . Dialog č Ċ import Ġandroid . content . Context č Ċ import Ġandroid . util . Attribute Set č Ċ import Ġandroid . widget . Button č Ċ import Ġandroid . widget . Number Picker č Ċ import Ġandroid . widget . TextView č Ċ import Ġcom . ms ind wan . sh oe box . R č Ċ import Ġorg . th reet en . bp . LocalDate čĊčĊč Ċ /** čĊ Ġ* ĠYear Ġselector Ġcomponent . čĊ Ġ*/ č Ċ class ĠNumber Selector Ġ: ĠTextView Ġ{ čĊĠĠĠ Ġvar Ġvalue Ġ= ĠLocalDate . now (). year čĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġvalue . toString () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġvar ĠmaxValue : ĠInt Ġ= Ġvalue Ġ+ Ġ 1 0 0 čĊĠĠĠ Ġvar Ġmin Value : ĠInt Ġ= Ġ( value Ġ- Ġ 1 0 0 ). coerce At Least ( 0 ) čĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue . coerce At Least ( 0 ) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġvar Ġon Year Selected : Ġ(( year : ĠInt ) Ġ-> ĠUnit )? Ġ= Ġnull čĊĠĠĠ Ġvar Ġtitle : ĠString ? Ġ= Ġnull čĊčĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ čĊĠĠĠĠĠĠĠ Ġsetup () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattribute Set : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattribute Set ) Ġ{ čĊĠĠĠĠĠĠĠ Ġsetup () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠInitializes Ġthe Ġview . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġprivate Ġfun Ġsetup () Ġ{ čĊĠĠĠĠĠĠĠ Ġset OnClickListener ( on Selector Click ) čĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġvalue . toString () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠHandles Ġclicking Ġon Ġthe Ġselector . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġprivate Ġval Ġon Selector Click Ġ= ĠOn ClickListener Ġ{ čĊĠĠĠĠĠĠĠ Ġ// ĠInitialize Ġthe Ġdialog Ġto Ġselect Ġa Ġyear . čĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠDialog ( context ) čĊĠĠĠĠĠĠĠ Ġdialog . set ContentView ( R . layout . number _ selector _ dialog ) čĊĠĠĠĠĠĠĠ Ġval Ġpicker Ġ= Ġdialog . findViewById < Number Picker >( R . id . number _ selector _ dialog _ number _ picker ) čĊĠĠĠĠĠĠĠ Ġval Ġbtn Ok Ġ= Ġdialog . findViewById < Button >( R . id . number _ selector _ dialog _ btn _ ok ) čĊĠĠĠĠĠĠĠ Ġval Ġbtn Cancel Ġ= Ġdialog . findViewById < Button >( R . id . number _ selector _ dialog _ btn _ cancel ) čĊĠĠĠĠĠĠĠ Ġval Ġtxt Title Ġ= Ġdialog . findViewById < TextView >( R . id . number _ selector _ dialog _ txt _ title ) čĊčĊĠĠĠĠĠĠĠ Ġtxt Title . text Ġ= Ġtitle čĊčĊĠĠĠĠĠĠĠ Ġbtn Ok . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġpicker . value . toString () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Year Selected ?. invoke ( picker . value ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġbtn Cancel . setOnClickListener Ġ{ Ġdialog . dismiss () Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ// ĠInitialize Ġthe Ġyear Ġpicker Ġto Ġthe Ġexisting Ġvalue Ġconstraints . čĊĠĠĠĠĠĠĠ Ġpicker . max Value Ġ= ĠmaxValue čĊĠĠĠĠĠĠĠ Ġpicker . min Value Ġ= Ġmin Value čĊĠĠĠĠĠĠĠ Ġpicker . wrap Selector Wheel Ġ= Ġfalse čĊĠĠĠĠĠĠĠ Ġpicker . value Ġ= Ġvalue čĊĠĠĠĠĠĠĠ Ġdialog . show () čĊĠĠĠ Ġ} č Ċ }