3. Why Is This So Complicated?
The web isn’t designed for multi-window apps
• Big departure from normal browser behavior
• webOS offers a lot of different interactions
• Performance issues led to complications
• Expected globals (document, window, etc.)
• Late recognition of the problem by Palm. Sorry.
4. Multi-Stage Basics
5. Things to Consider
• Do you need another stage? Every time?
• What is the most appropriate stage type?
• How often do you rely on globals?
• Prototype, jquery, document?
• What state is shared between children?
6. Basic APIs
7. From a Scene Assistant
8. Stage Types
10. Example: MainAssistant
11. Example: DashboardStageAssistant
12. Example: Message View
13. Example: MessageAssistant
15. Some New Twists
• Refactor child stage assistant to be generic
• Not all stylesheets are loaded
• Some styles are changed to assume a notiﬁcation
• Popups can have their height speciﬁed
• Closing child windows is easy
16. Example: New ChildStageAssistant
17. Example: Pushing Dashboard Scene
18. Example: Creating a Popup
19. Example: Popup Scene
20. Example: Popup Assistant
21. Example: Very Simple Popup
23. Relaunching Basics
• Certain actions cause your app to be “relaunched”
• The appManager service passes in arguments
• Your AppAssistant can change default launch
• You should never have to worry about whether or
not your app was already open
• Shared across all child stages
• Handles relaunching
• Convenient place to stick shared state
• Try not to share state
25. Example: App Assistant
26. Example: Setting Default Stage
27. Example: Launch Parameters in
28. The Future
29. Upcoming API Improvements
• Default dashboards no longer require markup
• Just provide an icon, some text, and a count
• Handles going from single item to multiple
• No more stageProxy shenanigans
• Failure cases are handled more elegantly