/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠPat rick ĠGold inger Ċ Ġ* Ċ Ġ* Ġ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 Ġdev . pat rick gold . fl or is board . ime . popup Ċ Ċ import Ġdev . pat rick gold . fl or is board . ime . text . key . Key Hint Mode Ċ Ċ /** Ċ Ġ* ĠA Ġpopup Ġset Ġfor Ġa Ġsingle Ġkey . ĠThis Ġset Ġdescribes , Ġif Ġthe Ġkey Ġhas Ġa Ġ[ hint ] Ġcharacter , Ċ Ġ* Ġa Ġ[ main ] Ġcharacter Ġand Ġother Ġ[ relevant ] Ġpop ups . Ċ Ġ* Ċ Ġ* ĠNote , Ġthat Ġa Ġhint Ġcharacter Ġshould Ġ** never ** Ġbe Ġset Ġin Ġa Ġjson Ġextended Ġpopup Ġfile , Ġrather Ġit Ċ Ġ* Ġshould Ġonly Ġbe Ġdynamically Ġset Ġby Ġthe ĠLayout Manager . Ċ Ġ* Ċ Ġ* ĠThe Ġorder Ġin Ġwhich Ġthese Ġdefined Ġpop ups Ġwill Ġbe Ġshown Ġdepends Ġon Ġthe Ġcurrent Ġ[ Key Hint Mode ], Ċ Ġ* Ġal Ġwell Ġas Ġthe Ġcalculations Ġmade Ġby Ġthe ĠKey Popup Manager . Ċ Ġ* Ċ Ġ* ĠThe Ġpopup Ġset Ġcan Ġbe Ġaccessed Ġlike Ġan Ġarray Ġwith Ġthe Ġaddition Ġthat Ġnegative Ġindexes Ġdefined Ċ Ġ* Ġwithin Ġthis Ġcompanion Ġobject Ġare Ġallowed Ġ( as Ġlong Ġas Ġthe Ġcorresponding Ġ[ hint ] Ġor Ġ[ main ] Ċ Ġ* Ġcharacter Ġis Ġ* not * Ġnull ). Ċ Ġ*/ Ċ class ĠPopup Set < T > Ġ( ĊĠĠĠ Ġvar Ġhint : ĠT ? Ġ= Ġnull , ĊĠĠĠ Ġvar Ġmain : ĠT ? Ġ= Ġnull , ĊĠĠĠ Ġvar Ġrelevant : ĠList < T > Ġ= ĠlistOf () Ċ ) Ġ: ĠCollection < T > Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠH INT _ INDEX : ĠInt Ġ= Ġ- 2 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMAIN _ INDEX : ĠInt Ġ= Ġ- 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġsize : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( hint Ġ!= Ġnull ) Ġ{ Ġ 1 Ġ} Ġelse Ġ{ Ġ 0 Ġ} Ġ+ Ġif Ġ( main Ġ!= Ġnull ) Ġ{ Ġ 1 Ġ} Ġelse Ġ{ Ġ 0 Ġ} Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelevant . size ĊĊĠĠĠ Ġfun Ġsize ( key Hint Mode : ĠKey Hint Mode ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( key Hint Mode Ġ== ĠKey Hint Mode . DISABLED Ġ&& Ġhint Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġget ( index : ĠInt ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġget OrNull ( index ) ĊĠĠĠĠĠĠĠ Ġif Ġ( item Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIndex OutOfBoundsException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Specified Ġindex Ġ$ index Ġis Ġnot Ġan Ġvalid Ġentry Ġin Ġthis ĠPopup Set !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitem ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget OrNull ( index : ĠInt ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ>= Ġrelevant . size Ġ|| Ġindex Ġ< ĠH INT _ INDEX ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH INT _ INDEX Ġ-> Ġhint ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMAIN _ INDEX Ġ-> Ġmain ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġrelevant . get OrNull ( index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcontains ( element : ĠT ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhint Ġ== Ġelement Ġ|| Ġmain Ġ== Ġelement Ġ|| Ġrelevant . contains ( element ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcontains All ( elements : ĠCollection < T >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( element Ġin Ġelements ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! contains ( element )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġiterator (): ĠIterator < T > Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠisEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsize Ġ== Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmerge ( other : ĠPopup Set < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtemp Re levant Ġ= Ġrelevant . to Mutable List () ĊĠĠĠĠĠĠĠ Ġtemp Re levant . addAll ( other . relevant ) ĊĠĠĠĠĠĠĠ Ġother . hint ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hint Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhint Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Re levant . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġother . main ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( main Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Re levant . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrelevant Ġ= Ġtemp Re levant . toList () ĊĠĠĠ Ġ} Ċ } Ċ