V7 Wish List: Windowing API

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.

This would be nice to have. (Already discussed in the forum a few months ago :slight_smile:

For many of these items there should already be tickets, and several should be quite simple to implement, whether in core or in an application.

A list of the relevant tickets would be nice, and feedback from different users on the importance of these tickets would be useful.