javascripteventsgwtdom-eventssmartgwt

Smart-Gwt ScrolledHandler usage


I would like to do something when a scroll event has occurred on a smartgwt window. I'm assuming that an event will be fired when at least one of the following has happened: scroll within window with mouse scroll wheel, scroll by dragging scroll bar, or scroll using scroll arrows.

I've added a handler to a smartgwt window and also to the smartgwt canvas which is the only child of the window. Both have been set up to write to GWT.log.

However, I can't seem to get a ScrollEvent to fire.

Any ideas?


Solution

  • Not sure what you did wrong, but here's a working sample:

    Window window = new Window();
     window.resizeTo(200,200);
     VLayout layout = new VLayout();
     layout.setOverflow(Overflow.AUTO);
    
     // create something large enough to allow scrolling
     Canvas canvas = new Canvas();
     canvas.setHeight(500);
     layout.addMember(canvas);
     window.addItem(layout);
    
     layout.addScrolledHandler(new ScrolledHandler() {
       @Override
       public void onScrolled(ScrolledEvent event) {
        SC.logWarn("scrolled");
       }
     });
    
     window.draw();
    

    Use the Developer Console to see the logs (see the SmartGWT FAQ for how to access it):

    http://forums.smartclient.com/showthread.php?t=8159#aConsole

    The window has a lot of auto-generated children (eg its header and footer) so maybe you attempted to add a listener to one of those, and it wasn't scrollable.