package Ġnl . jh vh . s udoku . grid . model . segment Ċ Ċ /* ĠCopyright Ġ 2 0 2 0 ĠJan - H end rik Ġvan ĠHe us den ĊĊĠĠ Ġ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 . Ċ Ġ*/ Ċ Ċ import Ġnl . jh vh . s udoku . grid . event . Value Event Ċ import Ġnl . jh vh . s udoku . grid . event . Value EventListener Ċ import Ġnl . jh vh . s udoku . grid . event . cell value . Cell Remove Candidates Event Ċ import Ġnl . jh vh . s udoku . grid . event . cell value . Set CellValue Event Ċ import Ġnl . jh vh . s udoku . grid . model . Grid Ċ import Ġnl . jh vh . s udoku . grid . model . Grid Element Ċ import Ġnl . jh vh . s udoku . grid . model . cell . Cell Ċ import Ġnl . jh vh . s udoku . grid . model . cell . CellValue Ċ import Ġnl . jh vh . s udoku . util . log Ċ Ċ /** Ċ Ġ* ĠA Ġ[ Grid Segment ] Ġis Ġan Ġabstraction Ġ( super Ġclass ) Ġof Ġthe Ġcollections Ġof Ġ[ Cell ] s Ġthat Ġeach , Ġwhen Ġsolved , Ċ Ġ* Ġcontain Ġall Ġdefined Ġvalues Ġof Ġthe ĠS udoku . Ċ Ġ* Ċ Ġ* ĠConcrete Ġsubclasses Ġare Ġ[ Col ] Ġ( column ), Ġ[ Row ] Ġand Ġ[ Block ]. Ċ Ġ* Ċ Ġ* ĠA Ġfunctional Ġsyn onym Ġfor Ġ[ Grid Segment ] Ġis Ġ** Group **. Ċ Ġ*/ Ċ abstract Ġclass ĠGrid Segment Ġ( grid : ĠGrid ) Ġ: ĠGrid Element ( grid ), ĠValue EventListener Ġ{ ĊĊĠĠĠ Ġabstract Ġval Ġcells : ĠSet < Cell > ĊĊĠĠĠ Ġoverride Ġfun Ġon Event ( value Event : ĠValue Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog (). trace Ġ{ Ġ"$ this Ġreceived Ġevent : Ġ$ value Event " Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! cells . contains ( value Event . event Source . cell )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnot Ġexpected Ġto Ġbe Ġcalled , Ġso Ġwarning : ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġit Ġwould Ġmean Ġwe Ġsubscribed Ġto Ġevents Ġoutside Ġthe Ġsegment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog (). warn Ġ{ Ġ" Only Ġevents Ġfrom Ġ${ CellValue :: class . simple Name } s Ġwithin Ġthe Ġ${ Grid Segment :: class . simple Name }" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġshould Ġbe Ġhandled Ġby Ġ$ this ; Ġevent =$ value Event " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhen Ġ( value Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSet CellValue Event Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid . handle Set CellValue Event ( value Event , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCell Remove Candidates Event Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid . handle Remove Candidates Event ( value Event , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnot Ġexpected Ġto Ġbe Ġcalled , Ġso Ġwarning : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġit Ġwould Ġmean Ġwe Ġsubscribed Ġto Ġan Ġevent Ġtype Ġthat Ġwe Ġare Ġnot Ġwilling Ġto Ġhandle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (). warn Ġ{ Ġ" Unhandled Ġevent Ġtype : Ġ${ value Event . java Class . simple Name }; Ġevent =$ value Event ; Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Grid Segment :: class . simple Name } =$ this " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ /** ĠAb straction Ġfor Ġ[ Grid Segment ] Ġsubclasses Ġ[ Col ] Ġ( column ) Ġand Ġ[ Row ] Ġ*/ Ċ abstract Ġclass ĠLinear Segment ( grid : ĠGrid ) Ġ: ĠGrid Segment ( grid ) Ċ Ċ /** ĠAb straction Ġfor Ġ[ Grid Segment ] Ġsubclass Ġ[ Block ] Ġ*/ Ċ abstract Ġclass ĠSquare Segment ( grid : ĠGrid ) Ġ: ĠGrid Segment ( grid ) Ċ