// ĠCopyright Ġ 2 0 1 9 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ // ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ package Ġsoftware . aws . tool k its . jetbrains . core . stack Ċ Ċ import Ġcom . intellij . openapi . Disposable Ċ import Ġjava . awt . Flow Layout Ċ import Ġjavax . swing . JButton Ċ import Ġjavax . swing . JPanel Ċ import Ġjavax . swing . Swing Utilities Ċ Ċ /** Ċ Ġ* ĠNext / Prev Ġ[ Page ] Ġbuttons Ċ Ġ* Ġ[ on Page Button Click ] Ġcalled Ġwhen Ġuser Ġclicks Ġpage Ċ Ġ*/ Ċ class ĠPage Buttons ( private Ġval Ġon Page Button Click : Ġ( Page ) Ġ-> ĠUnit ) Ġ: ĠDis posable Ġ{ ĊĠĠĠ Ġprivate Ġval Ġbuttons Ġ= ĠPage . values (). map Ġ{ Ġpage Ġ-> ĊĠĠĠĠĠĠĠ Ġpage Ġto ĠJButton ( page . icon ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ActionListener Ġ{ Ġon Page Button Click ( page ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. toMap () ĊĠĠĠ Ġval Ġcomponent Ġ= ĠJPanel ( Flow Layout ( Flow Layout . RIGHT )). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġbuttons . values . forEach Ġ{ Ġadd ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ available Pages ] Ġonly Ġenable Ġthese Ġpages ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Pages Available ( available Pages : ĠSet < Page >) Ġ{ ĊĠĠĠĠĠĠĠ Ġassert ( Swing Utilities . is Event Dispatch Thread ()) ĊĠĠĠĠĠĠĠ Ġbuttons . forEach Ġ{ Ġit . value . isEnabled Ġ= Ġit . key Ġin Ġavailable Pages Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġbuttons . values . forEach Ġ{ Ġbutton Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . action Listeners . forEach Ġ{ Ġlistener Ġ-> Ġbutton . remove ActionListener ( listener ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }