package Ġeu . vaadin on kotlin . vaadin Ċ Ċ import Ġcom . github . mv ys ny . v ok dataloader .* Ċ import Ġcom . vaadin . flow . component . combo box . ComboBox Ċ import Ġcom . vaadin . flow . data . provider .* Ċ import Ġkotlin . reflect . K Property 1 Ċ Ċ /** Ċ Ġ* ĠA Ġdata Ġprovider Ġwith Ġconfigurable Ġfilter . Ċ Ġ* ĠUsually Ġ[ Filter Bar ] Ġwill Ġcall Ġ[ Configurable Filter DataProvider . set Filter ] Ġto Ġset Ġthe Ġfinal Ġfilter . Ċ Ġ* ĠIf Ġyou Ġwant Ġan Ġun re mov able Ġfilter , Ġuse Ġ[ DataLoader . with Filter ] Ġor Ċ Ġ* Ġ[ Filter Bar . set Custom Filter ]. Ċ Ġ*/ Ċ public Ġinterface ĠV ok DataProvider < T Ġ: ĠAny > Ġ: ĊĠĠĠ ĠConfigur able Filter DataProvider < T , ĠFilter < T > ?, ĠFilter < T >? >, ĊĠĠĠ ĠBack End DataProvider < T , ĠFilter < T > ?> Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġdata Ġprovider Ġwhich Ġperforms Ġstring Ġfiltering Ġon Ġgiven Ġ[ property ]. ĠIde al Ġfor Ġ[ ComboBox ] Ġwhich Ġl az ily Ċ Ġ* Ġfilters Ġitems Ġas Ġthe Ġuser Ġtypes Ġin Ġsearch Ġphrase . ĠEmit s Ġ[ IL ike Filter ] Ġto Ġthe Ġreceiver . Ċ Ġ*/ Ċ public Ġfun Ġ< T Ġ: ĠAny > ĠDataLoader < T >. with String Filter On ( ĊĠĠĠ Ġproperty : ĠK Property 1 < T , ĠString ? >, ĊĠĠĠ Ġid Resolver : Ġ( T ) Ġ-> ĠAny Ċ ): ĠBack End DataProvider < T , ĠString ?> Ġ= ĊĠĠĠ Ġwith String Filter On ( property . name , Ġid Resolver ) Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġdata Ġprovider Ġwhich Ġperforms Ġstring Ġfiltering Ġon Ġgiven Ġ[ property ]. ĠIde al Ġfor Ġ[ ComboBox ] Ġwhich Ġl az ily Ċ Ġ* Ġfilters Ġitems Ġas Ġthe Ġuser Ġtypes Ġin Ġsearch Ġphrase . ĠEmit s Ġ[ IL ike Filter ] Ġto Ġthe Ġreceiver . Ċ Ġ*/ Ċ public Ġfun Ġ< T Ġ: ĠAny > ĠDataLoader < T >. with String Filter On ( property : ĠDataLoader PropertyName , Ġid Resolver : Ġ( T ) Ġ-> ĠAny ): ĠBack End DataProvider < T , ĠString ?> Ġ{ ĊĠĠĠ Ġval Ġdp : ĠV ok DataProvider < T > Ġ= Ġas DataProvider ( id Resolver ) ĊĠĠĠ Ġreturn Ġobject Ġ: ĠBack End DataProvider Wrapper < T , ĠString ?, ĠFilter < T >? >( dp ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Filter ( query : ĠQuery < T , ĠString ?> ): ĠFilter < T >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter : ĠString ? Ġ= Ġquery . filter . orElse ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( filter . isNull Or Blank ()) Ġnull Ġelse ĠStart sWith Filter ( property , Ġfilter . trim ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġabstract Ġclass ĠBack End DataProvider Wrapper < T , ĠF , ĠM >( private Ġval Ġdelegate : ĠBack End DataProvider < T , ĠM >) Ġ: ĊĠĠĠ ĠData Provider Wrapper < T , ĠF , ĠM >( delegate ), ĠBack End DataProvider < T , ĠF > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġis InMemory (): ĠBoolean Ġ= Ġdelegate . isIn Memory ĊĊĠĠĠ Ġoverride Ġfun Ġset Sort Orders ( sort Orders : ĠMutable List < Query SortOrder >) Ġ{ ĊĠĠĠĠĠĠĠ Ġdelegate . set Sort Orders ( sort Orders ) ĊĠĠĠ Ġ} Ċ } Ċ