Enhanced Window Opener

Enhanced Window Opener is an extension of Vaadin BrowserWindowOpener that aims to simplify the opening of generated content in a new browser window or tab.

There are a lot of post on Vaadin forum regarding the usage BrowserWindowOpener extension. The main problems encountered by people depends on a misunderstanding of how BrowserWindowOpener works; it does not open a window immediately when the target component is extended but instead it adds a client side click listener on target component, so its effects are available only after the connector has done its work.

Usually problems comes from extending a component or setting the resource to open inside a server side listener (e.g. Button click listener)

Button button = new Button();
button.addClickListener( e -> {
    new BrowserWindowOpener(runtimeGeneratedResource())
        .extend(button);
});

This leeds to two problems:

  1. the window will not be opened after the click but only on the next click on the button
  2. the second click on the button will open the window but, after that, it will also execute the server side listener extending the button once again and consequently adding another click listener on the client side; next time clicking the button will open two windows and so on

The aim of this addon is to simplify opening window for runtime generated content and to avoid multiple window opening due to wrong usage of BrowserWindowOpener.

Button button = new Button("Click me");
new EnhancedBrowserWindowOpener()
    .clientSide(true)
    .withGeneratedContent("myFileName.txt", this::makeStreamSource)
    .doExtend(button);

See project page for further informations.

Install

Link to this version
BetaReleased 16 July 2018Apache License 2.0
Framework Support
Vaadin 7.6+
Also supported:
Vaadin 8 (0.4)
Install with
Release notes - Version 0.1.2

Added support for shortcuts