Tracking when a user is active (DOM Event Handler Problem)

We are currently porting our app to vaadin 7 and I want to track wether a user has been active during the last 30s or so.
We used to track user activity in a custom CommunicationManager, but since this class is deprecated, I figured we might have to try different.
I created an extension that I extend the UI with.

For simplicity’s sake let’s say, we count clicking and keyboard usage as user activity:



// this is the extend method in the extension connector
@Override
  protected void extend (ServerConnector target) {
    UIConnector uiConnector = (UIConnector) target;
    VUI uiWidget = uiConnector.getWidget();
    uiWidget.addDomHandler(this.keyPressed(), KeyPressEvent.getType());
    uiWidget.addDomHandler(this.mouseClicked(), ClickEvent.getType());
  }

The extension will then schedule a timer that will call the server via RPC every 30s, but only if the user has been active.
This Timer works. What does not work is the DOM Events, they never seem to reach the Event Listeners I added.

What am I doing wrong?

This does actually work, as I have now found out.

An important thing to note though is that modal views (Window) eat all events, so if there’s a window opened, one must also extend it with the extension that tracks user activity.