In general I am quite confused:
Default Vaadin window (not native) as attached to app.getMainWindow() and so it is dispayed immidiately, correct?
But native windows (showing an Vaadin application window) seem to work quite different.
Why can I add a Window by app.addWindow() and why getMainWindow().addWindow()? What is the difference?
Further, when opening a native window (showing an application window) I get those read session timeout warnings when switching window using open(url). But this only if the window is added to the app triggered from en eventhandler opening the window. When the window was added to the app at session start / login then there is no session timeout sign.
Of course I cant use open(url) to an app window (in a native window) when having added to window by getMainWindow(). Why?
This is pretty confusing, but an important feature: Some user pretty prefer url based navigation istead of pure Ajax page rerendering…
There are two kinds of Windows: native windows and subwindows shown within a Vaadin application UI. Unfortunately, in Vaadin 6.x these share quite a lot of API they should not share, and tend to be confusing partly for that reason. In Vaadin 7, the situation should be much clearer with Root for browser level windows (as well as portlet root elements and similar entities containing a Vaadin application) and Window only representing subwindows.
As you are using Vaadin 6.x, see
the book for more information on native windows. Note that native windows are on the application level, whereas subwindows are added to an existing window.
URI based navigation is also possible (see
the book ) but is somewhat complicated in Vaadin 6. Vaadin 7 will again simplify this and improve out-of-the-box multi-window support, but until then I recommend you take a look at one of the navigation related add-ons in the Directory (e.g.
Navigator ,
Navigator7 or some higher level application framework on top of Vaadin such as
AppFoundation ). Note that URL fragments are used instead of other parts of the URL to avoid unnecessary page reloads by the browser.