/* Ċ Ġ* ĠĠĠ ĠCopyright Ġ 2 0 2 1 ĠThe ĠBoard Game Work ĠAuthors Ċ Ġ* ĠĠĠ ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ Ġ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 . Ċ Ġ*/ Ċ Ċ @ file : Suppress (" unused ", Ġ" Member Visibility Can Be Private ") Ċ Ċ package Ġtools . a qua . bg w . components . u ic omp onent s Ċ Ċ import Ġtools . a qua . bg w . core . DEFAULT _ COM BO BOX _ HEIGHT Ċ import Ġtools . a qua . bg w . core . DEFAULT _ COM BO BOX _ WIDTH Ċ import Ġtools . a qua . bg w . observable . Observable ArrayList Ċ import Ġtools . a qua . bg w . observable . Observable List Ċ import Ġtools . a qua . bg w . observable . properties . Property Ċ import Ġtools . a qua . bg w . util . Font Ċ import Ġtools . a qua . bg w . visual . Visual Ċ Ċ /** Ċ Ġ* ĠA Ġstandard Ġ[ ComboBox ] Ġthat Ġmay Ġbe Ġpopulated Ġwith Ġitems Ġof Ġspecified Ġtype Ġparameter . Ċ Ġ* Ċ Ġ* ĠThe Ġ[ format Function ] Ġis Ġused Ġto Ġgain Ġa ĠString Ġrepresentation Ġof Ġeach Ġitem . Ċ Ġ* ĠIf Ġno Ġ[ format Function ] Ġis Ġspecified Ġthe Ġ[ toString ] Ġfunction Ġgets Ġused Ġinstead . Ċ Ġ* Ċ Ġ* ĠWh enever Ġthe Ġuser Ġselects Ġan Ġitem , Ġthe Ġ[ selected ItemProperty ] Ġgets Ġupdated . Ċ Ġ* Ċ Ġ* Ġ@ constructor ĠCreates Ġa Ġ[ ComboBox ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġpos X ĠHorizontal Ġcoordinate Ġfor Ġthis Ġ[ ComboBox ]. ĠDefault : Ġ 0 . Ċ Ġ* Ġ@ param Ġpos Y ĠVertical Ġcoordinate Ġfor Ġthis Ġ[ ComboBox ]. ĠDefault : Ġ 0 . Ċ Ġ* Ġ@ param Ġwidth ĠWidth Ġfor Ġthis Ġ[ ComboBox ]. ĠDefault : Ġ[ DEFAULT _ COM BO BOX _ WIDTH ]. Ċ Ġ* Ġ@ param Ġheight ĠHeight Ġfor Ġthis Ġ[ ComboBox ]. ĠDefault : Ġ[ DEFAULT _ COM BO BOX _ HEIGHT ]. Ċ Ġ* Ġ@ param Ġprompt ĠPrompt Ġfor Ġthis Ġ[ ComboBox ]. ĠThis Ġgets Ġdisplayed Ġas Ġa Ġprompt Ġto Ġthe Ġuser Ġwhenever Ġthe Ċ Ġ* Ġ[ selected ItemProperty ] Ġvalue Ġis Ġ` null `. Default : Ġempty Ġstring . Ċ Ġ* Ġ@ param Ġfont Ġ[ Font ] Ġto Ġbe Ġused Ġfor Ġthe Ġoptions . ĠDefault : Ġdefault Ġ[ Font ] Ġconstructor . Ċ Ġ* Ġ@ param Ġitems ĠThe Ġinitial Ġselection Ġof Ġitems . ĠDefault : Ġempty Ġlist . Ċ Ġ* Ġ@ param Ġformat Function ĠThe Ġformat Function Ġthat Ġis Ġused Ġto Ġrepresent Ġthe Ġitems . ĠDefault : Ġ` null `. Ċ Ġ*/ Ċ open Ġclass ĠCombo Box < T >( Ċ ĉ pos X : ĠNumber Ġ= Ġ 0 , Ċ ĉ pos Y : ĠNumber Ġ= Ġ 0 , Ċ ĉ width : ĠNumber Ġ= ĠDEFAULT _ COM BO BOX _ WIDTH , Ċ ĉ height : ĠNumber Ġ= ĠDEFAULT _ COM BO BOX _ HEIGHT , Ċ ĉ font : ĠFont Ġ= ĠFont (), Ċ ĉ val Ġprompt : ĠString Ġ= Ġ"", Ċ ĉ items : ĠList < T > Ġ= ĠlistOf (), Ċ ĉ format Function : Ġ(( T ) Ġ-> ĠString )? Ġ= Ġnull , Ċ ) Ġ: ĠUI Component ( Ċ ĉ pos X Ġ= Ġpos X , Ċ ĉ pos Y Ġ= Ġpos Y , Ċ ĉ width Ġ= Ġwidth , Ċ ĉ height Ġ= Ġheight , Ċ ĉ font Ġ= Ġfont , Ċ ĉ visual Ġ= ĠVisual . EMPTY ) Ġ{ Ċ ĉ /** Ċĉ Ġ* Ġ[ Property ] Ġfor Ġthe Ġ[ items ] Ġ[ List ] Ġfor Ġthis Ġ[ ComboBox ]. Ċĉ Ġ* Ċĉ Ġ* Ġ@ see Ġitems Ċĉ Ġ*/ Ċ ĉ val Ġobservable Items List : ĠObservable List < T > Ġ= ĠObservable ArrayList () ĊĉĊ ĉ /** Ċĉ Ġ* ĠItems Ġ[ List ] Ġfor Ġthis Ġ[ ComboBox ]. Ċĉ Ġ* Ċĉ Ġ* Ġ@ see Ġobservable Items List Ċĉ Ġ*/ Ċ ĉ var Ġitems : ĠMutable List < T > Ċĉ ĉ get () Ġ= Ġobservable Items List . list Ċĉ ĉ set ( value ) Ġ{ Ċĉĉ ĉ observable Items List . clear () Ċĉĉ ĉ observable Items List . addAll ( value ) Ċĉ ĉ } ĊĉĊ ĉ /** Ċĉ Ġ* Ġ[ Property ] Ġfor Ġthe Ġselected Ġitem . Ċĉ Ġ* Ċĉ Ġ* ĠValue Ġmay Ġbe Ġ` null ` Ġif Ġno Ġitem Ġis Ġselected . Ċĉ Ġ* Ċĉ Ġ* Ġ@ see Ġselected Item Ċĉ Ġ*/ Ċ ĉ val Ġselected ItemProperty : ĠProperty < T ?> Ġ= ĠProperty ( null ) ĊĉĊ ĉ /** Ċĉ Ġ* ĠThe Ġselected Ġitem . Ċĉ Ġ* Ċĉ Ġ* ĠMay Ġbe Ġ` null ` Ġif Ġno Ġitem Ġis Ġselected . Ċĉ Ġ* Ċĉ Ġ* Ġ@ see Ġselected ItemProperty Ċĉ Ġ*/ Ċ ĉ var Ġselected Item : ĠT ? Ċĉ ĉ get () Ġ= Ġselected ItemProperty . value Ċĉ ĉ set ( value ) Ġ{ Ċĉĉ ĉ require ( items . contains ( value )) Ġ{ Ġ" Items Ġlist Ġdoes Ġnot Ġcontain Ġelement Ġto Ġselect : Ġ$ value " Ġ} ĊĉĉĉĊĉĉ ĉ selected ItemProperty . value Ġ= Ġvalue Ċĉ ĉ } ĊĉĊ ĉ /** Ċĉ Ġ* Ġ[ Property ] Ġfor Ġthe Ġ[ format Function ] Ġthat Ġgets Ġused Ġto Ġobtain Ġa Ġ[ String ] Ġrepresentation Ġfor Ġeach Ġitem . Ċĉ Ġ* Ċĉ Ġ* ĠIf Ġthe Ġvalue Ġis Ġ` null `, Ġthe Ġ[ toString ] Ġfunction Ġof Ġthe Ġitem Ġis Ġused Ġinstead . Ċĉ Ġ* Ċĉ Ġ* Ġ@ see Ġformat Function Ċĉ Ġ*/ Ċ ĉ var Ġformat Function Property : ĠProperty < (( T ) Ġ-> ĠString ) ?> Ġ= ĠProperty ( format Function ) ĊĉĊ ĉ /** Ċĉ Ġ* ĠThe Ġ[ format Function ] Ġthat Ġgets Ġused Ġto Ġobtain Ġa Ġ[ String ] Ġrepresentation Ġfor Ġeach Ġitem . Ċĉ Ġ* Ċĉ Ġ* ĠIf Ġthe Ġvalue Ġis Ġ` null `, Ġthe Ġ[ toString ] Ġfunction Ġof Ġthe Ġitem Ġis Ġused Ġinstead . Ċĉ Ġ* Ċĉ Ġ* Ġ@ see Ġformat Function Property Ċĉ Ġ*/ Ċ ĉ var Ġformat Function : Ġ(( T ) Ġ-> ĠString )? Ċĉ ĉ get () Ġ= Ġformat Function Property . value Ċĉ ĉ set ( value ) Ġ{ Ċĉĉ ĉ format Function Property . value Ġ= Ġvalue Ċĉ ĉ } ĊĉĊ ĉ init Ġ{ Ċĉ ĉ observable Items List . addAll ( items ) ĊĉĉĊĉ ĉ if Ġ( selected Item Ġ!= Ġnull ) Ġ{ Ċĉĉ ĉ require ( items . contains ( selected Item )) Ġ{ Ġ" Items Ġlist Ġdoes Ġnot Ġcontain Ġelement Ġto Ġselect ." Ġ} ĊĉĉĉĊĉĉ ĉ selected ItemProperty . value Ġ= Ġselected Item Ċĉ ĉ } Ċ ĉ } Ċ }