views:

436

answers:

1

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?

+1  A: 

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.

Charles Kendrick