From: Artur Signell Date: Mon, 19 Mar 2012 11:33:39 +0000 (+0200) Subject: Made Window work again (connectors are now children of Root, attach for X-Git-Tag: 7.0.0.alpha2~281 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=3a234a45f5ec1d019fb0c9e93a19f8f065e0ee6f;p=vaadin-framework.git Made Window work again (connectors are now children of Root, attach for Panel/Window calls Root attach methods, Window uses WindowState) --- diff --git a/src/com/vaadin/terminal/gwt/client/ui/WindowConnector.java b/src/com/vaadin/terminal/gwt/client/ui/WindowConnector.java index a39ce5e335..943c2e1967 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/WindowConnector.java +++ b/src/com/vaadin/terminal/gwt/client/ui/WindowConnector.java @@ -315,4 +315,9 @@ public class WindowConnector extends AbstractComponentContainerConnector public WindowState getState() { return (WindowState) super.getState(); } + + @Override + protected WindowState createState() { + return GWT.create(WindowState.class); + } } diff --git a/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java b/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java index 13bce26c12..ac0cc7c46d 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java @@ -1188,8 +1188,18 @@ public abstract class AbstractCommunicationManager implements } - private Iterable getChildComponents(HasComponents cc) { - if (cc instanceof Panel) { + public static Iterable getChildComponents(HasComponents cc) { + if (cc instanceof Root) { + Root root = (Root) cc; + List children = new ArrayList(); + if (root.getContent() != null) { + children.add(root.getContent()); + } + for (Window w : root.getWindows()) { + children.add(w); + } + return children; + } else if (cc instanceof Panel) { // This is so wrong.. (#2924) if (((Panel) cc).getContent() == null) { return Collections.emptyList(); diff --git a/src/com/vaadin/ui/DirtyConnectorTracker.java b/src/com/vaadin/ui/DirtyConnectorTracker.java index dc9c72ba0d..1225b5f84f 100644 --- a/src/com/vaadin/ui/DirtyConnectorTracker.java +++ b/src/com/vaadin/ui/DirtyConnectorTracker.java @@ -7,6 +7,7 @@ import java.util.logging.Logger; import com.vaadin.terminal.Paintable.RepaintRequestEvent; import com.vaadin.terminal.Paintable.RepaintRequestListener; +import com.vaadin.terminal.gwt.server.AbstractCommunicationManager; import com.vaadin.terminal.gwt.server.ClientConnector; /** @@ -103,7 +104,8 @@ public class DirtyConnectorTracker implements RepaintRequestListener { markDirty(c); if (c instanceof HasComponents) { HasComponents container = (HasComponents) c; - for (Component child : container) { + for (Component child : AbstractCommunicationManager + .getChildComponents(container)) { markComponentsDirtyRecursively(child); } } diff --git a/src/com/vaadin/ui/Panel.java b/src/com/vaadin/ui/Panel.java index b6c08da86c..4d8e5066a5 100644 --- a/src/com/vaadin/ui/Panel.java +++ b/src/com/vaadin/ui/Panel.java @@ -403,6 +403,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable, */ @Override public void attach() { + getRoot().componentAttached(this); // can't call parent here as this is Panels hierarchy is a hack requestRepaint(); if (content != null) { @@ -421,6 +422,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable, if (content != null) { content.detach(); } + getRoot().componentDetached(this); } /**