I've been using the Navigation / NavigationParsley libraries for some time now to good effect. I was wondering if it was possible to use these libraries to allow navigation to multiple instances of the same view, where each view is dynamically added to the application by a user action. For example:-
We have an application which has a tab navigator in which users can load tabbed views. Each tab is the same view class, but with different data (like a web browser's tabbed interface). The user finds the information they'd like, and loads it into a tab. As such, each tab needs to have a different automationName configured on-the-fly after the user interaction. However the Navigation libraries seem to register destinations (the children of a container or tabs in this case) upon finding a Waypoint. Unfortunately at this stage the container does not hold any children, as the user has yet to load the tabs.
Does anyone have suggestions on how to extend the functionality of these libraries to provide this sort of feature, or if this is already in consideration?
Thanks for the response Alex, I look forward to seeing what your team up with as an example. Please keep me posted on this, as my efforts at attempting similar customisations lead to problems I was unable to resolve quickly.
I've done something similar to this for an application I've been working on. In my case I have an XML file that defines what modules should be loaded at runtime. Once the modules are loaded I then also wire them up to Cairngorm navigation so that they work with Waypoints and Landmarks.
I've written up an entry on my blog about this solution if you'd like to have a look.
Although your solution may work, I dont like the idea of dispatching such events for managing the navigation points.
Actually, I'm expecting something more programmatic like:
Or something like that...
In my case this solution worked well since I only had to register all my destinations once. I agree that in the case where you need to add and remove destinations multiple times dispatching an initialize event isn't the best idea.
At least is sounds like the Cairngorm folks are looking into adding support for the use case you are interested in.
Yes, I believe they're working on it.
I think that is a good addon for the framework cause, now more than never, layouts are dynamically built and added into the application. And, in my case, I got some custom components to improve general performance that need to be tweaked to match the cg3 navigation policy.