@ file : Suppress (" NOTH ING _ TO _ INLINE ") Ċ Ċ package Ġk tf x . cells Ċ Ċ import Ġjavafx . beans . value . Observable Value Ċ import Ġjavafx . collections . Observable List Ċ import Ġjavafx . scene . control . TableCell Ċ import Ġjavafx . scene . control . TableColumn Ċ import Ġjavafx . scene . control . cell . CheckBox TableCell Ċ import Ġjavafx . scene . control . cell . Choice Box TableCell Ċ import Ġjavafx . scene . control . cell . ComboBox TableCell Ċ import Ġjavafx . scene . control . cell . ProgressBar TableCell Ċ import Ġjavafx . scene . control . cell . TextField TableCell Ċ import Ġjavafx . util . String Converter Ċ Ċ /** Ċ Ġ* ĠSets Ġa Ġ[ CheckBox TableCell ] Ġfactory Ġfor Ġuse Ġin Ġthis Ġ[ TableColumn ]. Ċ Ġ*/ Ċ inline Ġfun Ġ< S > ĠTable Column < S , ĠBoolean >. checkBox Cell Factory (): ĠUnit Ġ= ĊĠĠĠ Ġset Cell Factory ( CheckBox TableCell . for TableColumn ( this )) Ċ Ċ /** Ċ Ġ* ĠSets Ġa Ġ[ CheckBox TableCell ] Ġfactory Ġfor Ġuse Ġin Ġthis Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param ĠT ĠThe Ġtype Ġof Ġthe Ġelements Ġcontained Ġwithin Ġthe Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param Ġselected Property Provider ĠA Ġprovider Ġthat , Ġgiven Ġan Ġobject Ġfrom Ġ` TableColumn < S , T >`, Ċ Ġ* Ġ Ġwill Ġreturn Ġan Ġ` Observable Value < Boolean >` Ġthat Ġrepresents Ġwhether Ġthe Ġgiven Ġitem Ġis Ġselected Ġor Ġnot . Ċ Ġ*/ Ċ inline Ġfun Ġ< S , ĠT > ĠTable Column < S , ĠT >. checkBox Cell Factory ( ĊĠĠĠ Ġno inline Ġselected Property Provider : Ġ( Int ) Ġ-> ĠObservable Value < Boolean > Ċ ): ĠUnit Ġ= Ġset Cell Factory ( CheckBox TableCell . for TableColumn ( selected Property Provider )) Ċ Ċ /** Ċ Ġ* ĠSets Ġa Ġ[ CheckBox TableCell ] Ġfactory Ġfor Ġuse Ġin Ġthis Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param ĠT ĠThe Ġtype Ġof Ġthe Ġelements Ġcontained Ġwithin Ġthe Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param Ġconverter ĠA Ġstring Ġconverter Ġthat , Ġgiven Ġan Ġobject Ġof Ġtype ĠT , Ċ Ġ* Ġ Ġwill Ġreturn Ġa ĠString Ġthat Ġcan Ġbe Ġused Ġto Ġrepresent Ġthe Ġobject Ġvis ually . Ċ Ġ* Ġ@ param Ġselected Property Provider ĠA Ġprovider Ġthat , Ġgiven Ġan Ġobject Ġfrom Ġ` TableColumn < S , T >`, Ċ Ġ* Ġ Ġwill Ġreturn Ġan Ġ` Observable Value < Boolean >` Ġthat Ġrepresents Ġwhether Ġthe Ġgiven Ġitem Ġis Ġselected Ġor Ġnot . Ċ Ġ*/ Ċ inline Ġfun Ġ< S , ĠT > ĠTable Column < S , ĠT >. checkBox Cell Factory ( ĊĠĠĠ Ġconverter : ĠString Converter < T >, ĊĠĠĠ Ġno inline Ġselected Property Provider : Ġ( Int ) Ġ-> ĠObservable Value < Boolean > Ċ ): ĠUnit Ġ= Ġset Cell Factory ( CheckBox TableCell . for TableColumn ( selected Property Provider , Ġconverter )) Ċ Ċ /** Ċ Ġ* ĠSets Ġa Ġ[ CheckBox TableCell ] Ġfactory Ġfor Ġuse Ġin Ġthis Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param ĠT ĠThe Ġtype Ġof Ġthe Ġelements Ġcontained Ġwithin Ġthe Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param Ġshow Label ĠIn Ġsome Ġcases , Ġit Ġmay Ġbe Ġdes irable Ġto Ġshow Ġa Ġlabel Ġin Ċ Ġ* Ġ Ġthe ĠTable Cell Ġbes ide Ġthe Ġ[ java fx . scene . control . CheckBox ]. Ċ Ġ* Ġ@ param Ġselected Property Provider ĠA Ġprovider Ġthat , Ġgiven Ġan Ġobject Ġfrom Ġ` TableColumn < S , T >`, Ċ Ġ* Ġ Ġwill Ġreturn Ġan Ġ` Observable Value < Boolean >` Ġthat Ġrepresents Ġwhether Ġthe Ġgiven Ġitem Ġis Ġselected Ġor Ġnot . Ċ Ġ*/ Ċ inline Ġfun Ġ< S , ĠT > ĠTable Column < S , ĠT >. checkBox Cell Factory ( ĊĠĠĠ Ġshow Label : ĠBoolean , ĊĠĠĠ Ġno inline Ġselected Property Provider : Ġ( Int ) Ġ-> ĠObservable Value < Boolean > Ċ ): ĠUnit Ġ= Ġset Cell Factory ( CheckBox TableCell . for TableColumn ( selected Property Provider , Ġshow Label )) Ċ Ċ /** Ċ Ġ* ĠSets Ġa Ġ[ CheckBox TableCell ] Ġfactory Ġfor Ġuse Ġin Ġthis Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param ĠT ĠThe Ġtype Ġof Ġthe Ġelements Ġcontained Ġwithin Ġthe Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param Ġitems ĠZero Ġor Ġmore Ġitems Ġthat Ġwill Ġbe Ġshown Ġto Ġthe Ġuser Ġwhen Ġthe Ċ Ġ* Ġ Ġ[ java fx . scene . control . Choice Box ] Ġmenu Ġis Ġshowing . Ċ Ġ*/ Ċ inline Ġfun Ġ< S , ĠT > ĠTable Column < S , ĠT >. choice Box Cell Factory ( ĊĠĠĠ Ġvar arg Ġitems : ĠT Ċ ): ĠUnit Ġ= Ġset Cell Factory ( Choice Box TableCell . for TableColumn (* items )) Ċ Ċ /** Ċ Ġ* ĠSets Ġa Ġ[ Choice Box TableCell ] Ġfactory Ġfor Ġuse Ġin Ġthis Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param ĠT ĠThe Ġtype Ġof Ġthe Ġelements Ġcontained Ġwithin Ġthe Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param Ġconverter ĠA Ġstring Ġconverter Ġthat , Ġgiven Ġan Ġobject Ġof Ġtype ĠT , Ċ Ġ* Ġ Ġwill Ġreturn Ġa ĠString Ġthat Ġcan Ġbe Ġused Ġto Ġrepresent Ġthe Ġobject Ġvis ually . Ċ Ġ* Ġ@ param Ġitems ĠZero Ġor Ġmore Ġitems Ġthat Ġwill Ġbe Ġshown Ġto Ġthe Ġuser Ġwhen Ġthe Ċ Ġ* Ġ Ġ[ java fx . scene . control . Choice Box ] Ġmenu Ġis Ġshowing . Ċ Ġ*/ Ċ inline Ġfun Ġ< S , ĠT > ĠTable Column < S , ĠT >. choice Box Cell Factory ( ĊĠĠĠ Ġconverter : ĠString Converter < T >, ĊĠĠĠ Ġvar arg Ġitems : ĠT Ċ ): ĠUnit Ġ= Ġset Cell Factory ( Choice Box TableCell . for TableColumn ( converter , Ġ* items )) Ċ Ċ /** Ċ Ġ* ĠSets Ġa Ġ[ Choice Box TableCell ] Ġfactory Ġfor Ġuse Ġin Ġthis Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param ĠT ĠThe Ġtype Ġof Ġthe Ġelements Ġcontained Ġwithin Ġthe Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param Ġitems ĠZero Ġor Ġmore Ġitems Ġthat Ġwill Ġbe Ġshown Ġto Ġthe Ġuser Ġwhen Ġthe Ċ Ġ* Ġ Ġ[ java fx . scene . control . Choice Box ] Ġmenu Ġis Ġshowing . Ċ Ġ*/ Ċ inline Ġfun Ġ< S , ĠT > ĠTable Column < S , ĠT >. choice Box Cell Factory ( ĊĠĠĠ Ġitems : ĠObservable List < T > Ċ ): ĠUnit Ġ= Ġset Cell Factory ( Choice Box TableCell . for TableColumn ( items )) Ċ Ċ /** Ċ Ġ* ĠSets Ġa Ġ[ Choice Box TableCell ] Ġfactory Ġfor Ġuse Ġin Ġthis Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param ĠT ĠThe Ġtype Ġof Ġthe Ġelements Ġcontained Ġwithin Ġthe Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param Ġconverter ĠA Ġstring Ġconverter Ġthat , Ġgiven Ġan Ġobject Ġof Ġtype ĠT , Ċ Ġ* Ġ Ġwill Ġreturn Ġa ĠString Ġthat Ġcan Ġbe Ġused Ġto Ġrepresent Ġthe Ġobject Ġvis ually . Ċ Ġ* Ġ@ param Ġitems ĠZero Ġor Ġmore Ġitems Ġthat Ġwill Ġbe Ġshown Ġto Ġthe Ġuser Ġwhen Ġthe Ċ Ġ* Ġ Ġ[ java fx . scene . control . Choice Box ] Ġmenu Ġis Ġshowing . Ċ Ġ*/ Ċ inline Ġfun Ġ< S , ĠT > ĠTable Column < S , ĠT >. choice Box Cell Factory ( ĊĠĠĠ Ġconverter : ĠString Converter < T >, ĊĠĠĠ Ġitems : ĠObservable List < T > Ċ ): ĠUnit Ġ= Ġset Cell Factory ( Choice Box TableCell . for TableColumn ( converter , Ġitems )) Ċ Ċ /** Ċ Ġ* ĠSets Ġa Ġ[ ComboBox TableCell ] Ġfactory Ġfor Ġuse Ġin Ġthis Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param ĠT ĠThe Ġtype Ġof Ġthe Ġelements Ġcontained Ġwithin Ġthe Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param Ġitems ĠZero Ġor Ġmore Ġitems Ġthat Ġwill Ġbe Ġshown Ġto Ġthe Ġuser Ġwhen Ġthe Ċ Ġ* Ġ Ġ[ java fx . scene . control . ComboBox ] Ġmenu Ġis Ġshowing . Ċ Ġ*/ Ċ inline Ġfun Ġ< S , ĠT > ĠTable Column < S , ĠT >. comboBox Cell Factory ( ĊĠĠĠ Ġvar arg Ġitems : ĠT Ċ ): ĠUnit Ġ= Ġset Cell Factory ( ComboBox TableCell . for TableColumn (* items )) Ċ Ċ /** Ċ Ġ* ĠSets Ġa Ġ[ ComboBox TableCell ] Ġfactory Ġfor Ġuse Ġin Ġthis Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param ĠT ĠThe Ġtype Ġof Ġthe Ġelements Ġcontained Ġwithin Ġthe Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param Ġconverter ĠA Ġstring Ġconverter Ġthat , Ġgiven Ġan Ġobject Ġof Ġtype ĠT , Ċ Ġ* Ġ Ġwill Ġreturn Ġa ĠString Ġthat Ġcan Ġbe Ġused Ġto Ġrepresent Ġthe Ġobject Ġvis ually . Ċ Ġ* Ġ@ param Ġitems ĠZero Ġor Ġmore Ġitems Ġthat Ġwill Ġbe Ġshown Ġto Ġthe Ġuser Ġwhen Ġthe Ċ Ġ* Ġ Ġ[ java fx . scene . control . ComboBox ] Ġmenu Ġis Ġshowing . Ċ Ġ*/ Ċ inline Ġfun Ġ< S , ĠT > ĠTable Column < S , ĠT >. comboBox Cell Factory ( ĊĠĠĠ Ġconverter : ĠString Converter < T >, ĊĠĠĠ Ġvar arg Ġitems : ĠT Ċ ): ĠUnit Ġ= Ġset Cell Factory ( ComboBox TableCell . for TableColumn ( converter , Ġ* items )) Ċ Ċ /** Ċ Ġ* ĠSets Ġa Ġ[ ComboBox TableCell ] Ġfactory Ġfor Ġuse Ġin Ġthis Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param ĠT ĠThe Ġtype Ġof Ġthe Ġelements Ġcontained Ġwithin Ġthe Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param Ġitems ĠZero Ġor Ġmore Ġitems Ġthat Ġwill Ġbe Ġshown Ġto Ġthe Ġuser Ġwhen Ġthe Ċ Ġ* Ġ Ġ[ java fx . scene . control . ComboBox ] Ġmenu Ġis Ġshowing . Ċ Ġ*/ Ċ inline Ġfun Ġ< S , ĠT > ĠTable Column < S , ĠT >. comboBox Cell Factory ( ĊĠĠĠ Ġitems : ĠObservable List < T > Ċ ): ĠUnit Ġ= Ġset Cell Factory ( ComboBox TableCell . for TableColumn ( items )) Ċ Ċ /** Ċ Ġ* ĠSets Ġa Ġ[ ComboBox TableCell ] Ġfactory Ġfor Ġuse Ġin Ġthis Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param ĠT ĠThe Ġtype Ġof Ġthe Ġelements Ġcontained Ġwithin Ġthe Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param Ġconverter ĠA Ġstring Ġconverter Ġthat , Ġgiven Ġan Ġobject Ġof Ġtype ĠT , Ċ Ġ* Ġ Ġwill Ġreturn Ġa ĠString Ġthat Ġcan Ġbe Ġused Ġto Ġrepresent Ġthe Ġobject Ġvis ually . Ċ Ġ* Ġ@ param Ġitems ĠZero Ġor Ġmore Ġitems Ġthat Ġwill Ġbe Ġshown Ġto Ġthe Ġuser Ġwhen Ġthe Ċ Ġ* Ġ Ġ[ java fx . scene . control . ComboBox ] Ġmenu Ġis Ġshowing . Ċ Ġ*/ Ċ inline Ġfun Ġ< S , ĠT > ĠTable Column < S , ĠT >. comboBox Cell Factory ( ĊĠĠĠ Ġconverter : ĠString Converter < T >, ĊĠĠĠ Ġitems : ĠObservable List < T > Ċ ): ĠUnit Ġ= Ġset Cell Factory ( ComboBox TableCell . for TableColumn ( converter , Ġitems )) Ċ Ċ /** Ċ Ġ* ĠSets Ġa Ġ[ ProgressBar TableCell ] Ġfactory Ġfor Ġuse Ġin Ġthis Ġ[ TableColumn ]. Ċ Ġ*/ Ċ inline Ġfun Ġ< S > ĠTable Column < S , ĠDouble >. progress Bar Cell Factory (): ĠUnit Ġ= ĊĠĠĠ Ġset Cell Factory ( ProgressBar TableCell . for TableColumn < S >()) Ċ Ċ /** Ċ Ġ* ĠSets Ġa Ġ[ TextField TableCell ] Ġfactory Ġfor Ġuse Ġin Ġthis Ġ[ TableColumn ]. Ċ Ġ*/ Ċ inline Ġfun Ġ< S > ĠTable Column < S , ĠString >. textField Cell Factory (): ĠUnit Ġ= ĊĠĠĠ Ġset Cell Factory ( TextField TableCell . for TableColumn ()) Ċ Ċ /** Ċ Ġ* ĠSets Ġa Ġ[ TextField TableCell ] Ġfactory Ġfor Ġuse Ġin Ġthis Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param Ġconverter ĠA Ġstring Ġconverter Ġthat , Ġgiven Ġan Ġobject Ġof Ġtype ĠT , Ċ Ġ* Ġ Ġwill Ġreturn Ġa ĠString Ġthat Ġcan Ġbe Ġused Ġto Ġrepresent Ġthe Ġobject Ġvis ually . Ċ Ġ*/ Ċ inline Ġfun Ġ< S , ĠT > ĠTable Column < S , ĠT >. textField Cell Factory ( ĊĠĠĠ Ġconverter : ĠString Converter < T > Ċ ): ĠUnit Ġ= Ġset Cell Factory ( TextField TableCell . for TableColumn ( converter )) Ċ Ċ /** Ċ Ġ* ĠSets Ġa Ġcustom Ġcell Ġfactory Ġto Ġuse Ġin Ġthis Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param ĠT ĠThe Ġtype Ġof Ġthe Ġelements Ġcontained Ġwithin Ġthe Ġ[ TableColumn ]. Ċ Ġ* Ġ@ param Ġconfiguration Ġcustom Ġinitialization Ġblock Ġthat Ġconfig ures Ġ[ K tf x TableCell ]. Ċ Ġ*/ Ċ fun Ġ< S , ĠT > ĠTable Column < S , ĠT >. cell Factory ( ĊĠĠĠ Ġconfiguration : ĠK tf x TableCell < S , ĠT >. ( TableColumn < S , ĠT >) Ġ-> ĠUnit Ċ ): ĠUnit Ġ= Ġset Cell Factory Ġ{ ĠK tf x TableCell < S , ĠT >(). apply Ġ{ Ġconfiguration ( it ) Ġ} Ġ} Ċ Ċ /** ĠCustom Ġ[ TableCell ] Ġconfigur ator Ġclass . Ġ*/ Ċ class ĠK tf x TableCell < S , ĠT > Ġ: ĠTable Cell < S , ĠT >(), ĠK tf x Cell < T > Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġon Edit Start : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Edit Commit : Ġ(( T ?) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Edit Cancel : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠonUpdate : Ġ(( T ?, Ġempty : ĠBoolean ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon Edit Start ( action : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Edit Start Ġ= Ġaction ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Edit () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . start Edit () ĊĠĠĠĠĠĠĠ Ġon Edit Start ?. invoke () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Edit Commit ( action : Ġ( T ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Edit Commit Ġ= Ġaction ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcommit Edit ( newValue : ĠT ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . commit Edit ( newValue ) ĊĠĠĠĠĠĠĠ Ġon Edit Commit ?. invoke ( newValue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Edit Cancel ( action : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Edit Cancel Ġ= Ġaction ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcancel Edit () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . cancel Edit () ĊĠĠĠĠĠĠĠ Ġon Edit Cancel ?. invoke () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonUpdate ( action : Ġ( T ?, Ġempty : ĠBoolean ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠonUpdate Ġ= Ġaction ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Item ( item : ĠT ?, Ġempty : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . update Item ( item , Ġempty ) ĊĠĠĠĠĠĠĠ ĠonUpdate ?. invoke ( item , Ġempty ) ĊĠĠĠ Ġ} Ċ } Ċ