In my application I’ve got about a dozen places where I need to show a country suggest box. All the code of the suggest box(including the creation of a custom SuggestOracle, it’s initialization and various handlers) take up some ~100 lines of and copying it all over the project seems quite hardcore for me.
So I decided to write a custom CountrySuggestBox which extended SuggestBox wrapped in itself the construction of my custom SuggestOracle and did all the click/key handling stuff in itself. After this I was planning to just write something in the lines of @UiFiled(provided=true) CountrySuggestBox = new CountrySuggestBox(countryList); and be done with it. But for that I also need CountrySuggestBox to implement LeafValueEditor<Country> which i can’t do cause SuggestBox implements HasText and these interfaces do not “like” each other.
So how can I make CountrySuggestBox an editor of country types property without writing custom editor methods in the classes using it.
Prefer composition over inheritance.
Have
CountrySuggestBoxextendComposite(or simply implementIsWidget) and wrap theSuggestBox.Then you can make it a
LeafValueEditor<Country>orIsEditor<LeafValueEditor<Country>>(along withTakesValue<Country>orHasValue<Country>)