From 3bbf30054f865990f6c9089bd8f73e2e7a41b3f5 Mon Sep 17 00:00:00 2001
From: Henrik Paul <henrik@vaadin.com>
Date: Mon, 9 Sep 2013 16:31:20 +0300
Subject: Let UI fire PollEvents (#12466)

Change-Id: I7eb5e407b6822f5b3ac8e103ba7c9f676c51648f
---
 server/src/com/vaadin/ui/UI.java | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

(limited to 'server/src/com/vaadin/ui/UI.java')

diff --git a/server/src/com/vaadin/ui/UI.java b/server/src/com/vaadin/ui/UI.java
index 0d2ef4d569..a292e6b829 100644
--- a/server/src/com/vaadin/ui/UI.java
+++ b/server/src/com/vaadin/ui/UI.java
@@ -32,6 +32,9 @@ import com.vaadin.event.Action.Handler;
 import com.vaadin.event.ActionManager;
 import com.vaadin.event.MouseEvents.ClickEvent;
 import com.vaadin.event.MouseEvents.ClickListener;
+import com.vaadin.event.UIEvents.PollEvent;
+import com.vaadin.event.UIEvents.PollListener;
+import com.vaadin.event.UIEvents.PollNotifier;
 import com.vaadin.navigator.Navigator;
 import com.vaadin.server.ClientConnector;
 import com.vaadin.server.ComponentSizeValidator;
@@ -95,7 +98,8 @@ import com.vaadin.util.CurrentInstance;
  * @since 7.0
  */
 public abstract class UI extends AbstractSingleComponentContainer implements
-        Action.Container, Action.Notifier, LegacyComponent, Focusable {
+        Action.Container, Action.Notifier, PollNotifier, LegacyComponent,
+        Focusable {
 
     /**
      * The application to which this UI belongs
@@ -167,10 +171,7 @@ public abstract class UI extends AbstractSingleComponentContainer implements
 
         @Override
         public void poll() {
-            /*
-             * No-op. This is only called to cause a server visit to check for
-             * changes.
-             */
+            fireEvent(new PollEvent(UI.this));
         }
     };
     private DebugWindowServerRpc debugRpc = new DebugWindowServerRpc() {
@@ -1490,6 +1491,17 @@ public abstract class UI extends AbstractSingleComponentContainer implements
         return getState(false).pollInterval;
     }
 
+    @Override
+    public void addPollListener(PollListener listener) {
+        addListener(EventId.POLL, PollEvent.class, listener,
+                PollListener.POLL_METHOD);
+    }
+
+    @Override
+    public void removePollListener(PollListener listener) {
+        removeListener(EventId.POLL, PollEvent.class, listener);
+    }
+
     /**
      * Retrieves the object used for configuring the push channel.
      * 
-- 
cgit v1.2.3