summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorHenri Sara <hesara@vaadin.com>2012-11-21 13:28:49 +0200
committerVaadin Code Review <review@vaadin.com>2012-11-21 11:35:44 +0000
commit375024684a58c27657abb79ff63f92ce247437b5 (patch)
treecdaa8d1d871544cc68b6a5ff934c006416bb323a /client
parent19baf19b7ef1a372154ba8bcbd5e35fb6ec1f3ef (diff)
downloadvaadin-framework-375024684a58c27657abb79ff63f92ce247437b5.tar.gz
vaadin-framework-375024684a58c27657abb79ff63f92ce247437b5.zip
Implement abstract HasComponents related client side connectors (#10248)
Change-Id: I8e0d1505d24ed8d24702557a38ffd867a513bdd2
Diffstat (limited to 'client')
-rw-r--r--client/src/com/vaadin/client/ApplicationConnection.java14
-rw-r--r--client/src/com/vaadin/client/ConnectorHierarchyChangeEvent.java14
-rw-r--r--client/src/com/vaadin/client/HasComponentsConnector.java (renamed from client/src/com/vaadin/client/ComponentContainerConnector.java)7
-rw-r--r--client/src/com/vaadin/client/ui/AbstractComponentConnector.java10
-rw-r--r--client/src/com/vaadin/client/ui/AbstractComponentContainerConnector.java61
-rw-r--r--client/src/com/vaadin/client/ui/AbstractHasComponentsConnector.java71
-rw-r--r--client/src/com/vaadin/client/ui/AbstractSingleComponentContainerConnector.java61
-rw-r--r--client/src/com/vaadin/client/ui/absolutelayout/AbsoluteLayoutConnector.java8
-rw-r--r--client/src/com/vaadin/client/ui/csslayout/CssLayoutConnector.java2
-rw-r--r--client/src/com/vaadin/client/ui/layout/LayoutDependencyTree.java6
-rw-r--r--client/src/com/vaadin/client/ui/layout/MayScrollChildren.java4
-rw-r--r--client/src/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java2
-rw-r--r--client/src/com/vaadin/client/ui/panel/PanelConnector.java13
-rw-r--r--client/src/com/vaadin/client/ui/popupview/PopupViewConnector.java5
-rw-r--r--client/src/com/vaadin/client/ui/table/TableConnector.java4
-rw-r--r--client/src/com/vaadin/client/ui/ui/UIConnector.java15
-rw-r--r--client/src/com/vaadin/client/ui/window/WindowConnector.java18
17 files changed, 186 insertions, 129 deletions
diff --git a/client/src/com/vaadin/client/ApplicationConnection.java b/client/src/com/vaadin/client/ApplicationConnection.java
index 4357e431b3..4e24349570 100644
--- a/client/src/com/vaadin/client/ApplicationConnection.java
+++ b/client/src/com/vaadin/client/ApplicationConnection.java
@@ -1719,7 +1719,7 @@ public class ApplicationConnection {
VConsole.log(oldChildren);
String newChildren = "* New children: ";
- ComponentContainerConnector parent = (ComponentContainerConnector) event
+ HasComponentsConnector parent = (HasComponentsConnector) event
.getConnector();
for (ComponentConnector child : parent.getChildComponents()) {
newChildren += Util.getConnectorString(child) + " ";
@@ -1939,8 +1939,8 @@ public class ApplicationConnection {
continue;
}
- if (parentConnector instanceof ComponentContainerConnector) {
- ComponentContainerConnector ccc = (ComponentContainerConnector) parentConnector;
+ if (parentConnector instanceof HasComponentsConnector) {
+ HasComponentsConnector ccc = (HasComponentsConnector) parentConnector;
List<ComponentConnector> oldComponents = ccc
.getChildComponents();
if (!Util.collectionsEquals(oldComponents,
@@ -1957,7 +1957,7 @@ public class ApplicationConnection {
} else if (!newComponents.isEmpty()) {
VConsole.error("Hierachy claims "
+ Util.getConnectorString(parentConnector)
- + " has component children even though it isn't a ComponentContainerConnector");
+ + " has component children even though it isn't a HasComponentsConnector");
}
parentConnector.setChildren(newChildren);
@@ -2029,13 +2029,13 @@ public class ApplicationConnection {
* Create an artificial hierarchy event for containers to give
* it a chance to clean up after its children if it has any
*/
- if (connector instanceof ComponentContainerConnector) {
- ComponentContainerConnector ccc = (ComponentContainerConnector) connector;
+ if (connector instanceof HasComponentsConnector) {
+ HasComponentsConnector ccc = (HasComponentsConnector) connector;
List<ComponentConnector> oldChildren = ccc
.getChildComponents();
if (!oldChildren.isEmpty()) {
/*
- * ComponentContainerConnector has a separate child
+ * HasComponentsConnector has a separate child
* component list that should also be cleared
*/
ccc.setChildComponents(Collections
diff --git a/client/src/com/vaadin/client/ConnectorHierarchyChangeEvent.java b/client/src/com/vaadin/client/ConnectorHierarchyChangeEvent.java
index f5dff60e4c..9c97b2dd8b 100644
--- a/client/src/com/vaadin/client/ConnectorHierarchyChangeEvent.java
+++ b/client/src/com/vaadin/client/ConnectorHierarchyChangeEvent.java
@@ -41,7 +41,7 @@ public class ConnectorHierarchyChangeEvent extends
public static final Type<ConnectorHierarchyChangeHandler> TYPE = new Type<ConnectorHierarchyChangeHandler>();
List<ComponentConnector> oldChildren;
- private ComponentContainerConnector parent;
+ private HasComponentsConnector parent;
public ConnectorHierarchyChangeEvent() {
}
@@ -67,25 +67,25 @@ public class ConnectorHierarchyChangeEvent extends
}
/**
- * Returns the {@link ComponentContainerConnector} for which this event
+ * Returns the {@link HasComponentsConnector} for which this event
* occurred.
*
- * @return The {@link ComponentContainerConnector} whose child collection
+ * @return The {@link HasComponentsConnector} whose child collection
* has changed. Never returns null.
*/
- public ComponentContainerConnector getParent() {
+ public HasComponentsConnector getParent() {
return parent;
}
/**
- * Sets the {@link ComponentContainerConnector} for which this event
+ * Sets the {@link HasComponentsConnector} for which this event
* occurred.
*
* @param The
- * {@link ComponentContainerConnector} whose child collection has
+ * {@link HasComponentsConnector} whose child collection has
* changed.
*/
- public void setParent(ComponentContainerConnector parent) {
+ public void setParent(HasComponentsConnector parent) {
this.parent = parent;
}
diff --git a/client/src/com/vaadin/client/ComponentContainerConnector.java b/client/src/com/vaadin/client/HasComponentsConnector.java
index 926ad2319d..375e4792a3 100644
--- a/client/src/com/vaadin/client/ComponentContainerConnector.java
+++ b/client/src/com/vaadin/client/HasComponentsConnector.java
@@ -26,7 +26,7 @@ import com.vaadin.client.ConnectorHierarchyChangeEvent.ConnectorHierarchyChangeH
* An interface used by client-side connectors whose widget is a component
* container (implements {@link HasWidgets}).
*/
-public interface ComponentContainerConnector extends ServerConnector {
+public interface HasComponentsConnector extends ServerConnector {
/**
* Update child components caption, description and error message.
@@ -46,9 +46,8 @@ public interface ComponentContainerConnector extends ServerConnector {
/**
* Returns the children for this connector.
* <p>
- * The children for this connector are defined as all
- * {@link ComponentConnector}s whose parent is this
- * {@link ComponentContainerConnector}.
+ * The children for this connector are defined as all {@link HasComponents}s
+ * whose parent is this {@link HasComponentsConnector}.
* </p>
*
* @return A collection of children for this connector. An empty collection
diff --git a/client/src/com/vaadin/client/ui/AbstractComponentConnector.java b/client/src/com/vaadin/client/ui/AbstractComponentConnector.java
index 49e879a681..9868bc329d 100644
--- a/client/src/com/vaadin/client/ui/AbstractComponentConnector.java
+++ b/client/src/com/vaadin/client/ui/AbstractComponentConnector.java
@@ -25,7 +25,7 @@ import com.google.gwt.user.client.ui.HasEnabled;
import com.google.gwt.user.client.ui.Widget;
import com.vaadin.client.ApplicationConnection;
import com.vaadin.client.ComponentConnector;
-import com.vaadin.client.ComponentContainerConnector;
+import com.vaadin.client.HasComponentsConnector;
import com.vaadin.client.ConnectorMap;
import com.vaadin.client.LayoutManager;
import com.vaadin.client.ServerConnector;
@@ -150,8 +150,8 @@ public abstract class AbstractComponentConnector extends AbstractConnector
// Set captions
if (delegateCaptionHandling()) {
ServerConnector parent = getParent();
- if (parent instanceof ComponentContainerConnector) {
- ((ComponentContainerConnector) parent).updateCaption(this);
+ if (parent instanceof HasComponentsConnector) {
+ ((HasComponentsConnector) parent).updateCaption(this);
} else if (parent == null && !(this instanceof UIConnector)) {
VConsole.error("Parent of connector "
+ Util.getConnectorString(this)
@@ -180,8 +180,8 @@ public abstract class AbstractComponentConnector extends AbstractConnector
// make sure the caption has or has not v-disabled style
if (delegateCaptionHandling()) {
ServerConnector parent = getParent();
- if (parent instanceof ComponentContainerConnector) {
- ((ComponentContainerConnector) parent).updateCaption(this);
+ if (parent instanceof HasComponentsConnector) {
+ ((HasComponentsConnector) parent).updateCaption(this);
} else if (parent == null && !(this instanceof UIConnector)) {
VConsole.error("Parent of connector "
+ Util.getConnectorString(this)
diff --git a/client/src/com/vaadin/client/ui/AbstractComponentContainerConnector.java b/client/src/com/vaadin/client/ui/AbstractComponentContainerConnector.java
index 20afb3de4b..e070f2aabb 100644
--- a/client/src/com/vaadin/client/ui/AbstractComponentContainerConnector.java
+++ b/client/src/com/vaadin/client/ui/AbstractComponentContainerConnector.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 Vaadin Ltd.
+ * 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
@@ -15,59 +15,12 @@
*/
package com.vaadin.client.ui;
-import java.util.Collections;
-import java.util.List;
-
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.vaadin.client.ComponentConnector;
-import com.vaadin.client.ComponentContainerConnector;
-import com.vaadin.client.ConnectorHierarchyChangeEvent;
-import com.vaadin.client.ConnectorHierarchyChangeEvent.ConnectorHierarchyChangeHandler;
-
+/**
+ * Client side connector for subclasses of AbstractComponentConnector.
+ *
+ * @since 7.0
+ */
public abstract class AbstractComponentContainerConnector extends
- AbstractComponentConnector implements ComponentContainerConnector,
- ConnectorHierarchyChangeHandler {
-
- List<ComponentConnector> childComponents;
-
- private final boolean debugLogging = false;
-
- /**
- * Default constructor
- */
- public AbstractComponentContainerConnector() {
- addConnectorHierarchyChangeHandler(this);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.client.ComponentContainerConnector#getChildren()
- */
- @Override
- public List<ComponentConnector> getChildComponents() {
- if (childComponents == null) {
- return Collections.emptyList();
- }
-
- return childComponents;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.client.ComponentContainerConnector#setChildren
- * (java.util.Collection)
- */
- @Override
- public void setChildComponents(List<ComponentConnector> childComponents) {
- this.childComponents = childComponents;
- }
+ AbstractHasComponentsConnector {
- @Override
- public HandlerRegistration addConnectorHierarchyChangeHandler(
- ConnectorHierarchyChangeHandler handler) {
- return ensureHandlerManager().addHandler(
- ConnectorHierarchyChangeEvent.TYPE, handler);
- }
}
diff --git a/client/src/com/vaadin/client/ui/AbstractHasComponentsConnector.java b/client/src/com/vaadin/client/ui/AbstractHasComponentsConnector.java
new file mode 100644
index 0000000000..02d12936d6
--- /dev/null
+++ b/client/src/com/vaadin/client/ui/AbstractHasComponentsConnector.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2011 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.client.ui;
+
+import java.util.Collections;
+import java.util.List;
+
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.vaadin.client.ComponentConnector;
+import com.vaadin.client.HasComponentsConnector;
+import com.vaadin.client.ConnectorHierarchyChangeEvent;
+import com.vaadin.client.ConnectorHierarchyChangeEvent.ConnectorHierarchyChangeHandler;
+
+public abstract class AbstractHasComponentsConnector extends
+ AbstractComponentConnector implements HasComponentsConnector,
+ ConnectorHierarchyChangeHandler {
+
+ List<ComponentConnector> childComponents;
+
+ /**
+ * Default constructor
+ */
+ public AbstractHasComponentsConnector() {
+ addConnectorHierarchyChangeHandler(this);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.vaadin.client.HasComponentsConnector#getChildren()
+ */
+ @Override
+ public List<ComponentConnector> getChildComponents() {
+ if (childComponents == null) {
+ return Collections.emptyList();
+ }
+
+ return childComponents;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.vaadin.client.HasComponentsConnector#setChildren
+ * (java.util.Collection)
+ */
+ @Override
+ public void setChildComponents(List<ComponentConnector> childComponents) {
+ this.childComponents = childComponents;
+ }
+
+ @Override
+ public HandlerRegistration addConnectorHierarchyChangeHandler(
+ ConnectorHierarchyChangeHandler handler) {
+ return ensureHandlerManager().addHandler(
+ ConnectorHierarchyChangeEvent.TYPE, handler);
+ }
+}
diff --git a/client/src/com/vaadin/client/ui/AbstractSingleComponentContainerConnector.java b/client/src/com/vaadin/client/ui/AbstractSingleComponentContainerConnector.java
new file mode 100644
index 0000000000..d8f2ed95ab
--- /dev/null
+++ b/client/src/com/vaadin/client/ui/AbstractSingleComponentContainerConnector.java
@@ -0,0 +1,61 @@
+/*
+ * 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.client.ui;
+
+import java.util.List;
+
+import com.google.gwt.user.client.ui.Widget;
+import com.vaadin.client.ComponentConnector;
+
+/**
+ * Client side connector for subclasses of AbstractSingleComponentConnector.
+ *
+ * @since 7.0
+ */
+public abstract class AbstractSingleComponentContainerConnector extends
+ AbstractHasComponentsConnector {
+
+ /**
+ * Returns the content (only/first child) of the container.
+ *
+ * @return child connector or null if none (e.g. invisible or not set on
+ * server)
+ */
+ protected ComponentConnector getContent() {
+ List<ComponentConnector> children = getChildComponents();
+ if (children.isEmpty()) {
+ return null;
+ } else {
+ return children.get(0);
+ }
+ }
+
+ /**
+ * Returns the widget (if any) of the content of the container.
+ *
+ * @return widget of the only/first connector of the container, null if no
+ * content or if there is no widget for the connector
+ */
+ protected Widget getContentWidget() {
+ ComponentConnector content = getContent();
+ if (null != content) {
+ return content.getWidget();
+ } else {
+ return null;
+ }
+ }
+
+}
diff --git a/client/src/com/vaadin/client/ui/absolutelayout/AbsoluteLayoutConnector.java b/client/src/com/vaadin/client/ui/absolutelayout/AbsoluteLayoutConnector.java
index d13b079388..c51422dc27 100644
--- a/client/src/com/vaadin/client/ui/absolutelayout/AbsoluteLayoutConnector.java
+++ b/client/src/com/vaadin/client/ui/absolutelayout/AbsoluteLayoutConnector.java
@@ -101,7 +101,7 @@ public class AbsoluteLayoutConnector extends
* (non-Javadoc)
*
* @see
- * com.vaadin.client.ComponentContainerConnector#updateCaption(com.vaadin
+ * com.vaadin.client.HasComponentsConnector#updateCaption(com.vaadin
* .client.ComponentConnector)
*/
@Override
@@ -162,10 +162,8 @@ public class AbsoluteLayoutConnector extends
}
private void setChildWidgetPosition(ComponentConnector child) {
- getWidget().setWidgetPosition(
- child.getWidget(),
- getState().connectorToCssPosition.get(child
- .getConnectorId()));
+ getWidget().setWidgetPosition(child.getWidget(),
+ getState().connectorToCssPosition.get(child.getConnectorId()));
};
/*
diff --git a/client/src/com/vaadin/client/ui/csslayout/CssLayoutConnector.java b/client/src/com/vaadin/client/ui/csslayout/CssLayoutConnector.java
index 98969d881a..71ffeb738c 100644
--- a/client/src/com/vaadin/client/ui/csslayout/CssLayoutConnector.java
+++ b/client/src/com/vaadin/client/ui/csslayout/CssLayoutConnector.java
@@ -183,7 +183,7 @@ public class CssLayoutConnector extends AbstractLayoutConnector {
* (non-Javadoc)
*
* @see
- * com.vaadin.client.ComponentContainerConnector#updateCaption(com.vaadin
+ * com.vaadin.client.HasComponentsConnector#updateCaption(com.vaadin
* .client.ComponentConnector)
*/
@Override
diff --git a/client/src/com/vaadin/client/ui/layout/LayoutDependencyTree.java b/client/src/com/vaadin/client/ui/layout/LayoutDependencyTree.java
index 67555e8331..1bb7bfd528 100644
--- a/client/src/com/vaadin/client/ui/layout/LayoutDependencyTree.java
+++ b/client/src/com/vaadin/client/ui/layout/LayoutDependencyTree.java
@@ -23,7 +23,7 @@ import java.util.Map;
import java.util.Set;
import com.vaadin.client.ComponentConnector;
-import com.vaadin.client.ComponentContainerConnector;
+import com.vaadin.client.HasComponentsConnector;
import com.vaadin.client.ServerConnector;
import com.vaadin.client.Util;
import com.vaadin.client.VConsole;
@@ -204,8 +204,8 @@ public class LayoutDependencyTree {
resized.add(connector);
}
- if (connector instanceof ComponentContainerConnector) {
- ComponentContainerConnector container = (ComponentContainerConnector) connector;
+ if (connector instanceof HasComponentsConnector) {
+ HasComponentsConnector container = (HasComponentsConnector) connector;
for (ComponentConnector child : container.getChildComponents()) {
if (isRelativeInDirection(child, direction)) {
resized.add(child);
diff --git a/client/src/com/vaadin/client/ui/layout/MayScrollChildren.java b/client/src/com/vaadin/client/ui/layout/MayScrollChildren.java
index cc2341e26b..5619fb27fb 100644
--- a/client/src/com/vaadin/client/ui/layout/MayScrollChildren.java
+++ b/client/src/com/vaadin/client/ui/layout/MayScrollChildren.java
@@ -15,8 +15,8 @@
*/
package com.vaadin.client.ui.layout;
-import com.vaadin.client.ComponentContainerConnector;
+import com.vaadin.client.HasComponentsConnector;
-public interface MayScrollChildren extends ComponentContainerConnector {
+public interface MayScrollChildren extends HasComponentsConnector {
}
diff --git a/client/src/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java b/client/src/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java
index c21155e26d..65736397cb 100644
--- a/client/src/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java
+++ b/client/src/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java
@@ -235,7 +235,7 @@ public abstract class AbstractOrderedLayoutConnector extends
* (non-Javadoc)
*
* @see
- * com.vaadin.client.ComponentContainerConnector#updateCaption(com.vaadin
+ * com.vaadin.client.HasComponentsConnector#updateCaption(com.vaadin
* .client.ComponentConnector)
*/
@Override
diff --git a/client/src/com/vaadin/client/ui/panel/PanelConnector.java b/client/src/com/vaadin/client/ui/panel/PanelConnector.java
index 9642aaa268..ae1c7e3455 100644
--- a/client/src/com/vaadin/client/ui/panel/PanelConnector.java
+++ b/client/src/com/vaadin/client/ui/panel/PanelConnector.java
@@ -18,14 +18,13 @@ package com.vaadin.client.ui.panel;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.dom.client.Style;
import com.google.gwt.dom.client.Style.Unit;
-import com.google.gwt.user.client.ui.Widget;
import com.vaadin.client.ApplicationConnection;
import com.vaadin.client.ComponentConnector;
import com.vaadin.client.ConnectorHierarchyChangeEvent;
import com.vaadin.client.LayoutManager;
import com.vaadin.client.Paintable;
import com.vaadin.client.UIDL;
-import com.vaadin.client.ui.AbstractComponentContainerConnector;
+import com.vaadin.client.ui.AbstractSingleComponentContainerConnector;
import com.vaadin.client.ui.ClickEventHandler;
import com.vaadin.client.ui.PostLayoutListener;
import com.vaadin.client.ui.ShortcutActionHandler;
@@ -40,7 +39,7 @@ import com.vaadin.shared.ui.panel.PanelState;
import com.vaadin.ui.Panel;
@Connect(Panel.class)
-public class PanelConnector extends AbstractComponentContainerConnector
+public class PanelConnector extends AbstractSingleComponentContainerConnector
implements Paintable, SimpleManagedLayout, PostLayoutListener,
MayScrollChildren {
@@ -241,13 +240,7 @@ public class PanelConnector extends AbstractComponentContainerConnector
@Override
public void onConnectorHierarchyChange(ConnectorHierarchyChangeEvent event) {
// We always have 1 child, unless the child is hidden
- Widget newChildWidget = null;
- if (getChildComponents().size() == 1) {
- ComponentConnector newChild = getChildComponents().get(0);
- newChildWidget = newChild.getWidget();
- }
-
- getWidget().setWidget(newChildWidget);
+ getWidget().setWidget(getContentWidget());
}
}
diff --git a/client/src/com/vaadin/client/ui/popupview/PopupViewConnector.java b/client/src/com/vaadin/client/ui/popupview/PopupViewConnector.java
index c1048766fe..7fdd986d93 100644
--- a/client/src/com/vaadin/client/ui/popupview/PopupViewConnector.java
+++ b/client/src/com/vaadin/client/ui/popupview/PopupViewConnector.java
@@ -44,9 +44,8 @@ public class PopupViewConnector extends AbstractComponentContainerConnector
@Override
protected void init() {
super.init();
-
- handlerRegistration.add(getWidget().addVisibilityChangeHandler(
- this));
+
+ handlerRegistration.add(getWidget().addVisibilityChangeHandler(this));
}
@Override
diff --git a/client/src/com/vaadin/client/ui/table/TableConnector.java b/client/src/com/vaadin/client/ui/table/TableConnector.java
index 35e7020ce0..ef1b117bcb 100644
--- a/client/src/com/vaadin/client/ui/table/TableConnector.java
+++ b/client/src/com/vaadin/client/ui/table/TableConnector.java
@@ -33,7 +33,7 @@ import com.vaadin.client.ServerConnector;
import com.vaadin.client.TooltipInfo;
import com.vaadin.client.UIDL;
import com.vaadin.client.Util;
-import com.vaadin.client.ui.AbstractComponentContainerConnector;
+import com.vaadin.client.ui.AbstractHasComponentsConnector;
import com.vaadin.client.ui.PostLayoutListener;
import com.vaadin.client.ui.VScrollTable;
import com.vaadin.client.ui.VScrollTable.ContextMenuDetails;
@@ -43,7 +43,7 @@ import com.vaadin.shared.ui.table.TableConstants;
import com.vaadin.shared.ui.table.TableState;
@Connect(com.vaadin.ui.Table.class)
-public class TableConnector extends AbstractComponentContainerConnector
+public class TableConnector extends AbstractHasComponentsConnector
implements Paintable, DirectionalManagedLayout, PostLayoutListener {
@Override
diff --git a/client/src/com/vaadin/client/ui/ui/UIConnector.java b/client/src/com/vaadin/client/ui/ui/UIConnector.java
index a51cccf355..588fb5c5cf 100644
--- a/client/src/com/vaadin/client/ui/ui/UIConnector.java
+++ b/client/src/com/vaadin/client/ui/ui/UIConnector.java
@@ -44,7 +44,7 @@ import com.vaadin.client.UIDL;
import com.vaadin.client.VConsole;
import com.vaadin.client.communication.StateChangeEvent;
import com.vaadin.client.communication.StateChangeEvent.StateChangeHandler;
-import com.vaadin.client.ui.AbstractComponentContainerConnector;
+import com.vaadin.client.ui.AbstractSingleComponentContainerConnector;
import com.vaadin.client.ui.ClickEventHandler;
import com.vaadin.client.ui.ShortcutActionHandler;
import com.vaadin.client.ui.VNotification;
@@ -62,8 +62,8 @@ import com.vaadin.shared.ui.ui.UIState;
import com.vaadin.ui.UI;
@Connect(value = UI.class, loadStyle = LoadStyle.EAGER)
-public class UIConnector extends AbstractComponentContainerConnector implements
- Paintable, MayScrollChildren {
+public class UIConnector extends AbstractSingleComponentContainerConnector
+ implements Paintable, MayScrollChildren {
private HandlerRegistration childStateChangeHandlerRegistration;
@@ -336,15 +336,6 @@ public class UIConnector extends AbstractComponentContainerConnector implements
return (VUI) super.getWidget();
}
- protected ComponentConnector getContent() {
- List<ComponentConnector> children = getChildComponents();
- if (children.isEmpty()) {
- return null;
- } else {
- return children.get(0);
- }
- }
-
protected void onChildSizeChange() {
ComponentConnector child = getContent();
if (child == null) {
diff --git a/client/src/com/vaadin/client/ui/window/WindowConnector.java b/client/src/com/vaadin/client/ui/window/WindowConnector.java
index 8b4c5d9f37..4f1825e749 100644
--- a/client/src/com/vaadin/client/ui/window/WindowConnector.java
+++ b/client/src/com/vaadin/client/ui/window/WindowConnector.java
@@ -23,7 +23,6 @@ import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Window;
-import com.google.gwt.user.client.ui.Widget;
import com.vaadin.client.ApplicationConnection;
import com.vaadin.client.BrowserInfo;
import com.vaadin.client.ComponentConnector;
@@ -31,13 +30,13 @@ import com.vaadin.client.ConnectorHierarchyChangeEvent;
import com.vaadin.client.LayoutManager;
import com.vaadin.client.Paintable;
import com.vaadin.client.UIDL;
-import com.vaadin.client.ui.AbstractComponentContainerConnector;
+import com.vaadin.client.ui.AbstractSingleComponentContainerConnector;
import com.vaadin.client.ui.ClickEventHandler;
import com.vaadin.client.ui.PostLayoutListener;
import com.vaadin.client.ui.ShortcutActionHandler;
-import com.vaadin.client.ui.VWindow;
import com.vaadin.client.ui.ShortcutActionHandler.BeforeShortcutActionListener;
import com.vaadin.client.ui.SimpleManagedLayout;
+import com.vaadin.client.ui.VWindow;
import com.vaadin.client.ui.layout.MayScrollChildren;
import com.vaadin.shared.MouseEventDetails;
import com.vaadin.shared.ui.Connect;
@@ -45,7 +44,7 @@ import com.vaadin.shared.ui.window.WindowServerRpc;
import com.vaadin.shared.ui.window.WindowState;
@Connect(value = com.vaadin.ui.Window.class)
-public class WindowConnector extends AbstractComponentContainerConnector
+public class WindowConnector extends AbstractSingleComponentContainerConnector
implements Paintable, BeforeShortcutActionListener,
SimpleManagedLayout, PostLayoutListener, MayScrollChildren {
@@ -213,15 +212,8 @@ public class WindowConnector extends AbstractComponentContainerConnector
@Override
public void onConnectorHierarchyChange(ConnectorHierarchyChangeEvent event) {
// We always have 1 child, unless the child is hidden
- Widget newChildWidget = null;
- ComponentConnector newChild = null;
- if (getChildComponents().size() == 1) {
- newChild = getChildComponents().get(0);
- newChildWidget = newChild.getWidget();
- }
-
- getWidget().layout = newChild;
- getWidget().contentPanel.setWidget(newChildWidget);
+ getWidget().layout = getContent();
+ getWidget().contentPanel.setWidget(getContentWidget());
}
@Override