Change-Id: Ibe0fcbda1222e2aa781ae14f479fbedd99715ff9tags/7.0.0.beta11
@@ -969,4 +969,20 @@ public abstract class UI extends AbstractSingleComponentContainer implements | |||
public void detach() { | |||
super.detach(); | |||
} | |||
/* | |||
* (non-Javadoc) | |||
* | |||
* @see | |||
* com.vaadin.ui.AbstractSingleComponentContainer#setContent(com.vaadin. | |||
* ui.Component) | |||
*/ | |||
@Override | |||
public void setContent(Component content) { | |||
if (content instanceof Window) { | |||
throw new IllegalArgumentException( | |||
"A Window cannot be added using setContent. Use addWindow(Window window) instead"); | |||
} | |||
super.setContent(content); | |||
} | |||
} |
@@ -31,6 +31,7 @@ import com.vaadin.event.ShortcutAction; | |||
import com.vaadin.event.ShortcutAction.KeyCode; | |||
import com.vaadin.event.ShortcutAction.ModifierKey; | |||
import com.vaadin.event.ShortcutListener; | |||
import com.vaadin.server.ClientConnector; | |||
import com.vaadin.server.PaintException; | |||
import com.vaadin.server.PaintTarget; | |||
import com.vaadin.shared.MouseEventDetails; | |||
@@ -123,6 +124,23 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier, | |||
super.paintContent(target); | |||
} | |||
/* | |||
* (non-Javadoc) | |||
* | |||
* @see | |||
* com.vaadin.ui.AbstractComponent#setParent(com.vaadin.server.ClientConnector | |||
* ) | |||
*/ | |||
@Override | |||
public void setParent(ClientConnector parent) { | |||
if (parent == null || parent instanceof UI) { | |||
super.setParent(parent); | |||
} else { | |||
throw new IllegalArgumentException( | |||
"A Window can only be added to a UI using UI.addWindow(Window window)"); | |||
} | |||
} | |||
/* | |||
* (non-Javadoc) | |||
* |
@@ -0,0 +1,44 @@ | |||
/* | |||
* Copyright 2012 Vaadin Ltd. | |||
* | |||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not | |||
* use this file except in compliance with the License. You may obtain a copy of | |||
* the License at | |||
* | |||
* http://www.apache.org/licenses/LICENSE-2.0 | |||
* | |||
* Unless required by applicable law or agreed to in writing, software | |||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | |||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | |||
* License for the specific language governing permissions and limitations under | |||
* the License. | |||
*/ | |||
package com.vaadin.tests.server.component.window; | |||
import org.junit.Test; | |||
import com.vaadin.server.VaadinRequest; | |||
import com.vaadin.ui.UI; | |||
import com.vaadin.ui.VerticalLayout; | |||
import com.vaadin.ui.Window; | |||
public class WindowAttach { | |||
private static class MyUI extends UI { | |||
@Override | |||
protected void init(VaadinRequest request) { | |||
} | |||
} | |||
@Test(expected = IllegalArgumentException.class) | |||
public void testAttachUsingSetContent() { | |||
UI ui = new MyUI(); | |||
ui.setContent(new Window("foo")); | |||
} | |||
@Test(expected = IllegalArgumentException.class) | |||
public void testAddToLayout() { | |||
VerticalLayout vl = new VerticalLayout(); | |||
vl.addComponent(new Window("foo")); | |||
} | |||
} |