The Vaadin applications we build in our company are desktop-like, enterprise applications. They treat the Vaadin main window (i.e., browser window) as the application’s general desktop area, and open up several Vaadin sub-windows as part of the application. The typical user of our applications switches the browser to full screen.
We would like to see Vaadin 7 windowing API modeled after a native window system, such as Mac, Windows, the X Window System, etc. We would to see Vaadin’s main window modeled after the native window system’s desktop area, and Vaadin’s sub-window after the native window system’s application window.
Listed below are a few items that our engineers mentioned they would like to see in Vaadin 7. They are neither exhaustive nor listed in any particular order. We just wanted to start off a thread to which others might want to contribute, as the Vaadin folks are getting serious about the V7 API.
Cascade or tile
API to cascade or tile sub-windows in the browser window.
Semi-transparent windows
API to set a sub-window’s background to semi-transparent. Make it settable / unsettable at run time per window instance.
Constrain window size
If a sub-window is resizable, then allow for setting the maximum or minimum size. Ensure that the user’s resizing of the window is constrained by those settings.
Constrain window location
Allow for setting a rectangular area within the browser window which a sub-window’s top left corner must remain. Ensure that the user’s dragging of the sub-window is constrained by those settings.
Menubar / toolbar
Allow for a menubar / toolbar to be added at the top of the browser window (aka Mac OS menu bar at the top of the screen), as well as to the top of the sub-window. Allow for adding a toggle button on the sub-window’s header to show or hide that window’s toolbar.
Show / hide header
API to turn off sub-window header area, shadow, and any other window adornments per sub-window instance.
Maximize / restore
Allow for having a button on the sub-window header to maximize the sub-window to take on the entire browser window area, and then to restore it back to its original size. Allow for maximize and restore from an API call as well.
Resize from any border
Get rid of the resize handle at the bottom right of the sub-window, and allow for the user to resize a sub-window by dragging any border of the window.
Drag events
Provide drag-start and drag-stop events for a window.
Status bar
The ability to show or hide the status bar at the bottom of a sub-window should be independent of whether the window is resizable or not.
In focus or not?
API to know which sub-window currently has keyboard focus.
In browser area or not?
API to know if a sub-window is currently fully contained, partially contained, or not contained in the browser’s visible area.
Always on top
Allow for sub-windows to be flagged “Always on Top”. These windows should always be on top of the z-order of all the sub-windows contained in that browser window.
Focus window rendering
The sub-window in focus should have a slightly more pronounced rendering of header and border compared to the other sub-windows.
Animation
Many user actions such as bringing a sub-window to the top, dismissing a sub-window, maximizing or restoring a sub-window can benefit from subtle but useful transition effects. In fact, this applies almost across all UI components in Vaadin. At least in browsers that support advanced CSS / HTML features, Vaadin 7.0 should spruce up the transitions and animations of all UI components, including windows. While it is easy to dismiss such features as eye candy, we must also realize that subtle transformations provide a pleasant user experience compared to transition less, cold and abrupt interfaces.
Processing dialog
Need a “Processing Dialog” to inform users about some time-consuming server-side processing, and a “Confirm Dialog” to confirm users actions. Such functionality exists as a Vaadin add-on. We think it should be part of Vaadin core.
Fade away scrollbar
On browsers supporting overlay scrollbars that fade away when not in use (as in Mac OSX Lion and iOS), Vaadin Subwindow scrollbars and other scrollbars should also be auto fade away overlay scrollbars.