I have an application with the following UI components:
- Main Menu
- Folders Tree
- Query Builder
- Tabbed Lists (each tab has a grid that can display data entities)
The application is based on MVC, so each component listed above has a controller and a view.
The first three components need to display data entities on the list (as new tabs):
- Double clicking on a folder will display the folder's items in a new list.
- When clicking the search button in the query builder it will open the search results in a new tab.
- When clicking "Open..." menu item it and selecting a file it will open a new tab with the items in the file.
Since there could be a lot of items the process of loading them from the database is done asynchronously by the grid (the grid is being filled as you are looking at it).
My question is this: which of the following is a "cleaner" design? (if you have better solutions, I will appreciate it very much)
The first solution I have is to use an EventAggregator, define a "ShowQuery" event, make the lists controller subscribe to it, and the other controllers will publish it when they want to display the query results.
The other solution is something like the Unity Container, and from the other controllers resolve the "IListsController" interface, and call the "ShowQuery" method.