Вот короткий пример, показывающий, как я открываю другое окно верхнего уровня в Vaadin. Вы должны указать уникальное имя для окна (вызов setName). Затем вы звоните Vaadin, чтобы найти URL для вновь созданного окна, а затем открываете его. В этом случае «окно» - это переменная, которая содержит мое основное окно приложения.
reportWindow = injector.getInstance(GeneralReportWindow.class);
reportWindow.setName("report_overview");
reportWindow.setGenerator(injector.getInstance(OverviewGenerator.class));
addWindow(reportWindow);
try {
URI reportURI = reportWindow.getURL().toURI();
URL windowURL = new URI(reportURI.getScheme(),
reportURI.getUserInfo(), reportURI.getHost(),
reportURI.getPort(), reportURI.getPath(), "report=overview", null).toURL();
window.open(new ExternalResource(windowURL, "_new"));
} catch (Exception e) {
log.warn("Unable to create report window", e);
}