package com.vaadin.tests.server.component.window; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import org.junit.Test; import com.vaadin.server.LegacyApplication; import com.vaadin.server.VaadinSession; import com.vaadin.tests.util.AlwaysLockedVaadinSession; import com.vaadin.ui.LegacyWindow; import com.vaadin.ui.UI; import com.vaadin.ui.Window; public class AddRemoveSubWindowTest { public class TestApp extends LegacyApplication { @Override public void init() { LegacyWindow w = new LegacyWindow("Main window"); setMainWindow(w); } } @Test public void addSubWindow() { VaadinSession.setCurrent(new AlwaysLockedVaadinSession(null)); TestApp app = new TestApp(); app.init(); Window subWindow = new Window("Sub window"); UI mainWindow = app.getMainWindow(); mainWindow.addWindow(subWindow); // Added to main window so the parent of the sub window should be the // main window assertEquals(subWindow.getParent(), mainWindow); try { mainWindow.addWindow(subWindow); assertTrue("Window.addWindow did not throw the expected exception", false); } catch (IllegalArgumentException e) { // Should throw an exception as it has already been added to the // main window } // Try to add the same sub window to another window try { LegacyWindow w = new LegacyWindow(); w.addWindow(subWindow); assertTrue("Window.addWindow did not throw the expected exception", false); } catch (IllegalArgumentException e) { // Should throw an exception as it has already been added to the // main window } } @Test public void removeSubWindow() { TestApp app = new TestApp(); app.init(); Window subWindow = new Window("Sub window"); UI mainWindow = app.getMainWindow(); mainWindow.addWindow(subWindow); // Added to main window so the parent of the sub window should be the // main window assertEquals(subWindow.getParent(), mainWindow); // Parent should still be set assertEquals(subWindow.getParent(), mainWindow); // Remove from the main window and assert it has been removed boolean removed = mainWindow.removeWindow(subWindow); assertTrue("Window was not removed correctly", removed); assertNull(subWindow.getParent()); } }