I am using Wicket to build an ui for a searchengine on a website. As the user is typing the results are shown in a dropdown. As I have a lot of different objects (with each a different display structure) I want to define several panels. So for each found item in the db, it gets the right panel and right structure. So for example : if the searchengine finds a user, it should show only name. When a picture is found, a thumbnail and a description, etc...
Right now I am using the AutocompleteTextField but it only takes strings. I thought about adding html in the string and show it like that. But as that is not really a clean solution, I am thinking of using panels.
So, anyone know how I can use panels instead of the strings in a AutoCompleteTextField?
Create your own Component. Use a ListView, put it into a WebMarkupContainer. Show the WebMarkupContainer based on the TextField input and refresh the ListView in the OnChangeAjaxBehavior attached to the TextField.
This way you have full control over what you want to achieve.
Example code for the ListView:
I don't think it is possible to use panels, because a panel is a component, and itself could be anything. It will be too difficult to support any panel as a part of autocomplete list. It would be fun to have an autocomplete element as a form with autocomplete field;)
So, that's why there is
IAutoCompleteRenderer
interface to allow you generate any html markup for elements, but not as a panels.As an option, maybe it is possible to have kind of modal pop up ajax dialog window using
ModalWindow
.The
AutoCompleteTextField
uses thenewAutoCompleteBehavior
-hookmethod to create the behavior doing the display of the choices. This hookmethod takes an IAutoCompleteRenderer as an argument. This renderer's actually doing the displaying part. So you could either pass your own renderer to the AutoCompleteTextField (there's a constructor accepting one) or subclass theAutoCompleteTextField
to override the factory method. Either way you'll have to come up with your own implementation ofIAutoCompleteRenderer
since there is no such implementation in wicket and the renderer itself will be heavily influenced by your current application design.