diff options
author | Artur Signell <artur@vaadin.com> | 2012-03-19 13:33:39 +0200 |
---|---|---|
committer | Artur Signell <artur@vaadin.com> | 2012-03-21 15:27:42 +0200 |
commit | 3a234a45f5ec1d019fb0c9e93a19f8f065e0ee6f (patch) | |
tree | 823cfa82c6a0415af07ab38944fb44ef6b3db091 /src | |
parent | d5439499d5628fac0d096a5d44ac20f213b53253 (diff) | |
download | vaadin-framework-3a234a45f5ec1d019fb0c9e93a19f8f065e0ee6f.tar.gz vaadin-framework-3a234a45f5ec1d019fb0c9e93a19f8f065e0ee6f.zip |
Made Window work again (connectors are now children of Root, attach for
Panel/Window calls Root attach methods, Window uses WindowState)
Diffstat (limited to 'src')
4 files changed, 22 insertions, 3 deletions
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<Component> getChildComponents(HasComponents cc) { - if (cc instanceof Panel) { + public static Iterable<Component> getChildComponents(HasComponents cc) { + if (cc instanceof Root) { + Root root = (Root) cc; + List<Component> children = new ArrayList<Component>(); + 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); } /** |