summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenri Sara <hesara@vaadin.com>2012-11-13 18:08:29 +0200
committerArtur Signell <artur@vaadin.com>2012-11-13 18:18:40 +0200
commit391884746fda1781c55b13bc200dd75373f69141 (patch)
tree0d5a8dcd9d13c5c39813d81252506e12d72741af
parent4628bcc3062ef19ed9d561f79fe3bfb3696d6e04 (diff)
downloadvaadin-framework-391884746fda1781c55b13bc200dd75373f69141.tar.gz
vaadin-framework-391884746fda1781c55b13bc200dd75373f69141.zip
UI based on AbstractBasicComponentContainer (#2924)
Change-Id: I1614a3464b8e7a0e9ecdd8c3a76335cdb85bdf87
-rw-r--r--client/src/com/vaadin/client/ui/ui/UIConnector.java26
-rw-r--r--server/src/com/vaadin/ui/AbstractComponentContainer.java75
-rw-r--r--server/src/com/vaadin/ui/AbstractSingleComponentContainer.java281
-rw-r--r--server/src/com/vaadin/ui/ComponentContainer.java147
-rw-r--r--server/src/com/vaadin/ui/HasComponents.java161
-rw-r--r--server/src/com/vaadin/ui/LegacyWindow.java214
-rw-r--r--server/src/com/vaadin/ui/SingleComponentContainer.java63
-rw-r--r--server/src/com/vaadin/ui/UI.java117
-rw-r--r--server/tests/src/com/vaadin/tests/server/component/abstractcomponentcontainer/TestAbstractComponentContainerListeners.java8
-rw-r--r--server/tests/src/com/vaadin/tests/server/component/ui/LegacyUIAddRemoveComponents.java (renamed from server/tests/src/com/vaadin/tests/server/component/ui/UIAddRemoveComponents.java)12
-rw-r--r--server/tests/src/com/vaadin/tests/server/components/ComponentAttachDetachListenerTest.java34
-rw-r--r--server/tests/src/com/vaadin/ui/LabelDataSource.java2
-rw-r--r--shared/src/com/vaadin/shared/ui/ui/UIState.java2
-rw-r--r--uitest/src/com/vaadin/tests/Components.java3
-rw-r--r--uitest/src/com/vaadin/tests/ScrollbarStressTest.java2
-rw-r--r--uitest/src/com/vaadin/tests/application/DeploymentConfigurationTest.java7
-rw-r--r--uitest/src/com/vaadin/tests/components/AbstractComponentContainerTest.java8
-rw-r--r--uitest/src/com/vaadin/tests/components/AbstractTestUI.java11
-rw-r--r--uitest/src/com/vaadin/tests/components/LayoutAttachListenerInfo.java12
-rw-r--r--uitest/src/com/vaadin/tests/components/TestBase.java4
-rw-r--r--uitest/src/com/vaadin/tests/components/abstractcomponent/AllComponentTooltipTest.java5
-rw-r--r--uitest/src/com/vaadin/tests/components/menubar/MenuBarRunsOutOfBrowser.java2
-rw-r--r--uitest/src/com/vaadin/tests/components/table/TableInTabsheet.java1
-rw-r--r--uitest/src/com/vaadin/tests/components/ui/LazyInitUIs.java23
-rw-r--r--uitest/src/com/vaadin/tests/components/ui/UIsInMultipleTabs.java7
-rw-r--r--uitest/src/com/vaadin/tests/components/window/SubWindowFocusAndBlurListeners.java5
-rwxr-xr-xuitest/src/com/vaadin/tests/integration/IntegrationTestUI.java9
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7a1/AutoGeneratingForm.java7
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7a1/CreatingPreserveState.java2
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7a1/DifferentFeaturesForDifferentClients.java8
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7a1/DynamicImageUI.java2
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7a1/FindCurrentUI.java2
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7a1/UsingBeanValidation.java2
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7a1/UsingUriFragments.java13
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7a1/UsingXyzWhenInitializing.java11
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7a2/ComponentInStateUI.java9
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7a2/MyComponentUI.java2
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7a2/ResourceInStateUI.java2
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7a2/WidgetcontainerUI.java11
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7a3/AnalyticsUI.java2
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7a3/ComplexTypesUI.java2
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7a3/FlotJavaScriptUI.java22
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7a3/JSAPIUI.java2
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7a3/RedButtonUI.java2
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7b5/SettingReadingSessionAttributesUI.java36
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7b6/LettingUserDownloadFile.java (renamed from uitest/src/com/vaadin/tests/minitutorials/v7b6/LettingUserDownladFile.java)4
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7b6/MyPopupUI.java2
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v7b6/OpeningUIInPopup.java2
-rw-r--r--uitest/src/com/vaadin/tests/navigator/NavigatorTest.java16
-rw-r--r--uitest/src/com/vaadin/tests/tickets/Ticket2021.java6
-rw-r--r--uitest/src/com/vaadin/tests/tickets/Ticket2024.java4
-rw-r--r--uitest/src/com/vaadin/tests/tickets/Ticket2029.java4
-rw-r--r--uitest/src/com/vaadin/tests/tickets/Ticket2048.java3
-rw-r--r--uitest/src/com/vaadin/tests/tickets/Ticket2101.java2
-rw-r--r--uitest/src/com/vaadin/tests/util/SampleDirectory.java9
55 files changed, 907 insertions, 523 deletions
diff --git a/client/src/com/vaadin/client/ui/ui/UIConnector.java b/client/src/com/vaadin/client/ui/ui/UIConnector.java
index c1083a2bb4..a0898b3281 100644
--- a/client/src/com/vaadin/client/ui/ui/UIConnector.java
+++ b/client/src/com/vaadin/client/ui/ui/UIConnector.java
@@ -337,11 +337,19 @@ public class UIConnector extends AbstractComponentContainerConnector implements
}
protected ComponentConnector getContent() {
- return (ComponentConnector) getState().content;
+ List<ComponentConnector> children = getChildComponents();
+ if (children.isEmpty()) {
+ return null;
+ } else {
+ return children.get(0);
+ }
}
protected void onChildSizeChange() {
ComponentConnector child = getContent();
+ if (child == null) {
+ return;
+ }
Style childStyle = child.getWidget().getElement().getStyle();
/*
* Must set absolute position if the child has relative height and
@@ -408,12 +416,16 @@ public class UIConnector extends AbstractComponentContainerConnector implements
childStateChangeHandlerRegistration.removeHandler();
childStateChangeHandlerRegistration = null;
}
- getWidget().setWidget(newChild.getWidget());
- childStateChangeHandlerRegistration = newChild
- .addStateChangeHandler(childStateChangeHandler);
- // Must handle new child here as state change events are already
- // fired
- onChildSizeChange();
+ if (newChild != null) {
+ getWidget().setWidget(newChild.getWidget());
+ childStateChangeHandlerRegistration = newChild
+ .addStateChangeHandler(childStateChangeHandler);
+ // Must handle new child here as state change events are already
+ // fired
+ onChildSizeChange();
+ } else {
+ getWidget().setWidget(null);
+ }
}
for (ComponentConnector c : getChildComponents()) {
diff --git a/server/src/com/vaadin/ui/AbstractComponentContainer.java b/server/src/com/vaadin/ui/AbstractComponentContainer.java
index fdc753b57c..c60f312293 100644
--- a/server/src/com/vaadin/ui/AbstractComponentContainer.java
+++ b/server/src/com/vaadin/ui/AbstractComponentContainer.java
@@ -16,7 +16,6 @@
package com.vaadin.ui;
-import java.lang.reflect.Method;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
@@ -83,32 +82,11 @@ public abstract class AbstractComponentContainer extends AbstractComponent
}
}
- /* Events */
-
- private static final Method COMPONENT_ATTACHED_METHOD;
-
- private static final Method COMPONENT_DETACHED_METHOD;
-
- static {
- try {
- COMPONENT_ATTACHED_METHOD = ComponentAttachListener.class
- .getDeclaredMethod("componentAttachedToContainer",
- new Class[] { ComponentAttachEvent.class });
- COMPONENT_DETACHED_METHOD = ComponentDetachListener.class
- .getDeclaredMethod("componentDetachedFromContainer",
- new Class[] { ComponentDetachEvent.class });
- } catch (final java.lang.NoSuchMethodException e) {
- // This should never happen
- throw new java.lang.RuntimeException(
- "Internal error finding methods in AbstractComponentContainer");
- }
- }
-
/* documented in interface */
@Override
public void addComponentAttachListener(ComponentAttachListener listener) {
- addListener(ComponentContainer.ComponentAttachEvent.class, listener,
- COMPONENT_ATTACHED_METHOD);
+ addListener(ComponentAttachEvent.class, listener,
+ ComponentAttachListener.attachMethod);
}
/**
@@ -123,9 +101,9 @@ public abstract class AbstractComponentContainer extends AbstractComponent
/* documented in interface */
@Override
- public void addComponentDetachListener(ComponentDetachListener listener) {
- addListener(ComponentContainer.ComponentDetachEvent.class, listener,
- COMPONENT_DETACHED_METHOD);
+ public void removeComponentAttachListener(ComponentAttachListener listener) {
+ removeListener(ComponentAttachEvent.class, listener,
+ ComponentAttachListener.attachMethod);
}
/**
@@ -140,9 +118,9 @@ public abstract class AbstractComponentContainer extends AbstractComponent
/* documented in interface */
@Override
- public void removeComponentAttachListener(ComponentAttachListener listener) {
- removeListener(ComponentContainer.ComponentAttachEvent.class, listener,
- COMPONENT_ATTACHED_METHOD);
+ public void addComponentDetachListener(ComponentDetachListener listener) {
+ addListener(ComponentDetachEvent.class, listener,
+ ComponentDetachListener.detachMethod);
}
/**
@@ -158,8 +136,8 @@ public abstract class AbstractComponentContainer extends AbstractComponent
/* documented in interface */
@Override
public void removeComponentDetachListener(ComponentDetachListener listener) {
- removeListener(ComponentContainer.ComponentDetachEvent.class, listener,
- COMPONENT_DETACHED_METHOD);
+ removeListener(ComponentDetachEvent.class, listener,
+ ComponentDetachListener.detachMethod);
}
/**
@@ -218,9 +196,7 @@ public abstract class AbstractComponentContainer extends AbstractComponent
if (c.getParent() != null) {
// If the component already has a parent, try to remove it
- ComponentContainer oldParent = (ComponentContainer) c.getParent();
- oldParent.removeComponent(c);
-
+ AbstractSingleComponentContainer.removeFromParent(c);
}
c.setParent(this);
@@ -250,7 +226,7 @@ public abstract class AbstractComponentContainer extends AbstractComponent
super.setVisible(visible);
// If the visibility state is toggled it might affect all children
- // aswell, e.g. make container visible should make children visible if
+ // as well, e.g. make container visible should make children visible if
// they were only hidden because the container was hidden.
markAsDirtyRecursive();
}
@@ -315,30 +291,15 @@ public abstract class AbstractComponentContainer extends AbstractComponent
private Collection<Component> getInvalidSizedChildren(final boolean vertical) {
HashSet<Component> components = null;
- if (this instanceof Panel) {
- Panel p = (Panel) this;
- ComponentContainer content = p.getContent();
+ for (Component component : this) {
boolean valid = vertical ? ComponentSizeValidator
- .checkHeights(content) : ComponentSizeValidator
- .checkWidths(content);
-
+ .checkHeights(component) : ComponentSizeValidator
+ .checkWidths(component);
if (!valid) {
- components = new HashSet<Component>(1);
- components.add(content);
- }
- } else {
- for (Iterator<Component> componentIterator = getComponentIterator(); componentIterator
- .hasNext();) {
- Component component = componentIterator.next();
- boolean valid = vertical ? ComponentSizeValidator
- .checkHeights(component) : ComponentSizeValidator
- .checkWidths(component);
- if (!valid) {
- if (components == null) {
- components = new HashSet<Component>();
- }
- components.add(component);
+ if (components == null) {
+ components = new HashSet<Component>();
}
+ components.add(component);
}
}
return components;
diff --git a/server/src/com/vaadin/ui/AbstractSingleComponentContainer.java b/server/src/com/vaadin/ui/AbstractSingleComponentContainer.java
new file mode 100644
index 0000000000..20660ce955
--- /dev/null
+++ b/server/src/com/vaadin/ui/AbstractSingleComponentContainer.java
@@ -0,0 +1,281 @@
+/*
+ * Copyright 2011-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.ui;
+
+import java.util.Collections;
+import java.util.Iterator;
+
+import com.vaadin.server.ComponentSizeValidator;
+
+/**
+ * Abstract base class for component containers that have only one child
+ * component.
+ *
+ * For component containers that support multiple children, inherit
+ * {@link AbstractComponentContainer} instead of this class.
+ *
+ * @since 7.0
+ */
+public abstract class AbstractSingleComponentContainer extends
+ AbstractComponent implements SingleComponentContainer {
+
+ private Component content;
+
+ @Override
+ public int getComponentCount() {
+ return (content != null) ? 1 : 0;
+ }
+
+ @Override
+ public Iterator<Component> iterator() {
+ if (content != null) {
+ return Collections.singletonList(content).iterator();
+ } else {
+ return Collections.<Component> emptyList().iterator();
+ }
+ }
+
+ /* documented in interface */
+ @Override
+ public void addComponentAttachListener(ComponentAttachListener listener) {
+ addListener(ComponentAttachEvent.class, listener,
+ ComponentAttachListener.attachMethod);
+
+ }
+
+ /* documented in interface */
+ @Override
+ public void removeComponentAttachListener(ComponentAttachListener listener) {
+ removeListener(ComponentAttachEvent.class, listener,
+ ComponentAttachListener.attachMethod);
+ }
+
+ /* documented in interface */
+ @Override
+ public void addComponentDetachListener(ComponentDetachListener listener) {
+ addListener(ComponentDetachEvent.class, listener,
+ ComponentDetachListener.detachMethod);
+ }
+
+ /* documented in interface */
+ @Override
+ public void removeComponentDetachListener(ComponentDetachListener listener) {
+ removeListener(ComponentDetachEvent.class, listener,
+ ComponentDetachListener.detachMethod);
+ }
+
+ /**
+ * Fires the component attached event. This is called by the
+ * {@link #setContent(Component)} method after the component has been set as
+ * the content.
+ *
+ * @param component
+ * the component that has been added to this container.
+ */
+ protected void fireComponentAttachEvent(Component component) {
+ fireEvent(new ComponentAttachEvent(this, component));
+ }
+
+ /**
+ * Fires the component detached event. This is called by the
+ * {@link #setContent(Component)} method after the content component has
+ * been replaced by other content.
+ *
+ * @param component
+ * the component that has been removed from this container.
+ */
+ protected void fireComponentDetachEvent(Component component) {
+ fireEvent(new ComponentDetachEvent(this, component));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.vaadin.ui.HasComponents#isComponentVisible(com.vaadin.ui.Component)
+ */
+ @Override
+ public boolean isComponentVisible(Component childComponent) {
+ return true;
+ }
+
+ @Override
+ public void setVisible(boolean visible) {
+ if (isVisible() == visible) {
+ return;
+ }
+
+ super.setVisible(visible);
+ // If the visibility state is toggled it might affect all children
+ // aswell, e.g. make container visible should make children visible if
+ // they were only hidden because the container was hidden.
+ markAsDirtyRecursive();
+ }
+
+ @Override
+ public Component getContent() {
+ return content;
+ }
+
+ /**
+ * Sets the content of this container. The content is a component that
+ * serves as the outermost item of the visual contents.
+ *
+ * The content must always be set, either with a constructor parameter or by
+ * calling this method.
+ *
+ * Previous versions of Vaadin used a {@link VerticalLayout} with margins
+ * enabled as the default content but that is no longer the case.
+ *
+ * @param content
+ * a component (typically a layout) to use as content
+ */
+ @Override
+ public void setContent(Component content) {
+ Component oldContent = getContent();
+ if (oldContent == content) {
+ // do not set the same content twice
+ return;
+ }
+ if (oldContent != null && oldContent.getParent() == this) {
+ oldContent.setParent(null);
+ fireComponentDetachEvent(oldContent);
+ }
+ this.content = content;
+ if (content != null) {
+ removeFromParent(content);
+
+ content.setParent(this);
+ fireComponentAttachEvent(content);
+ }
+
+ markAsDirty();
+ }
+
+ /**
+ * Utility method for removing a component from its parent (if possible).
+ *
+ * @param content
+ * component to remove
+ */
+ // TODO move utility method elsewhere?
+ public static void removeFromParent(Component content)
+ throws IllegalArgumentException {
+ HasComponents parent = content.getParent();
+ if (parent instanceof ComponentContainer) {
+ // If the component already has a parent, try to remove it
+ ComponentContainer oldParent = (ComponentContainer) parent;
+ oldParent.removeComponent(content);
+ } else if (parent instanceof SingleComponentContainer) {
+ SingleComponentContainer oldParent = (SingleComponentContainer) parent;
+ if (oldParent.getContent() == content) {
+ oldParent.setContent(null);
+ }
+ } else if (parent != null) {
+ throw new IllegalArgumentException(
+ "Content is already attached to another parent");
+ }
+ }
+
+ // the setHeight()/setWidth() methods duplicated and simplified from
+ // AbstractComponentContainer
+
+ @Override
+ public void setWidth(float width, Unit unit) {
+ /*
+ * child tree repaints may be needed, due to our fall back support for
+ * invalid relative sizes
+ */
+ boolean dirtyChild = false;
+ boolean childrenMayBecomeUndefined = false;
+ if (getWidth() == SIZE_UNDEFINED && width != SIZE_UNDEFINED) {
+ // children currently in invalid state may need repaint
+ dirtyChild = getInvalidSizedChild(false);
+ } else if ((width == SIZE_UNDEFINED && getWidth() != SIZE_UNDEFINED)
+ || (unit == Unit.PERCENTAGE
+ && getWidthUnits() != Unit.PERCENTAGE && !ComponentSizeValidator
+ .parentCanDefineWidth(this))) {
+ /*
+ * relative width children may get to invalid state if width becomes
+ * invalid. Width may also become invalid if units become percentage
+ * due to the fallback support
+ */
+ childrenMayBecomeUndefined = true;
+ dirtyChild = getInvalidSizedChild(false);
+ }
+ super.setWidth(width, unit);
+ repaintChangedChildTree(dirtyChild, childrenMayBecomeUndefined, false);
+ }
+
+ private void repaintChangedChildTree(boolean invalidChild,
+ boolean childrenMayBecomeUndefined, boolean vertical) {
+ if (getContent() == null) {
+ return;
+ }
+ boolean needRepaint = false;
+ if (childrenMayBecomeUndefined) {
+ // if became invalid now
+ needRepaint = !invalidChild && getInvalidSizedChild(vertical);
+ } else if (invalidChild) {
+ // if not still invalid
+ needRepaint = !getInvalidSizedChild(vertical);
+ }
+ if (needRepaint) {
+ getContent().markAsDirtyRecursive();
+ }
+ }
+
+ private boolean getInvalidSizedChild(final boolean vertical) {
+ Component content = getContent();
+ if (content == null) {
+ return false;
+ }
+ if (vertical) {
+ return !ComponentSizeValidator.checkHeights(content);
+ } else {
+ return !ComponentSizeValidator.checkWidths(content);
+ }
+ }
+
+ @Override
+ public void setHeight(float height, Unit unit) {
+ /*
+ * child tree repaints may be needed, due to our fall back support for
+ * invalid relative sizes
+ */
+ boolean dirtyChild = false;
+ boolean childrenMayBecomeUndefined = false;
+ if (getHeight() == SIZE_UNDEFINED && height != SIZE_UNDEFINED) {
+ // children currently in invalid state may need repaint
+ dirtyChild = getInvalidSizedChild(true);
+ } else if ((height == SIZE_UNDEFINED && getHeight() != SIZE_UNDEFINED)
+ || (unit == Unit.PERCENTAGE
+ && getHeightUnits() != Unit.PERCENTAGE && !ComponentSizeValidator
+ .parentCanDefineHeight(this))) {
+ /*
+ * relative height children may get to invalid state if height
+ * becomes invalid. Height may also become invalid if units become
+ * percentage due to the fallback support.
+ */
+ childrenMayBecomeUndefined = true;
+ dirtyChild = getInvalidSizedChild(true);
+ }
+ super.setHeight(height, unit);
+ repaintChangedChildTree(dirtyChild, childrenMayBecomeUndefined, true);
+ }
+
+}
diff --git a/server/src/com/vaadin/ui/ComponentContainer.java b/server/src/com/vaadin/ui/ComponentContainer.java
index 3663134520..5ef41d7cbf 100644
--- a/server/src/com/vaadin/ui/ComponentContainer.java
+++ b/server/src/com/vaadin/ui/ComponentContainer.java
@@ -16,9 +16,10 @@
package com.vaadin.ui;
-import java.io.Serializable;
import java.util.Iterator;
+import com.vaadin.ui.HasComponents.ComponentAttachDetachNotifier;
+
/**
* Extension to the {@link Component} interface which adds to it the capacity to
* contain other components. All UI elements that can have child elements
@@ -27,7 +28,8 @@ import java.util.Iterator;
* @author Vaadin Ltd.
* @since 3.0
*/
-public interface ComponentContainer extends HasComponents {
+public interface ComponentContainer extends HasComponents,
+ ComponentAttachDetachNotifier {
/**
* Adds the component into this container.
@@ -102,14 +104,6 @@ public interface ComponentContainer extends HasComponents {
public void moveComponentsFrom(ComponentContainer source);
/**
- * Listens the component attach events.
- *
- * @param listener
- * the listener to add.
- */
- public void addComponentAttachListener(ComponentAttachListener listener);
-
- /**
* @deprecated Since 7.0, replaced by
* {@link #addComponentAttachListener(ComponentAttachListener)}
**/
@@ -117,14 +111,6 @@ public interface ComponentContainer extends HasComponents {
public void addListener(ComponentAttachListener listener);
/**
- * Stops the listening component attach events.
- *
- * @param listener
- * the listener to removed.
- */
- public void removeComponentAttachListener(ComponentAttachListener listener);
-
- /**
* @deprecated Since 7.0, replaced by
* {@link #removeComponentAttachListener(ComponentAttachListener)}
**/
@@ -132,11 +118,6 @@ public interface ComponentContainer extends HasComponents {
public void removeListener(ComponentAttachListener listener);
/**
- * Listens the component detach events.
- */
- public void addComponentDetachListener(ComponentDetachListener listener);
-
- /**
* @deprecated Since 7.0, replaced by
* {@link #addComponentDetachListener(ComponentDetachListener)}
**/
@@ -144,130 +125,10 @@ public interface ComponentContainer extends HasComponents {
public void addListener(ComponentDetachListener listener);
/**
- * Stops the listening component detach events.
- */
- public void removeComponentDetachListener(ComponentDetachListener listener);
-
- /**
* @deprecated Since 7.0, replaced by
* {@link #removeComponentDetachListener(ComponentDetachListener)}
**/
@Deprecated
public void removeListener(ComponentDetachListener listener);
- /**
- * Component attach listener interface.
- */
- public interface ComponentAttachListener extends Serializable {
-
- /**
- * A new component is attached to container.
- *
- * @param event
- * the component attach event.
- */
- public void componentAttachedToContainer(ComponentAttachEvent event);
- }
-
- /**
- * Component detach listener interface.
- */
- public interface ComponentDetachListener extends Serializable {
-
- /**
- * A component has been detached from container.
- *
- * @param event
- * the component detach event.
- */
- public void componentDetachedFromContainer(ComponentDetachEvent event);
- }
-
- /**
- * Component attach event sent when a component is attached to container.
- */
- @SuppressWarnings("serial")
- public static class ComponentAttachEvent extends Component.Event {
-
- private final Component component;
-
- /**
- * Creates a new attach event.
- *
- * @param container
- * the component container the component has been detached
- * to.
- * @param attachedComponent
- * the component that has been attached.
- */
- public ComponentAttachEvent(ComponentContainer container,
- Component attachedComponent) {
- super(container);
- component = attachedComponent;
- }
-
- /**
- * Gets the component container.
- *
- * @param the
- * component container.
- */
- public ComponentContainer getContainer() {
- return (ComponentContainer) getSource();
- }
-
- /**
- * Gets the attached component.
- *
- * @param the
- * attach component.
- */
- public Component getAttachedComponent() {
- return component;
- }
- }
-
- /**
- * Component detach event sent when a component is detached from container.
- */
- @SuppressWarnings("serial")
- public static class ComponentDetachEvent extends Component.Event {
-
- private final Component component;
-
- /**
- * Creates a new detach event.
- *
- * @param container
- * the component container the component has been detached
- * from.
- * @param detachedComponent
- * the component that has been detached.
- */
- public ComponentDetachEvent(ComponentContainer container,
- Component detachedComponent) {
- super(container);
- component = detachedComponent;
- }
-
- /**
- * Gets the component container.
- *
- * @param the
- * component container.
- */
- public ComponentContainer getContainer() {
- return (ComponentContainer) getSource();
- }
-
- /**
- * Gets the detached component.
- *
- * @return the detached component.
- */
- public Component getDetachedComponent() {
- return component;
- }
- }
-
}
diff --git a/server/src/com/vaadin/ui/HasComponents.java b/server/src/com/vaadin/ui/HasComponents.java
index db0aa1ca8e..4f6320f6b2 100644
--- a/server/src/com/vaadin/ui/HasComponents.java
+++ b/server/src/com/vaadin/ui/HasComponents.java
@@ -15,8 +15,12 @@
*/
package com.vaadin.ui;
+import java.io.Serializable;
+import java.lang.reflect.Method;
import java.util.Iterator;
+import com.vaadin.util.ReflectTools;
+
/**
* Interface that must be implemented by all {@link Component}s that contain
* other {@link Component}s.
@@ -55,4 +59,161 @@ public interface HasComponents extends Component, Iterable<Component> {
*/
public boolean isComponentVisible(Component childComponent);
+ /**
+ * Interface for {@link HasComponents} implementations that support sending
+ * attach and detach events for components.
+ *
+ * @since 7.0
+ */
+ public interface ComponentAttachDetachNotifier extends Serializable {
+ /**
+ * Listens the component attach events.
+ *
+ * @param listener
+ * the listener to add.
+ */
+ public void addComponentAttachListener(ComponentAttachListener listener);
+
+ /**
+ * Stops the listening component attach events.
+ *
+ * @param listener
+ * the listener to removed.
+ */
+ public void removeComponentAttachListener(
+ ComponentAttachListener listener);
+
+ /**
+ * Listens the component detach events.
+ */
+ public void addComponentDetachListener(ComponentDetachListener listener);
+
+ /**
+ * Stops the listening component detach events.
+ */
+ public void removeComponentDetachListener(
+ ComponentDetachListener listener);
+ }
+
+ /**
+ * Component attach listener interface.
+ */
+ public interface ComponentAttachListener extends Serializable {
+
+ public static final Method attachMethod = ReflectTools.findMethod(
+ ComponentAttachListener.class, "componentAttachedToContainer",
+ ComponentAttachEvent.class);
+
+ /**
+ * A new component is attached to container.
+ *
+ * @param event
+ * the component attach event.
+ */
+ public void componentAttachedToContainer(ComponentAttachEvent event);
+ }
+
+ /**
+ * Component detach listener interface.
+ */
+ public interface ComponentDetachListener extends Serializable {
+
+ public static final Method detachMethod = ReflectTools.findMethod(
+ ComponentDetachListener.class,
+ "componentDetachedFromContainer", ComponentDetachEvent.class);
+
+ /**
+ * A component has been detached from container.
+ *
+ * @param event
+ * the component detach event.
+ */
+ public void componentDetachedFromContainer(ComponentDetachEvent event);
+ }
+
+ /**
+ * Component attach event sent when a component is attached to container.
+ */
+ @SuppressWarnings("serial")
+ public static class ComponentAttachEvent extends Component.Event {
+
+ private final Component component;
+
+ /**
+ * Creates a new attach event.
+ *
+ * @param container
+ * the container the component has been detached to.
+ * @param attachedComponent
+ * the component that has been attached.
+ */
+ public ComponentAttachEvent(HasComponents container,
+ Component attachedComponent) {
+ super(container);
+ component = attachedComponent;
+ }
+
+ /**
+ * Gets the component container.
+ *
+ * @param the
+ * component container.
+ */
+ public HasComponents getContainer() {
+ return (HasComponents) getSource();
+ }
+
+ /**
+ * Gets the attached component.
+ *
+ * @param the
+ * attach component.
+ */
+ public Component getAttachedComponent() {
+ return component;
+ }
+ }
+
+ /**
+ * Component detach event sent when a component is detached from container.
+ */
+ @SuppressWarnings("serial")
+ public static class ComponentDetachEvent extends Component.Event {
+
+ private final Component component;
+
+ /**
+ * Creates a new detach event.
+ *
+ * @param container
+ * the container the component has been detached from.
+ * @param detachedComponent
+ * the component that has been detached.
+ */
+ public ComponentDetachEvent(HasComponents container,
+ Component detachedComponent) {
+ super(container);
+ component = detachedComponent;
+ }
+
+ /**
+ * Gets the component container.
+ *
+ * @param the
+ * component container.
+ */
+ public HasComponents getContainer() {
+ return (HasComponents) getSource();
+ }
+
+ /**
+ * Gets the detached component.
+ *
+ * @return the detached component.
+ */
+ public Component getDetachedComponent() {
+ return component;
+ }
+ }
+
}
diff --git a/server/src/com/vaadin/ui/LegacyWindow.java b/server/src/com/vaadin/ui/LegacyWindow.java
index 88559af0b5..79d4d0aedb 100644
--- a/server/src/com/vaadin/ui/LegacyWindow.java
+++ b/server/src/com/vaadin/ui/LegacyWindow.java
@@ -1,6 +1,6 @@
/*
@VaadinApache2LicenseForJavaFiles@
-*/
+ */
package com.vaadin.ui;
@@ -9,16 +9,16 @@ import java.net.URL;
import com.vaadin.server.LegacyApplication;
import com.vaadin.server.Page;
-import com.vaadin.server.Resource;
-import com.vaadin.server.VaadinRequest;
import com.vaadin.server.Page.BrowserWindowResizeEvent;
import com.vaadin.server.Page.BrowserWindowResizeListener;
+import com.vaadin.server.Resource;
+import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.BorderStyle;
/**
- * Helper class to emulate the main window from Vaadin 6 using UIs. This
- * class should be used in the same way as Window used as a browser level
- * window in Vaadin 6 with {@link com.vaadin.server.LegacyApplication}
+ * Helper class to emulate the main window from Vaadin 6 using UIs. This class
+ * should be used in the same way as Window used as a browser level window in
+ * Vaadin 6 with {@link com.vaadin.server.LegacyApplication}
*/
@Deprecated
public class LegacyWindow extends UI {
@@ -29,7 +29,8 @@ public class LegacyWindow extends UI {
* Create a new legacy window
*/
public LegacyWindow() {
- super();
+ super(new VerticalLayout());
+ ((VerticalLayout) getContent()).setMargin(true);
}
/**
@@ -39,7 +40,8 @@ public class LegacyWindow extends UI {
* the caption of the window
*/
public LegacyWindow(String caption) {
- super();
+ super(new VerticalLayout());
+ ((VerticalLayout) getContent()).setMargin(true);
setCaption(caption);
}
@@ -71,12 +73,11 @@ public class LegacyWindow extends UI {
* Gets the unique name of the window. The name of the window is used to
* uniquely identify it.
* <p>
- * The name also determines the URL that can be used for direct access
- * to a window. All windows can be accessed through
- * {@code http://host:port/app/win} where {@code http://host:port/app}
- * is the application URL (as returned by
- * {@link LegacyApplication#getURL()} and {@code win} is the window
- * name.
+ * The name also determines the URL that can be used for direct access to a
+ * window. All windows can be accessed through
+ * {@code http://host:port/app/win} where {@code http://host:port/app} is
+ * the application URL (as returned by {@link LegacyApplication#getURL()}
+ * and {@code win} is the window name.
* </p>
* <p>
* Note! Portlets do not support direct window access through URLs.
@@ -92,12 +93,11 @@ public class LegacyWindow extends UI {
* Sets the unique name of the window. The name of the window is used to
* uniquely identify it inside the application.
* <p>
- * The name also determines the URL that can be used for direct access
- * to a window. All windows can be accessed through
- * {@code http://host:port/app/win} where {@code http://host:port/app}
- * is the application URL (as returned by
- * {@link LegacyApplication#getURL()} and {@code win} is the window
- * name.
+ * The name also determines the URL that can be used for direct access to a
+ * window. All windows can be accessed through
+ * {@code http://host:port/app/win} where {@code http://host:port/app} is
+ * the application URL (as returned by {@link LegacyApplication#getURL()}
+ * and {@code win} is the window name.
* </p>
* <p>
* This method can only be called before the window is added to an
@@ -107,8 +107,8 @@ public class LegacyWindow extends UI {
* </p>
*
* @param name
- * the new name for the window or null if the application
- * should automatically assign a name to it
+ * the new name for the window or null if the application should
+ * automatically assign a name to it
* @throws IllegalStateException
* if the window is attached to an application
*/
@@ -124,14 +124,14 @@ public class LegacyWindow extends UI {
}
/**
- * Gets the full URL of the window. The returned URL is window specific
- * and can be used to directly refer to the window.
+ * Gets the full URL of the window. The returned URL is window specific and
+ * can be used to directly refer to the window.
* <p>
* Note! This method can not be used for portlets.
* </p>
*
- * @return the URL of the window or null if the window is not attached
- * to an application
+ * @return the URL of the window or null if the window is not attached to an
+ * application
*/
public URL getURL() {
LegacyApplication application = getApplication();
@@ -148,8 +148,8 @@ public class LegacyWindow extends UI {
}
/**
- * Opens the given resource in this UI. The contents of this UI is
- * replaced by the {@code Resource}.
+ * Opens the given resource in this UI. The contents of this UI is replaced
+ * by the {@code Resource}.
*
* @param resource
* the resource to show in this UI
@@ -167,41 +167,39 @@ public class LegacyWindow extends UI {
* Opens the given resource in a window with the given name.
* <p>
* The supplied {@code windowName} is used as the target name in a
- * window.open call in the client. This means that special values such
- * as "_blank", "_self", "_top", "_parent" have special meaning. An
- * empty or <code>null</code> window name is also a special case.
+ * window.open call in the client. This means that special values such as
+ * "_blank", "_self", "_top", "_parent" have special meaning. An empty or
+ * <code>null</code> window name is also a special case.
* </p>
* <p>
- * "", null and "_self" as {@code windowName} all causes the resource to
- * be opened in the current window, replacing any old contents. For
+ * "", null and "_self" as {@code windowName} all causes the resource to be
+ * opened in the current window, replacing any old contents. For
* downloadable content you should avoid "_self" as "_self" causes the
* client to skip rendering of any other changes as it considers them
- * irrelevant (the page will be replaced by the resource). This can
- * speed up the opening of a resource, but it might also put the client
- * side into an inconsistent state if the window content is not
- * completely replaced e.g., if the resource is downloaded instead of
- * displayed in the browser.
+ * irrelevant (the page will be replaced by the resource). This can speed up
+ * the opening of a resource, but it might also put the client side into an
+ * inconsistent state if the window content is not completely replaced e.g.,
+ * if the resource is downloaded instead of displayed in the browser.
* </p>
* <p>
- * "_blank" as {@code windowName} causes the resource to always be
- * opened in a new window or tab (depends on the browser and browser
- * settings).
+ * "_blank" as {@code windowName} causes the resource to always be opened in
+ * a new window or tab (depends on the browser and browser settings).
* </p>
* <p>
- * "_top" and "_parent" as {@code windowName} works as specified by the
- * HTML standard.
+ * "_top" and "_parent" as {@code windowName} works as specified by the HTML
+ * standard.
* </p>
* <p>
- * Any other {@code windowName} will open the resource in a window with
- * that name, either by opening a new window/tab in the browser or by
- * replacing the contents of an existing window with that name.
+ * Any other {@code windowName} will open the resource in a window with that
+ * name, either by opening a new window/tab in the browser or by replacing
+ * the contents of an existing window with that name.
* </p>
* <p>
- * As of Vaadin 7.0.0, the functionality for opening a Resource in a
- * Page has been replaced with similar methods based on a String URL.
- * This is because the usage of Resource is problematic with memory
- * management and with security features in some browsers. Is is
- * recommended to instead use {@link Link} for starting downloads.
+ * As of Vaadin 7.0.0, the functionality for opening a Resource in a Page
+ * has been replaced with similar methods based on a String URL. This is
+ * because the usage of Resource is problematic with memory management and
+ * with security features in some browsers. Is is recommended to instead use
+ * {@link Link} for starting downloads.
* </p>
*
* @param resource
@@ -220,11 +218,11 @@ public class LegacyWindow extends UI {
* name. For more information on the meaning of {@code windowName}, see
* {@link #open(Resource, String)}.
* <p>
- * As of Vaadin 7.0.0, the functionality for opening a Resource in a
- * Page has been replaced with similar methods based on a String URL.
- * This is because the usage of Resource is problematic with memory
- * management and with security features in some browsers. Is is
- * recommended to instead use {@link Link} for starting downloads.
+ * As of Vaadin 7.0.0, the functionality for opening a Resource in a Page
+ * has been replaced with similar methods based on a String URL. This is
+ * because the usage of Resource is problematic with memory management and
+ * with security features in some browsers. Is is recommended to instead use
+ * {@link Link} for starting downloads.
* </p>
*
* @param resource
@@ -246,9 +244,9 @@ public class LegacyWindow extends UI {
}
/**
- * Adds a new {@link BrowserWindowResizeListener} to this UI. The
- * listener will be notified whenever the browser window within which
- * this UI resides is resized.
+ * Adds a new {@link BrowserWindowResizeListener} to this UI. The listener
+ * will be notified whenever the browser window within which this UI resides
+ * is resized.
*
* @param resizeListener
* the listener to add
@@ -264,9 +262,8 @@ public class LegacyWindow extends UI {
}
/**
- * Removes a {@link BrowserWindowResizeListener} from this UI. The
- * listener will no longer be notified when the browser window is
- * resized.
+ * Removes a {@link BrowserWindowResizeListener} from this UI. The listener
+ * will no longer be notified when the browser window is resized.
*
* @param resizeListener
* the listener to remove
@@ -290,8 +287,7 @@ public class LegacyWindow extends UI {
}
/**
- * Gets the last known width of the browser window in which this UI
- * resides.
+ * Gets the last known width of the browser window in which this UI resides.
*
* @return the browser window width in pixels
*
@@ -306,18 +302,17 @@ public class LegacyWindow extends UI {
* Executes JavaScript in this window.
*
* <p>
- * This method allows one to inject javascript from the server to
- * client. A client implementation is not required to implement this
- * functionality, but currently all web-based clients do implement this.
+ * This method allows one to inject javascript from the server to client. A
+ * client implementation is not required to implement this functionality,
+ * but currently all web-based clients do implement this.
* </p>
*
* <p>
- * Executing javascript this way often leads to cross-browser
- * compatibility issues and regressions that are hard to resolve. Use of
- * this method should be avoided and instead it is recommended to create
- * new widgets with GWT. For more info on creating own, reusable
- * client-side widgets in Java, read the corresponding chapter in Book
- * of Vaadin.
+ * Executing javascript this way often leads to cross-browser compatibility
+ * issues and regressions that are hard to resolve. Use of this method
+ * should be avoided and instead it is recommended to create new widgets
+ * with GWT. For more info on creating own, reusable client-side widgets in
+ * Java, read the corresponding chapter in Book of Vaadin.
* </p>
*
* @param script
@@ -338,4 +333,77 @@ public class LegacyWindow extends UI {
getPage().setTitle(caption);
}
+ @Override
+ public ComponentContainer getContent() {
+ return (ComponentContainer) super.getContent();
+ }
+
+ /**
+ * Set the content of the window. For a {@link LegacyWindow}, the content
+ * must be a {@link ComponentContainer}.
+ *
+ * @param content
+ */
+ @Override
+ public void setContent(Component content) {
+ if (!(content instanceof ComponentContainer)) {
+ throw new IllegalArgumentException(
+ "The content of a LegacyWindow must be a ComponentContainer");
+ }
+ super.setContent(content);
+ }
+
+ /**
+ * This implementation replaces a component in the content container (
+ * {@link #getContent()}) instead of in the actual UI.
+ *
+ * This method should only be called when the content is a
+ * {@link ComponentContainer} (default {@link VerticalLayout} or explicitly
+ * set).
+ */
+ public void replaceComponent(Component oldComponent, Component newComponent) {
+ getContent().replaceComponent(oldComponent, newComponent);
+ }
+
+ /**
+ * Adds a component to this UI. The component is not added directly to the
+ * UI, but instead to the content container ({@link #getContent()}).
+ *
+ * This method should only be called when the content is a
+ * {@link ComponentContainer} (default {@link VerticalLayout} or explicitly
+ * set).
+ *
+ * @param component
+ * the component to add to this UI
+ *
+ * @see #getContent()
+ */
+ public void addComponent(Component component) {
+ getContent().addComponent(component);
+ }
+
+ /**
+ * This implementation removes the component from the content container (
+ * {@link #getContent()}) instead of from the actual UI.
+ *
+ * This method should only be called when the content is a
+ * {@link ComponentContainer} (default {@link VerticalLayout} or explicitly
+ * set).
+ */
+ public void removeComponent(Component component) {
+ getContent().removeComponent(component);
+ }
+
+ /**
+ * This implementation removes the components from the content container (
+ * {@link #getContent()}) instead of from the actual UI.
+ *
+ * This method should only be called when the content is a
+ * {@link ComponentContainer} (default {@link VerticalLayout} or explicitly
+ * set).
+ */
+ public void removeAllComponents() {
+ getContent().removeAllComponents();
+ }
+
} \ No newline at end of file
diff --git a/server/src/com/vaadin/ui/SingleComponentContainer.java b/server/src/com/vaadin/ui/SingleComponentContainer.java
new file mode 100644
index 0000000000..deb647e5eb
--- /dev/null
+++ b/server/src/com/vaadin/ui/SingleComponentContainer.java
@@ -0,0 +1,63 @@
+/*
+ * 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.ui;
+
+import com.vaadin.ui.HasComponents.ComponentAttachDetachNotifier;
+
+/**
+ * Interface for component containers that have one child component and do not
+ * support adding or removing components.
+ *
+ * For component containers that support multiple children, see
+ * {@link ComponentContainer} instead.
+ *
+ * @since 7.0
+ */
+public interface SingleComponentContainer extends HasComponents,
+ ComponentAttachDetachNotifier {
+
+ /**
+ * Gets the number of children this {@link SingleComponentContainer} has.
+ * This must be symmetric with what {@link #iterator()} returns and thus
+ * typically return 1 if the content is set, 0 otherwise.
+ *
+ * @return The number of child components this container has.
+ */
+ public int getComponentCount();
+
+ /**
+ * Gets the content of this container. The content is a component that
+ * serves as the outermost item of the visual contents.
+ *
+ * @return a component to use as content
+ *
+ * @see #setContent(Component)
+ */
+ public Component getContent();
+
+ /**
+ * Sets the content of this container. The content is a component that
+ * serves as the outermost item of the visual contents.
+ *
+ * The content should always be set, either as a constructor parameter or by
+ * calling this method.
+ *
+ * @return a component (typically a layout) to use as content
+ */
+ public void setContent(Component content);
+
+}
diff --git a/server/src/com/vaadin/ui/UI.java b/server/src/com/vaadin/ui/UI.java
index d2f323e5fe..e4cee9386a 100644
--- a/server/src/com/vaadin/ui/UI.java
+++ b/server/src/com/vaadin/ui/UI.java
@@ -69,9 +69,9 @@ import com.vaadin.util.ReflectTools;
* After a UI has been created by the application, it is initialized using
* {@link #init(VaadinRequest)}. This method is intended to be overridden by the
* developer to add components to the user interface and initialize
- * non-component functionality. The component hierarchy is initialized by
- * passing a {@link ComponentContainer} with the main layout of the view to
- * {@link #setContent(ComponentContainer)}.
+ * non-component functionality. The component hierarchy must be initialized by
+ * passing a {@link Component} with the main layout or other content of the view
+ * to {@link #setContent(Component)} or to the constructor of the UI.
* </p>
*
* @see #init(VaadinRequest)
@@ -79,7 +79,7 @@ import com.vaadin.util.ReflectTools;
*
* @since 7.0
*/
-public abstract class UI extends AbstractComponentContainer implements
+public abstract class UI extends AbstractSingleComponentContainer implements
Action.Container, Action.Notifier, LegacyComponent {
/**
@@ -178,22 +178,23 @@ public abstract class UI extends AbstractComponentContainer implements
private long lastUidlRequest = System.currentTimeMillis();
/**
- * Creates a new empty UI without a caption. This UI will have a
- * {@link VerticalLayout} with margins enabled as its content.
+ * Creates a new empty UI without a caption. The content of the UI must be
+ * set by calling {@link #setContent(Component)} before using the UI.
*/
public UI() {
- this((ComponentContainer) null);
+ this(null);
}
/**
- * Creates a new UI with the given component container as its content.
+ * Creates a new UI with the given component (often a layout) as its
+ * content.
*
* @param content
- * the content container to use as this UIs content.
+ * the component to use as this UIs content.
*
- * @see #setContent(ComponentContainer)
+ * @see #setContent(Component)
*/
- public UI(ComponentContainer content) {
+ public UI(Component content) {
registerRpc(rpc);
setSizeFull();
setContent(content);
@@ -224,15 +225,6 @@ public abstract class UI extends AbstractComponentContainer implements
}
/**
- * This implementation replaces a component in the content container (
- * {@link #getContent()}) instead of in the actual UI.
- */
- @Override
- public void replaceComponent(Component oldComponent, Component newComponent) {
- getContent().replaceComponent(oldComponent, newComponent);
- }
-
- /**
* Gets the application object to which the component is attached.
*
* <p>
@@ -330,7 +322,7 @@ public abstract class UI extends AbstractComponentContainer implements
/*
* (non-Javadoc)
*
- * @see com.vaadin.ui.ComponentContainer#getComponentIterator()
+ * @see com.vaadin.ui.HasComponents#iterator()
*/
@Override
public Iterator<Component> iterator() {
@@ -541,89 +533,6 @@ public abstract class UI extends AbstractComponentContainer implements
}
/**
- * Gets the content of this UI. The content is a component container that
- * serves as the outermost item of the visual contents of this UI.
- *
- * @return a component container to use as content
- *
- * @see #setContent(ComponentContainer)
- * @see #createDefaultLayout()
- */
- public ComponentContainer getContent() {
- return (ComponentContainer) getState().content;
- }
-
- /**
- * Helper method to create the default content layout that is used if no
- * content has not been explicitly defined.
- *
- * @return a newly created layout
- */
- private static VerticalLayout createDefaultLayout() {
- VerticalLayout layout = new VerticalLayout();
- layout.setMargin(true);
- return layout;
- }
-
- /**
- * Sets the content of this UI. The content is a component container that
- * serves as the outermost item of the visual contents of this UI. If no
- * content has been set, a {@link VerticalLayout} with margins enabled will
- * be used by default - see {@link #createDefaultLayout()}. The content can
- * also be set in a constructor.
- *
- * @return a component container to use as content
- *
- * @see #UI(ComponentContainer)
- * @see #createDefaultLayout()
- */
- public void setContent(ComponentContainer content) {
- if (content == null) {
- content = createDefaultLayout();
- }
-
- if (getState().content != null) {
- super.removeComponent((Component) getState().content);
- }
- getState().content = content;
- if (content != null) {
- super.addComponent(content);
- }
- }
-
- /**
- * Adds a component to this UI. The component is not added directly to the
- * UI, but instead to the content container ({@link #getContent()}).
- *
- * @param component
- * the component to add to this UI
- *
- * @see #getContent()
- */
- @Override
- public void addComponent(Component component) {
- getContent().addComponent(component);
- }
-
- /**
- * This implementation removes the component from the content container (
- * {@link #getContent()}) instead of from the actual UI.
- */
- @Override
- public void removeComponent(Component component) {
- getContent().removeComponent(component);
- }
-
- /**
- * This implementation removes the components from the content container (
- * {@link #getContent()}) instead of from the actual UI.
- */
- @Override
- public void removeAllComponents() {
- getContent().removeAllComponents();
- }
-
- /**
* Internal initialization method, should not be overridden. This method is
* not declared as final because that would break compatibility with e.g.
* CDI.
diff --git a/server/tests/src/com/vaadin/tests/server/component/abstractcomponentcontainer/TestAbstractComponentContainerListeners.java b/server/tests/src/com/vaadin/tests/server/component/abstractcomponentcontainer/TestAbstractComponentContainerListeners.java
index f9f170eb2a..9763354b57 100644
--- a/server/tests/src/com/vaadin/tests/server/component/abstractcomponentcontainer/TestAbstractComponentContainerListeners.java
+++ b/server/tests/src/com/vaadin/tests/server/component/abstractcomponentcontainer/TestAbstractComponentContainerListeners.java
@@ -1,10 +1,10 @@
package com.vaadin.tests.server.component.abstractcomponentcontainer;
import com.vaadin.tests.server.component.AbstractListenerMethodsTest;
-import com.vaadin.ui.ComponentContainer.ComponentAttachEvent;
-import com.vaadin.ui.ComponentContainer.ComponentAttachListener;
-import com.vaadin.ui.ComponentContainer.ComponentDetachEvent;
-import com.vaadin.ui.ComponentContainer.ComponentDetachListener;
+import com.vaadin.ui.HasComponents.ComponentAttachEvent;
+import com.vaadin.ui.HasComponents.ComponentAttachListener;
+import com.vaadin.ui.HasComponents.ComponentDetachEvent;
+import com.vaadin.ui.HasComponents.ComponentDetachListener;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.VerticalLayout;
diff --git a/server/tests/src/com/vaadin/tests/server/component/ui/UIAddRemoveComponents.java b/server/tests/src/com/vaadin/tests/server/component/ui/LegacyUIAddRemoveComponents.java
index 1b07321605..1a5e19e0da 100644
--- a/server/tests/src/com/vaadin/tests/server/component/ui/UIAddRemoveComponents.java
+++ b/server/tests/src/com/vaadin/tests/server/component/ui/LegacyUIAddRemoveComponents.java
@@ -9,11 +9,11 @@ import org.junit.Test;
import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.Component;
import com.vaadin.ui.Label;
-import com.vaadin.ui.UI;
+import com.vaadin.ui.LegacyWindow;
-public class UIAddRemoveComponents {
+public class LegacyUIAddRemoveComponents {
- private static class TestUI extends UI {
+ private static class TestUI extends LegacyWindow {
@Override
protected void init(VaadinRequest request) {
}
@@ -21,7 +21,7 @@ public class UIAddRemoveComponents {
@Test
public void addComponent() {
- UI ui = new TestUI();
+ TestUI ui = new TestUI();
Component c = new Label("abc");
ui.addComponent(c);
@@ -34,7 +34,7 @@ public class UIAddRemoveComponents {
@Test
public void removeComponent() {
- UI ui = new TestUI();
+ TestUI ui = new TestUI();
Component c = new Label("abc");
ui.addComponent(c);
@@ -49,7 +49,7 @@ public class UIAddRemoveComponents {
@Test
public void replaceComponent() {
- UI ui = new TestUI();
+ TestUI ui = new TestUI();
Component c = new Label("abc");
Component d = new Label("def");
diff --git a/server/tests/src/com/vaadin/tests/server/components/ComponentAttachDetachListenerTest.java b/server/tests/src/com/vaadin/tests/server/components/ComponentAttachDetachListenerTest.java
index 3ba1c4c7f1..df515795eb 100644
--- a/server/tests/src/com/vaadin/tests/server/components/ComponentAttachDetachListenerTest.java
+++ b/server/tests/src/com/vaadin/tests/server/components/ComponentAttachDetachListenerTest.java
@@ -8,14 +8,14 @@ import com.vaadin.ui.AbsoluteLayout;
import com.vaadin.ui.AbsoluteLayout.ComponentPosition;
import com.vaadin.ui.AbstractOrderedLayout;
import com.vaadin.ui.Component;
-import com.vaadin.ui.ComponentContainer;
-import com.vaadin.ui.ComponentContainer.ComponentAttachEvent;
-import com.vaadin.ui.ComponentContainer.ComponentAttachListener;
-import com.vaadin.ui.ComponentContainer.ComponentDetachEvent;
-import com.vaadin.ui.ComponentContainer.ComponentDetachListener;
import com.vaadin.ui.CssLayout;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.GridLayout.Area;
+import com.vaadin.ui.HasComponents;
+import com.vaadin.ui.HasComponents.ComponentAttachEvent;
+import com.vaadin.ui.HasComponents.ComponentAttachListener;
+import com.vaadin.ui.HasComponents.ComponentDetachEvent;
+import com.vaadin.ui.HasComponents.ComponentDetachListener;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
@@ -29,12 +29,12 @@ public class ComponentAttachDetachListenerTest extends TestCase {
// General variables
private int attachCounter = 0;
private Component attachedComponent = null;
- private ComponentContainer attachTarget = null;
+ private HasComponents attachTarget = null;
private boolean foundInContainer = false;
private int detachCounter = 0;
private Component detachedComponent = null;
- private ComponentContainer detachedTarget = null;
+ private HasComponents detachedTarget = null;
// Ordered layout specific variables
private int indexOfComponent = -1;
@@ -53,7 +53,7 @@ public class ComponentAttachDetachListenerTest extends TestCase {
attachTarget = event.getContainer();
// Search for component in container (should be found)
- Iterator<Component> iter = attachTarget.getComponentIterator();
+ Iterator<Component> iter = attachTarget.iterator();
while (iter.hasNext()) {
if (iter.next() == attachedComponent) {
foundInContainer = true;
@@ -83,7 +83,7 @@ public class ComponentAttachDetachListenerTest extends TestCase {
detachedTarget = event.getContainer();
// Search for component in container (should NOT be found)
- Iterator<Component> iter = detachedTarget.getComponentIterator();
+ Iterator<Component> iter = detachedTarget.iterator();
while (iter.hasNext()) {
if (iter.next() == detachedComponent) {
foundInContainer = true;
@@ -129,20 +129,20 @@ public class ComponentAttachDetachListenerTest extends TestCase {
super.setUp();
olayout = new HorizontalLayout();
- olayout.addListener(new MyAttachListener());
- olayout.addListener(new MyDetachListener());
+ olayout.addComponentAttachListener(new MyAttachListener());
+ olayout.addComponentDetachListener(new MyDetachListener());
gridlayout = new GridLayout();
- gridlayout.addListener(new MyAttachListener());
- gridlayout.addListener(new MyDetachListener());
+ gridlayout.addComponentAttachListener(new MyAttachListener());
+ gridlayout.addComponentDetachListener(new MyDetachListener());
absolutelayout = new AbsoluteLayout();
- absolutelayout.addListener(new MyAttachListener());
- absolutelayout.addListener(new MyDetachListener());
+ absolutelayout.addComponentAttachListener(new MyAttachListener());
+ absolutelayout.addComponentDetachListener(new MyDetachListener());
csslayout = new CssLayout();
- csslayout.addListener(new MyAttachListener());
- csslayout.addListener(new MyDetachListener());
+ csslayout.addComponentAttachListener(new MyAttachListener());
+ csslayout.addComponentDetachListener(new MyDetachListener());
}
public void testOrderedLayoutAttachListener() {
diff --git a/server/tests/src/com/vaadin/ui/LabelDataSource.java b/server/tests/src/com/vaadin/ui/LabelDataSource.java
index 506a635814..7ef8d67c2a 100644
--- a/server/tests/src/com/vaadin/ui/LabelDataSource.java
+++ b/server/tests/src/com/vaadin/ui/LabelDataSource.java
@@ -122,7 +122,7 @@ public class LabelDataSource {
label.setPropertyDataSource(integerDataSource);
UI ui = new MockUI();
ui.setLocale(Locale.GERMANY);
- ui.addComponent(label);
+ ui.setContent(label);
Assert.assertEquals(INTEGER_STRING_VALUE_DE, label.getState().text);
}
}
diff --git a/shared/src/com/vaadin/shared/ui/ui/UIState.java b/shared/src/com/vaadin/shared/ui/ui/UIState.java
index 6bbfeb18e1..c734ee5d0b 100644
--- a/shared/src/com/vaadin/shared/ui/ui/UIState.java
+++ b/shared/src/com/vaadin/shared/ui/ui/UIState.java
@@ -16,8 +16,6 @@
package com.vaadin.shared.ui.ui;
import com.vaadin.shared.ComponentState;
-import com.vaadin.shared.Connector;
public class UIState extends ComponentState {
- public Connector content;
} \ No newline at end of file
diff --git a/uitest/src/com/vaadin/tests/Components.java b/uitest/src/com/vaadin/tests/Components.java
index de408104ae..7f024e774a 100644
--- a/uitest/src/com/vaadin/tests/Components.java
+++ b/uitest/src/com/vaadin/tests/Components.java
@@ -22,7 +22,6 @@ import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractComponentTest;
import com.vaadin.ui.AbstractComponent;
import com.vaadin.ui.Component;
-import com.vaadin.ui.ComponentContainer;
import com.vaadin.ui.Embedded;
import com.vaadin.ui.HorizontalSplitPanel;
import com.vaadin.ui.Label;
@@ -256,7 +255,7 @@ public class Components extends LegacyApplication {
try {
AbstractComponentTest t = cls.newInstance();
t.init();
- ComponentContainer c = t.getMainWindow().getContent();
+ Component c = t.getMainWindow().getContent();
t.getMainWindow().setContent(null);
return c;
} catch (InstantiationException e) {
diff --git a/uitest/src/com/vaadin/tests/ScrollbarStressTest.java b/uitest/src/com/vaadin/tests/ScrollbarStressTest.java
index c671c5aa71..c72817ac41 100644
--- a/uitest/src/com/vaadin/tests/ScrollbarStressTest.java
+++ b/uitest/src/com/vaadin/tests/ScrollbarStressTest.java
@@ -126,7 +126,7 @@ public class ScrollbarStressTest extends LegacyApplication {
el.addComponent(ol);
- main.getContent().addComponent(el);
+ main.addComponent(el);
main.removeWindow(subwindow);
}
diff --git a/uitest/src/com/vaadin/tests/application/DeploymentConfigurationTest.java b/uitest/src/com/vaadin/tests/application/DeploymentConfigurationTest.java
index 9c89254bd7..799622b31d 100644
--- a/uitest/src/com/vaadin/tests/application/DeploymentConfigurationTest.java
+++ b/uitest/src/com/vaadin/tests/application/DeploymentConfigurationTest.java
@@ -5,15 +5,20 @@ import java.util.Properties;
import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.Label;
import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
public class DeploymentConfigurationTest extends UI {
@Override
protected void init(VaadinRequest request) {
+ VerticalLayout layout = new VerticalLayout();
+ layout.setMargin(true);
+ setContent(layout);
+
Properties params = getSession().getConfiguration().getInitParameters();
for (Object key : params.keySet()) {
- addComponent(new Label(key + ": "
+ layout.addComponent(new Label(key + ": "
+ params.getProperty((String) key)));
}
}
diff --git a/uitest/src/com/vaadin/tests/components/AbstractComponentContainerTest.java b/uitest/src/com/vaadin/tests/components/AbstractComponentContainerTest.java
index be3b7760f2..146e996eaf 100644
--- a/uitest/src/com/vaadin/tests/components/AbstractComponentContainerTest.java
+++ b/uitest/src/com/vaadin/tests/components/AbstractComponentContainerTest.java
@@ -7,10 +7,10 @@ import java.util.LinkedHashMap;
import com.vaadin.ui.AbstractComponentContainer;
import com.vaadin.ui.Button;
import com.vaadin.ui.Component;
-import com.vaadin.ui.ComponentContainer.ComponentAttachEvent;
-import com.vaadin.ui.ComponentContainer.ComponentAttachListener;
-import com.vaadin.ui.ComponentContainer.ComponentDetachEvent;
-import com.vaadin.ui.ComponentContainer.ComponentDetachListener;
+import com.vaadin.ui.HasComponents.ComponentAttachEvent;
+import com.vaadin.ui.HasComponents.ComponentAttachListener;
+import com.vaadin.ui.HasComponents.ComponentDetachEvent;
+import com.vaadin.ui.HasComponents.ComponentDetachListener;
import com.vaadin.ui.HorizontalSplitPanel;
import com.vaadin.ui.InlineDateField;
import com.vaadin.ui.NativeButton;
diff --git a/uitest/src/com/vaadin/tests/components/AbstractTestUI.java b/uitest/src/com/vaadin/tests/components/AbstractTestUI.java
index 480fd2df57..a044b52f18 100644
--- a/uitest/src/com/vaadin/tests/components/AbstractTestUI.java
+++ b/uitest/src/com/vaadin/tests/components/AbstractTestUI.java
@@ -17,10 +17,14 @@ public abstract class AbstractTestUI extends UI {
Label label = new Label(getTestDescription(), ContentMode.HTML);
label.setWidth("100%");
+ VerticalLayout rootLayout = new VerticalLayout();
+ rootLayout.setMargin(true);
+ setContent(rootLayout);
+
layout = new VerticalLayout();
- getContent().addComponent(label);
- getContent().addComponent(layout);
+ rootLayout.addComponent(label);
+ rootLayout.addComponent(layout);
((VerticalLayout) getContent()).setExpandRatio(layout, 1);
setup(request);
@@ -34,17 +38,14 @@ public abstract class AbstractTestUI extends UI {
protected abstract void setup(VaadinRequest request);
- @Override
public void addComponent(Component c) {
getLayout().addComponent(c);
}
- @Override
public void removeComponent(Component c) {
getLayout().removeComponent(c);
}
- @Override
public void replaceComponent(Component oldComponent, Component newComponent) {
getLayout().replaceComponent(oldComponent, newComponent);
}
diff --git a/uitest/src/com/vaadin/tests/components/LayoutAttachListenerInfo.java b/uitest/src/com/vaadin/tests/components/LayoutAttachListenerInfo.java
index 6e54c0d9f4..b815705883 100644
--- a/uitest/src/com/vaadin/tests/components/LayoutAttachListenerInfo.java
+++ b/uitest/src/com/vaadin/tests/components/LayoutAttachListenerInfo.java
@@ -7,9 +7,9 @@ import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.ui.AbsoluteLayout;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.ComponentContainer;
-import com.vaadin.ui.ComponentContainer.ComponentAttachEvent;
import com.vaadin.ui.GridLayout;
+import com.vaadin.ui.HasComponents.ComponentAttachEvent;
+import com.vaadin.ui.HasComponents.ComponentAttachListener;
import com.vaadin.ui.Label;
import com.vaadin.ui.Notification;
import com.vaadin.ui.OptionGroup;
@@ -26,7 +26,7 @@ public class LayoutAttachListenerInfo extends TestBase {
"AbsoluteLayout", "OrderedLayout", "GridLayout"));
layouts.select("AbsoluteLayout");
layouts.setImmediate(true);
- layouts.addListener(new ValueChangeListener() {
+ layouts.addValueChangeListener(new ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
if (event.getProperty().getValue().equals("AbsoluteLayout")) {
@@ -64,7 +64,7 @@ public class LayoutAttachListenerInfo extends TestBase {
final AbsoluteLayout a = new AbsoluteLayout();
a.setWidth("300px");
a.setHeight("300px");
- a.addListener(new ComponentContainer.ComponentAttachListener() {
+ a.addComponentAttachListener(new ComponentAttachListener() {
@Override
public void componentAttachedToContainer(ComponentAttachEvent event) {
AbsoluteLayout layout = (AbsoluteLayout) event.getContainer();
@@ -93,7 +93,7 @@ public class LayoutAttachListenerInfo extends TestBase {
final VerticalLayout v = new VerticalLayout();
v.setWidth("300px");
v.setHeight("300px");
- v.addListener(new ComponentContainer.ComponentAttachListener() {
+ v.addComponentAttachListener(new ComponentAttachListener() {
@Override
public void componentAttachedToContainer(ComponentAttachEvent event) {
VerticalLayout layout = (VerticalLayout) event.getContainer();
@@ -122,7 +122,7 @@ public class LayoutAttachListenerInfo extends TestBase {
final GridLayout g = new GridLayout(4, 4);
g.setWidth("300px");
g.setHeight("300px");
- g.addListener(new ComponentContainer.ComponentAttachListener() {
+ g.addComponentAttachListener(new ComponentAttachListener() {
@Override
public void componentAttachedToContainer(ComponentAttachEvent event) {
GridLayout layout = (GridLayout) event.getContainer();
diff --git a/uitest/src/com/vaadin/tests/components/TestBase.java b/uitest/src/com/vaadin/tests/components/TestBase.java
index 08e39f7e6f..b500a1144b 100644
--- a/uitest/src/com/vaadin/tests/components/TestBase.java
+++ b/uitest/src/com/vaadin/tests/components/TestBase.java
@@ -16,10 +16,10 @@ public abstract class TestBase extends AbstractTestCase {
Label label = new Label(getDescription(), ContentMode.HTML);
label.setWidth("100%");
- window.getContent().addComponent(label);
+ window.addComponent(label);
layout = new VerticalLayout();
- window.getContent().addComponent(layout);
+ window.addComponent(layout);
((VerticalLayout) window.getContent()).setExpandRatio(layout, 1);
setup();
diff --git a/uitest/src/com/vaadin/tests/components/abstractcomponent/AllComponentTooltipTest.java b/uitest/src/com/vaadin/tests/components/abstractcomponent/AllComponentTooltipTest.java
index 3473f50ee5..4b2b1f81ce 100644
--- a/uitest/src/com/vaadin/tests/components/abstractcomponent/AllComponentTooltipTest.java
+++ b/uitest/src/com/vaadin/tests/components/abstractcomponent/AllComponentTooltipTest.java
@@ -27,7 +27,8 @@ public class AllComponentTooltipTest extends AbstractTestUI {
@Override
protected void setup(VaadinRequest request) {
- setContent(new GridLayout(5, 5));
+ GridLayout layout = new GridLayout(5, 5);
+ setContent(layout);
for (Class<? extends Component> cls : VaadinClasses.getComponents()) {
try {
AbstractComponent c = (AbstractComponent) cls.newInstance();
@@ -40,7 +41,7 @@ public class AllComponentTooltipTest extends AbstractTestUI {
c.setDescription(cls.getName());
c.setWidth("100px");
c.setHeight("100px");
- getContent().addComponent(c);
+ layout.addComponent(c);
System.out.println("Added " + cls.getName());
} catch (Exception e) {
System.err.println("Could not instatiate " + cls.getName());
diff --git a/uitest/src/com/vaadin/tests/components/menubar/MenuBarRunsOutOfBrowser.java b/uitest/src/com/vaadin/tests/components/menubar/MenuBarRunsOutOfBrowser.java
index 78c6d92ee2..0d9c3d8bba 100644
--- a/uitest/src/com/vaadin/tests/components/menubar/MenuBarRunsOutOfBrowser.java
+++ b/uitest/src/com/vaadin/tests/components/menubar/MenuBarRunsOutOfBrowser.java
@@ -23,7 +23,7 @@ public class MenuBarRunsOutOfBrowser extends AbstractTestCase {
menuBar.addItem("ABC", new ThemeResource("icons/16/document.png"), null);
menuBar.addItem("123", new ThemeResource("icons/16/help.png"), null);
- main.getContent().addComponent(menuBar);
+ main.addComponent(menuBar);
((VerticalLayout) main.getContent()).setComponentAlignment(menuBar,
Alignment.TOP_RIGHT);
diff --git a/uitest/src/com/vaadin/tests/components/table/TableInTabsheet.java b/uitest/src/com/vaadin/tests/components/table/TableInTabsheet.java
index a9cecfd6b5..ee9609bb96 100644
--- a/uitest/src/com/vaadin/tests/components/table/TableInTabsheet.java
+++ b/uitest/src/com/vaadin/tests/components/table/TableInTabsheet.java
@@ -18,7 +18,6 @@ public class TableInTabsheet extends AbstractTestUI {
@Override
protected void setup(VaadinRequest request) {
- getUI().setCaption("test");
VerticalLayout vPrinc = new VerticalLayout();
vPrinc.setStyleName(Reindeer.LAYOUT_BLUE);
diff --git a/uitest/src/com/vaadin/tests/components/ui/LazyInitUIs.java b/uitest/src/com/vaadin/tests/components/ui/LazyInitUIs.java
index 1064f2e766..57fc9f3e62 100644
--- a/uitest/src/com/vaadin/tests/components/ui/LazyInitUIs.java
+++ b/uitest/src/com/vaadin/tests/components/ui/LazyInitUIs.java
@@ -11,6 +11,7 @@ import com.vaadin.tests.components.AbstractTestUIProvider;
import com.vaadin.ui.Label;
import com.vaadin.ui.Link;
import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
public class LazyInitUIs extends AbstractTestUIProvider {
@@ -18,7 +19,11 @@ public class LazyInitUIs extends AbstractTestUIProvider {
private static class EagerInitUI extends UI {
@Override
public void init(VaadinRequest request) {
- addComponent(getRequestInfo("EagerInitUI", request));
+ VerticalLayout layout = new VerticalLayout();
+ layout.setMargin(true);
+ setContent(layout);
+
+ layout.addComponent(getRequestInfo("EagerInitUI", request));
}
}
@@ -39,7 +44,11 @@ public class LazyInitUIs extends AbstractTestUIProvider {
UI uI = new UI() {
@Override
protected void init(VaadinRequest request) {
- addComponent(getRequestInfo("LazyCreateUI", request));
+ VerticalLayout layout = new VerticalLayout();
+ layout.setMargin(true);
+ setContent(layout);
+
+ layout.addComponent(getRequestInfo("LazyCreateUI", request));
}
};
return uI;
@@ -51,20 +60,24 @@ public class LazyInitUIs extends AbstractTestUIProvider {
UI uI = new UI() {
@Override
protected void init(VaadinRequest request) {
- addComponent(getRequestInfo("NormalUI", request));
+ VerticalLayout layout = new VerticalLayout();
+ layout.setMargin(true);
+ setContent(layout);
+
+ layout.addComponent(getRequestInfo("NormalUI", request));
String location = getPage().getLocation().toString();
Link lazyCreateLink = new Link("Open lazyCreate UI",
new ExternalResource(location.replaceFirst(
"(\\?|#|$).*", "?lazyCreate#lazyCreate")));
lazyCreateLink.setTargetName("_blank");
- addComponent(lazyCreateLink);
+ layout.addComponent(lazyCreateLink);
Link lazyInitLink = new Link("Open eagerInit UI",
new ExternalResource(location.replaceFirst(
"(\\?|#|$).*", "?eagerInit#eagerInit")));
lazyInitLink.setTargetName("_blank");
- addComponent(lazyInitLink);
+ layout.addComponent(lazyInitLink);
}
};
diff --git a/uitest/src/com/vaadin/tests/components/ui/UIsInMultipleTabs.java b/uitest/src/com/vaadin/tests/components/ui/UIsInMultipleTabs.java
index 8c4ba3980d..53df69f028 100644
--- a/uitest/src/com/vaadin/tests/components/ui/UIsInMultipleTabs.java
+++ b/uitest/src/com/vaadin/tests/components/ui/UIsInMultipleTabs.java
@@ -9,6 +9,7 @@ import com.vaadin.server.VaadinServiceSession;
import com.vaadin.tests.components.AbstractTestUIProvider;
import com.vaadin.ui.Label;
import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
public class UIsInMultipleTabs extends AbstractTestUIProvider {
// No cleanup -> will leak, but shouldn't matter for tests
@@ -29,7 +30,11 @@ public class UIsInMultipleTabs extends AbstractTestUIProvider {
int currentCount = count.incrementAndGet();
String message = "This is UI number " + currentCount;
- addComponent(new Label(message));
+ VerticalLayout layout = new VerticalLayout();
+ layout.setMargin(true);
+ setContent(layout);
+
+ layout.addComponent(new Label(message));
}
}
diff --git a/uitest/src/com/vaadin/tests/components/window/SubWindowFocusAndBlurListeners.java b/uitest/src/com/vaadin/tests/components/window/SubWindowFocusAndBlurListeners.java
index bb247ee065..bb5a817362 100644
--- a/uitest/src/com/vaadin/tests/components/window/SubWindowFocusAndBlurListeners.java
+++ b/uitest/src/com/vaadin/tests/components/window/SubWindowFocusAndBlurListeners.java
@@ -10,6 +10,7 @@ import com.vaadin.event.ShortcutAction;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.ComponentContainer;
import com.vaadin.ui.Notification;
import com.vaadin.ui.TextField;
import com.vaadin.ui.UI;
@@ -68,7 +69,7 @@ public class SubWindowFocusAndBlurListeners extends TestBase {
main.addWindow(window);
- main.addComponent(new TextField());
+ ((ComponentContainer) main.getContent()).addComponent(new TextField());
Button button = new Button("Bring to front (should focus too)",
new Button.ClickListener() {
@@ -77,7 +78,7 @@ public class SubWindowFocusAndBlurListeners extends TestBase {
window.bringToFront();
}
});
- main.addComponent(button);
+ ((ComponentContainer) main.getContent()).addComponent(button);
Window window2 = new Window("Another window for testing");
main.addWindow(window2);
diff --git a/uitest/src/com/vaadin/tests/integration/IntegrationTestUI.java b/uitest/src/com/vaadin/tests/integration/IntegrationTestUI.java
index 61214ede8c..0e6cb19b30 100755
--- a/uitest/src/com/vaadin/tests/integration/IntegrationTestUI.java
+++ b/uitest/src/com/vaadin/tests/integration/IntegrationTestUI.java
@@ -9,10 +9,15 @@ import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.Label;
import com.vaadin.ui.Table;
import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
public class IntegrationTestUI extends UI {
@Override
protected void init(VaadinRequest request) {
+ VerticalLayout layout = new VerticalLayout();
+ layout.setMargin(true);
+ setContent(layout);
+
final Table table = new Table();
table.addContainerProperty("icon", Resource.class, null);
table.setItemIconPropertyId("icon");
@@ -21,7 +26,7 @@ public class IntegrationTestUI extends UI {
table.setImmediate(true);
table.setSelectable(true);
table.setVisibleColumns(new Object[] { "country" });
- addComponent(table);
+ layout.addComponent(table);
Item item = table.addItem("FI");
item.getItemProperty("icon").setValue(new ClassResource("fi.gif"));
@@ -37,6 +42,6 @@ public class IntegrationTestUI extends UI {
selectedLabel.setValue(String.valueOf(table.getValue()));
}
});
- addComponent(selectedLabel);
+ layout.addComponent(selectedLabel);
}
}
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a1/AutoGeneratingForm.java b/uitest/src/com/vaadin/tests/minitutorials/v7a1/AutoGeneratingForm.java
index 4111f6c07a..53d76a251f 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7a1/AutoGeneratingForm.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7a1/AutoGeneratingForm.java
@@ -21,6 +21,7 @@ import com.vaadin.data.fieldgroup.FieldGroup;
import com.vaadin.data.util.BeanItem;
import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
/**
* Mini tutorial code for
@@ -34,6 +35,10 @@ public class AutoGeneratingForm extends UI {
@Override
protected void init(VaadinRequest request) {
+ VerticalLayout layout = new VerticalLayout();
+ layout.setMargin(true);
+ setContent(layout);
+
FieldGroup fieldGroup = new BeanFieldGroup<Person>(Person.class);
// We need an item data source before we create the fields to be able to
@@ -44,7 +49,7 @@ public class AutoGeneratingForm extends UI {
// Loop through the properties, build fields for them and add the fields
// to this root
for (Object propertyId : fieldGroup.getUnboundPropertyIds()) {
- addComponent(fieldGroup.buildAndBind(propertyId));
+ layout.addComponent(fieldGroup.buildAndBind(propertyId));
}
}
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a1/CreatingPreserveState.java b/uitest/src/com/vaadin/tests/minitutorials/v7a1/CreatingPreserveState.java
index ffe1f09216..66de5af27e 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7a1/CreatingPreserveState.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7a1/CreatingPreserveState.java
@@ -37,7 +37,7 @@ public class CreatingPreserveState extends UI {
public void init(VaadinRequest request) {
TextField tf = new TextField("Window #" + (++windowCounter));
tf.setImmediate(true);
- getContent().addComponent(tf);
+ setContent(tf);
}
}
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a1/DifferentFeaturesForDifferentClients.java b/uitest/src/com/vaadin/tests/minitutorials/v7a1/DifferentFeaturesForDifferentClients.java
index 737de10894..6a713c4f64 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7a1/DifferentFeaturesForDifferentClients.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7a1/DifferentFeaturesForDifferentClients.java
@@ -59,8 +59,7 @@ public class DifferentFeaturesForDifferentClients extends UIProvider {
class DefaultRoot extends UI {
@Override
protected void init(VaadinRequest request) {
- getContent().addComponent(
- new Label("This browser does not support touch events"));
+ setContent(new Label("This browser does not support touch events"));
}
}
@@ -70,8 +69,7 @@ class TouchRoot extends UI {
WebBrowser webBrowser = getSession().getBrowser();
String screenSize = "" + webBrowser.getScreenWidth() + "x"
+ webBrowser.getScreenHeight();
- getContent().addComponent(
- new Label("Using a touch enabled device with screen size"
- + screenSize));
+ setContent(new Label("Using a touch enabled device with screen size"
+ + screenSize));
}
}
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a1/DynamicImageUI.java b/uitest/src/com/vaadin/tests/minitutorials/v7a1/DynamicImageUI.java
index 61cbd94f3a..a84a2206ef 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7a1/DynamicImageUI.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7a1/DynamicImageUI.java
@@ -25,7 +25,7 @@ public class DynamicImageUI extends AbstractTestUI {
// Add an image using the resource
Image image = new Image("A dynamically generated image", resource);
- getContent().addComponent(image);
+ addComponent(image);
}
@Override
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a1/FindCurrentUI.java b/uitest/src/com/vaadin/tests/minitutorials/v7a1/FindCurrentUI.java
index ebacb2f672..ba7ef78ec1 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7a1/FindCurrentUI.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7a1/FindCurrentUI.java
@@ -55,7 +55,7 @@ public class FindCurrentUI extends UI {
}
});
- addComponent(helloButton);
+ setContent(helloButton);
}
}
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a1/UsingBeanValidation.java b/uitest/src/com/vaadin/tests/minitutorials/v7a1/UsingBeanValidation.java
index 51c7cbbe60..fa0a8e8c31 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7a1/UsingBeanValidation.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7a1/UsingBeanValidation.java
@@ -77,7 +77,7 @@ public class UsingBeanValidation extends UI {
TextField firstName = new TextField("First name",
item.getItemProperty("name"));
firstName.setImmediate(true);
- addComponent(firstName);
+ setContent(firstName);
firstName.addValidator(new BeanValidator(Person.class, "name"));
}
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a1/UsingUriFragments.java b/uitest/src/com/vaadin/tests/minitutorials/v7a1/UsingUriFragments.java
index 15c4fa838e..f3bef99e65 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7a1/UsingUriFragments.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7a1/UsingUriFragments.java
@@ -23,6 +23,7 @@ import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Label;
import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
/**
* Mini tutorial code for
@@ -33,11 +34,17 @@ import com.vaadin.ui.UI;
*/
public class UsingUriFragments extends UI {
+ private VerticalLayout layout;
+
@Override
protected void init(VaadinRequest request) {
+ layout = new VerticalLayout();
+ layout.setMargin(true);
+ setContent(layout);
+
Label label = new Label("Hello, your fragment is "
+ getPage().getUriFragment());
- getContent().addComponent(label);
+ layout.addComponent(label);
// React to fragment changes
getPage().addListener(new UriFragmentChangedListener() {
@@ -50,7 +57,7 @@ public class UsingUriFragments extends UI {
// Handle the fragment received in the initial request
handleFragment(getPage().getUriFragment());
- addComponent(new Button("Show and set fragment",
+ layout.addComponent(new Button("Show and set fragment",
new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
@@ -61,7 +68,7 @@ public class UsingUriFragments extends UI {
}
private void handleFragment(String uriFragment) {
- addComponent(new Label("Got new fragment: " + uriFragment));
+ layout.addComponent(new Label("Got new fragment: " + uriFragment));
}
}
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a1/UsingXyzWhenInitializing.java b/uitest/src/com/vaadin/tests/minitutorials/v7a1/UsingXyzWhenInitializing.java
index 52499ffbe5..c4d496641d 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7a1/UsingXyzWhenInitializing.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7a1/UsingXyzWhenInitializing.java
@@ -19,6 +19,7 @@ package com.vaadin.tests.minitutorials.v7a1;
import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.Label;
import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
/**
* Mini tutorial code for
@@ -32,18 +33,22 @@ public class UsingXyzWhenInitializing extends UI {
@Override
protected void init(VaadinRequest request) {
+ VerticalLayout layout = new VerticalLayout();
+ layout.setMargin(true);
+ setContent(layout);
+
String name = request.getParameter("name");
if (name == null) {
name = "Unknown";
}
- getContent().addComponent(new Label("Hello " + name));
+ layout.addComponent(new Label("Hello " + name));
String pathInfo = request.getRequestPathInfo();
if ("/viewSource".equals(pathInfo)) {
- getContent().addComponent(new Label("This is the source"));
+ layout.addComponent(new Label("This is the source"));
} else {
- getContent().addComponent(new Label("Welcome to my application"));
+ layout.addComponent(new Label("Welcome to my application"));
}
// WebBrowser browser = request.getBrowserDetails().getWebBrowser();
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a2/ComponentInStateUI.java b/uitest/src/com/vaadin/tests/minitutorials/v7a2/ComponentInStateUI.java
index da178167ed..986811e0f4 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7a2/ComponentInStateUI.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7a2/ComponentInStateUI.java
@@ -4,6 +4,7 @@ import com.vaadin.annotations.Widgetset;
import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.Label;
import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
/**
* Mini tutorial code for
@@ -17,10 +18,14 @@ import com.vaadin.ui.UI;
public class ComponentInStateUI extends UI {
@Override
protected void init(VaadinRequest request) {
+ VerticalLayout layout = new VerticalLayout();
+ layout.setMargin(true);
+ setContent(layout);
+
ComponentInStateComponent component = new ComponentInStateComponent();
component.setOtherComponent(this);
- addComponent(component);
- addComponent(new Label("Server-side type of other component: "
+ layout.addComponent(component);
+ layout.addComponent(new Label("Server-side type of other component: "
+ component.getOtherComponent().getClass().getName()));
}
}
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a2/MyComponentUI.java b/uitest/src/com/vaadin/tests/minitutorials/v7a2/MyComponentUI.java
index caf38077bf..80aeecfa79 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7a2/MyComponentUI.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7a2/MyComponentUI.java
@@ -41,7 +41,7 @@ public class MyComponentUI extends UI {
component.setText("My component text");
- addComponent(component);
+ setContent(component);
}
} \ No newline at end of file
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a2/ResourceInStateUI.java b/uitest/src/com/vaadin/tests/minitutorials/v7a2/ResourceInStateUI.java
index 155c1d9ded..4ddf86c345 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7a2/ResourceInStateUI.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7a2/ResourceInStateUI.java
@@ -37,7 +37,7 @@ public class ResourceInStateUI extends UI {
ResourceInStateComponent component = new ResourceInStateComponent();
component.setMyIcon(new ThemeResource("../runo/icons/32/calendar.png"));
- addComponent(component);
+ setContent(component);
}
}
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a2/WidgetcontainerUI.java b/uitest/src/com/vaadin/tests/minitutorials/v7a2/WidgetcontainerUI.java
index f7cf6b4270..d81e6b4c59 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7a2/WidgetcontainerUI.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7a2/WidgetcontainerUI.java
@@ -11,15 +11,20 @@ import com.vaadin.ui.CheckBox;
import com.vaadin.ui.Component;
import com.vaadin.ui.Label;
import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
@Widgetset("com.vaadin.tests.widgetset.TestingWidgetSet")
public class WidgetcontainerUI extends UI {
@Override
public void init(VaadinRequest request) {
+ VerticalLayout layout = new VerticalLayout();
+ layout.setMargin(true);
+ setContent(layout);
+
Label label = new Label("Hello Vaadin user");
- addComponent(label);
+ layout.addComponent(label);
final WidgetContainer widgetContainer = new WidgetContainer();
- addComponent(widgetContainer);
+ layout.addComponent(widgetContainer);
widgetContainer.addComponent(new Label(
"Click the button to add components to the WidgetContainer."));
Button button = new Button("Add more components", new ClickListener() {
@@ -39,7 +44,7 @@ public class WidgetcontainerUI extends UI {
widgetContainer.addComponent(component);
}
});
- addComponent(button);
+ layout.addComponent(button);
}
} \ No newline at end of file
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a3/AnalyticsUI.java b/uitest/src/com/vaadin/tests/minitutorials/v7a3/AnalyticsUI.java
index 980d0b90b2..8bc9619902 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7a3/AnalyticsUI.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7a3/AnalyticsUI.java
@@ -28,7 +28,7 @@ public class AnalyticsUI extends UI {
final Analytics analytics = new Analytics("UA-33036133-12");
analytics.extend(this);
- addComponent(new Button("Track pageview", new Button.ClickListener() {
+ setContent(new Button("Track pageview", new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
analytics.trackPageview("/fake/url");
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a3/ComplexTypesUI.java b/uitest/src/com/vaadin/tests/minitutorials/v7a3/ComplexTypesUI.java
index 792be69410..fd271db7e6 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7a3/ComplexTypesUI.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7a3/ComplexTypesUI.java
@@ -25,7 +25,7 @@ public class ComplexTypesUI extends UI {
protected void init(VaadinRequest request) {
ComplexTypesComponent complexTypesComponent = new ComplexTypesComponent();
complexTypesComponent.sendComplexTypes();
- addComponent(complexTypesComponent);
+ setContent(complexTypesComponent);
}
}
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a3/FlotJavaScriptUI.java b/uitest/src/com/vaadin/tests/minitutorials/v7a3/FlotJavaScriptUI.java
index a3ed5fe11e..d1d9879a31 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7a3/FlotJavaScriptUI.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7a3/FlotJavaScriptUI.java
@@ -20,24 +20,30 @@ import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
public class FlotJavaScriptUI extends UI {
@Override
protected void init(VaadinRequest request) {
+ VerticalLayout layout = new VerticalLayout();
+ layout.setMargin(true);
+ setContent(layout);
+
final Flot flot = new Flot();
flot.setHeight("300px");
flot.setWidth("400px");
flot.addSeries(1, 2, 4, 8, 16);
- addComponent(flot);
-
- addComponent(new Button("Highlight point", new Button.ClickListener() {
- @Override
- public void buttonClick(ClickEvent event) {
- flot.highlight(0, 3);
- }
- }));
+ layout.addComponent(flot);
+
+ layout.addComponent(new Button("Highlight point",
+ new Button.ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ flot.highlight(0, 3);
+ }
+ }));
}
}
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a3/JSAPIUI.java b/uitest/src/com/vaadin/tests/minitutorials/v7a3/JSAPIUI.java
index ad4139d883..f9d79a518e 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7a3/JSAPIUI.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7a3/JSAPIUI.java
@@ -39,7 +39,7 @@ public class JSAPIUI extends UI {
}
});
- addComponent(new Link(
+ setContent(new Link(
"Send message",
new ExternalResource(
"javascript:(function(){com.example.api.notify(prompt('Message'),2);})();")));
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7a3/RedButtonUI.java b/uitest/src/com/vaadin/tests/minitutorials/v7a3/RedButtonUI.java
index 18b4b1430e..a4d4031d5f 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7a3/RedButtonUI.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7a3/RedButtonUI.java
@@ -22,6 +22,6 @@ import com.vaadin.ui.UI;
public class RedButtonUI extends UI {
@Override
protected void init(VaadinRequest request) {
- addComponent(new RedButton("My red button"));
+ setContent(new RedButton("My red button"));
}
} \ No newline at end of file
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7b5/SettingReadingSessionAttributesUI.java b/uitest/src/com/vaadin/tests/minitutorials/v7b5/SettingReadingSessionAttributesUI.java
index bc96152880..99b5973661 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7b5/SettingReadingSessionAttributesUI.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7b5/SettingReadingSessionAttributesUI.java
@@ -36,22 +36,28 @@ public class SettingReadingSessionAttributesUI extends UI {
@Override
protected void init(VaadinRequest request) {
- addComponent(statusHolder);
- addComponent(textField);
- addComponent(new Button("Set new values", new Button.ClickListener() {
- @Override
- public void buttonClick(ClickEvent event) {
- String value = textField.getValue();
+ VerticalLayout layout = new VerticalLayout();
+ layout.setMargin(true);
+ setContent(layout);
- saveValue(SettingReadingSessionAttributesUI.this, value);
- }
- }));
- addComponent(new Button("Reload page", new Button.ClickListener() {
- @Override
- public void buttonClick(ClickEvent event) {
- getPage().setLocation(getPage().getLocation());
- }
- }));
+ layout.addComponent(statusHolder);
+ layout.addComponent(textField);
+ layout.addComponent(new Button("Set new values",
+ new Button.ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ String value = textField.getValue();
+
+ saveValue(SettingReadingSessionAttributesUI.this, value);
+ }
+ }));
+ layout.addComponent(new Button("Reload page",
+ new Button.ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ getPage().setLocation(getPage().getLocation());
+ }
+ }));
showValue(this);
}
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7b6/LettingUserDownladFile.java b/uitest/src/com/vaadin/tests/minitutorials/v7b6/LettingUserDownloadFile.java
index e6a6e267a9..d5c99c931b 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7b6/LettingUserDownladFile.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7b6/LettingUserDownloadFile.java
@@ -31,7 +31,7 @@ import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.Button;
import com.vaadin.ui.UI;
-public class LettingUserDownladFile extends UI {
+public class LettingUserDownloadFile extends UI {
@Override
protected void init(VaadinRequest request) {
@@ -41,7 +41,7 @@ public class LettingUserDownladFile extends UI {
FileDownloader fileDownloader = new FileDownloader(myResource);
fileDownloader.extend(downloadButton);
- addComponent(downloadButton);
+ setContent(downloadButton);
}
private StreamResource createResource() {
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7b6/MyPopupUI.java b/uitest/src/com/vaadin/tests/minitutorials/v7b6/MyPopupUI.java
index 2c50b62d0d..59f5831468 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7b6/MyPopupUI.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7b6/MyPopupUI.java
@@ -24,7 +24,7 @@ public class MyPopupUI extends UI {
@Override
protected void init(VaadinRequest request) {
- addComponent(new Label("This is MyPopupUI"));
+ setContent(new Label("This is MyPopupUI"));
}
}
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v7b6/OpeningUIInPopup.java b/uitest/src/com/vaadin/tests/minitutorials/v7b6/OpeningUIInPopup.java
index f1db0fc478..7fd8373bbd 100644
--- a/uitest/src/com/vaadin/tests/minitutorials/v7b6/OpeningUIInPopup.java
+++ b/uitest/src/com/vaadin/tests/minitutorials/v7b6/OpeningUIInPopup.java
@@ -31,7 +31,7 @@ public class OpeningUIInPopup extends UI {
popupOpener.setFeatures("height=300,width=300");
popupOpener.extend(popupButton);
- addComponent(popupButton);
+ setContent(popupButton);
}
}
diff --git a/uitest/src/com/vaadin/tests/navigator/NavigatorTest.java b/uitest/src/com/vaadin/tests/navigator/NavigatorTest.java
index 97c4e9fd4f..08832e5e82 100644
--- a/uitest/src/com/vaadin/tests/navigator/NavigatorTest.java
+++ b/uitest/src/com/vaadin/tests/navigator/NavigatorTest.java
@@ -113,6 +113,10 @@ public class NavigatorTest extends UI {
@Override
protected void init(VaadinRequest req) {
try {
+ VerticalLayout layout = new VerticalLayout();
+ layout.setMargin(true);
+ setContent(layout);
+
navi = new Navigator(this, naviLayout);
navi.addView("", new DefaultView());
@@ -127,13 +131,13 @@ public class NavigatorTest extends UI {
navi.navigate();
- addComponent(new NaviButton("list"));
- addComponent(new NaviButton("edit"));
- addComponent(new NaviButton("forbidden"));
+ layout.addComponent(new NaviButton("list"));
+ layout.addComponent(new NaviButton("edit"));
+ layout.addComponent(new NaviButton("forbidden"));
- addComponent(params);
- addComponent(log);
- addComponent(naviLayout);
+ layout.addComponent(params);
+ layout.addComponent(log);
+ layout.addComponent(naviLayout);
} catch (Exception e) {
e.printStackTrace();
log.log("Exception: " + e);
diff --git a/uitest/src/com/vaadin/tests/tickets/Ticket2021.java b/uitest/src/com/vaadin/tests/tickets/Ticket2021.java
index 3f798a3e19..938df7befc 100644
--- a/uitest/src/com/vaadin/tests/tickets/Ticket2021.java
+++ b/uitest/src/com/vaadin/tests/tickets/Ticket2021.java
@@ -38,7 +38,7 @@ public class Ticket2021 extends LegacyApplication {
p.setContent(new VerticalLayout());
p.getContent().setSizeFull();
- w.getContent().addComponent(p);
+ w.addComponent(p);
tf1 = new TextArea();
tf1.setRows(5);
@@ -59,7 +59,7 @@ public class Ticket2021 extends LegacyApplication {
p2.setContent(new VerticalLayout());
p2.getContent().setSizeFull();
- w.getContent().addComponent(p2);
+ w.addComponent(p2);
tf2 = new TextArea();
tf2.setRows(5);
@@ -85,7 +85,7 @@ public class Ticket2021 extends LegacyApplication {
gl.setSizeFull();
gl.setMargin(false);
p3.getContent().addComponent(gl);
- w.getContent().addComponent(p3);
+ w.addComponent(p3);
tf3 = new TextArea();
tf3.setRows(5);
diff --git a/uitest/src/com/vaadin/tests/tickets/Ticket2024.java b/uitest/src/com/vaadin/tests/tickets/Ticket2024.java
index c38ba7822a..2861c9beca 100644
--- a/uitest/src/com/vaadin/tests/tickets/Ticket2024.java
+++ b/uitest/src/com/vaadin/tests/tickets/Ticket2024.java
@@ -19,7 +19,7 @@ public class Ticket2024 extends LegacyApplication {
layout.setWidth("700");
w.getContent().setSizeFull();
w.getContent().setHeight("2000");
- w.getContent().addComponent(layout);
+ w.addComponent(layout);
layout.addComponent(new Label(
"This should NOT get stuck when scrolling down"));
@@ -28,7 +28,7 @@ public class Ticket2024 extends LegacyApplication {
VerticalLayout ol = new VerticalLayout();
ol.setHeight("1000");
ol.setWidth("200");
- w.getContent().addComponent(ol);
+ w.addComponent(ol);
ol.addComponent(new Label("Just a label to enable the scrollbar"));
}
diff --git a/uitest/src/com/vaadin/tests/tickets/Ticket2029.java b/uitest/src/com/vaadin/tests/tickets/Ticket2029.java
index 8031041e5b..db3334d570 100644
--- a/uitest/src/com/vaadin/tests/tickets/Ticket2029.java
+++ b/uitest/src/com/vaadin/tests/tickets/Ticket2029.java
@@ -32,9 +32,9 @@ public class Ticket2029 extends LegacyApplication {
setMainWindow(w);
// setTheme("tests-tickets");
Panel p = createPanel();
- w.getContent().addComponent(p);
+ w.addComponent(p);
// w.getLayout().addComponent(createGLPanel());
- w.getContent().addComponent(createPanelV());
+ w.addComponent(createPanelV());
}
private Panel createPanel() {
diff --git a/uitest/src/com/vaadin/tests/tickets/Ticket2048.java b/uitest/src/com/vaadin/tests/tickets/Ticket2048.java
index cb6fba3ab8..b2a6e64cd2 100644
--- a/uitest/src/com/vaadin/tests/tickets/Ticket2048.java
+++ b/uitest/src/com/vaadin/tests/tickets/Ticket2048.java
@@ -75,8 +75,7 @@ public class Ticket2048 extends LegacyApplication {
public void buttonClick(ClickEvent event) {
Embedded newEmbedded = new Embedded(null,
new ThemeResource("icons/64/folder-add.png"));
- getMainWindow().getContent().replaceComponent(embedded,
- newEmbedded);
+ getMainWindow().replaceComponent(embedded, newEmbedded);
embedded = newEmbedded;
}
diff --git a/uitest/src/com/vaadin/tests/tickets/Ticket2101.java b/uitest/src/com/vaadin/tests/tickets/Ticket2101.java
index d3e6202542..dd10943108 100644
--- a/uitest/src/com/vaadin/tests/tickets/Ticket2101.java
+++ b/uitest/src/com/vaadin/tests/tickets/Ticket2101.java
@@ -15,7 +15,7 @@ public class Ticket2101 extends LegacyApplication {
"Button with a long text which will not fit on 50 pixels");
b.setWidth("50px");
- w.getContent().addComponent(b);
+ w.addComponent(b);
}
}
diff --git a/uitest/src/com/vaadin/tests/util/SampleDirectory.java b/uitest/src/com/vaadin/tests/util/SampleDirectory.java
index 504a4e5dfd..2f21026118 100644
--- a/uitest/src/com/vaadin/tests/util/SampleDirectory.java
+++ b/uitest/src/com/vaadin/tests/util/SampleDirectory.java
@@ -23,8 +23,8 @@ import com.vaadin.server.VaadinService;
import com.vaadin.server.VaadinServiceSession;
import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Label;
+import com.vaadin.ui.LegacyWindow;
import com.vaadin.ui.Panel;
-import com.vaadin.ui.UI;
/**
* Provides sample directory based on application directory. If this fails then
@@ -42,7 +42,8 @@ public class SampleDirectory {
* @param application
* @return file pointing to sample directory
*/
- public static File getDirectory(VaadinServiceSession application, UI uI) {
+ public static File getDirectory(VaadinServiceSession application,
+ LegacyWindow uI) {
String errorMessage = "Access to application "
+ "context base directory failed, "
+ "possible security constraint with Application "
@@ -82,9 +83,9 @@ public class SampleDirectory {
"Cannot provide sample directory"));
errorPanel.addComponent(new Label(errorMessage, ContentMode.HTML));
// Remove all components from applications main window
- uI.getContent().removeAllComponents();
+ uI.removeAllComponents();
// Add error panel
- uI.getContent().addComponent(errorPanel);
+ uI.addComponent(errorPanel);
return null;
}
}