aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2012-03-19 13:33:39 +0200
committerArtur Signell <artur@vaadin.com>2012-03-21 15:27:42 +0200
commit3a234a45f5ec1d019fb0c9e93a19f8f065e0ee6f (patch)
tree823cfa82c6a0415af07ab38944fb44ef6b3db091 /src
parentd5439499d5628fac0d096a5d44ac20f213b53253 (diff)
downloadvaadin-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')
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/WindowConnector.java5
-rw-r--r--src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java14
-rw-r--r--src/com/vaadin/ui/DirtyConnectorTracker.java4
-rw-r--r--src/com/vaadin/ui/Panel.java2
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);
}
/**