Use view, not windows
Submitted on 25 February 2012In Vaadin 6, the Window
class is used for both main windows - i.e. windows that fill the entire screen, and popup windows aka subwindows.
This has lead some developers (including me) to think main windows could be set and then removed later on: this is not the case and may lead to nasty bugs when the page is refreshed by the user just after having switched main windows.
Note: Vaadin 7 tackles the problem by merging the application and the main window into a single class (more in a later article.
In essence, when one has to fundamentally change what is shown to the user, one should use a custom component I call view. A view is just a group of components that are laid out together. Then, when we need to switch windows, we keep the main window and switch its content from one view to another: the main window becomes a just a placeholder. As an added value, since the main window is kept, it has always access to the parent application.
The application becomes something like this:
The view should look something like that:
Important notes:
MainView
is another custom component with the components we want displayed- Don’t forget separation of concerns, the switching behavior mixed in the GUI code is shown only for readability purposes
- Login and logout should perhaps be designed at the application level so we could call
getApplication().login()
Tags: