Search code examples
gwtsmartgwtgwt-extgwt-animation

Easy GWT Animations


I've started looking at some external GWT libraries for animations, but they all seemd a bit overkill for what i want.

I'm trying to mimic JQuery Tools scrollabel plugin in GWT for a scrolling navigation (think iphone). User clicks an item, page scrolls to the child panel of that item, which may also have children that can be clicked.

All I need to do is slide a div, x number of pixels backwards and forwards over some fixed rate of time

The only real tutorial i've found on writing animations in GWT is 2 years old and seems a bit verbose, (managing individual frames etc...)

Is there no simpler solution for easily moving a div from one position to another without requiring all the extra cruft?

Forgive me but I'm coming from jQuery coding that has this built in simply and easily.


Solution

  • GWT 2's built in Animation class is quite good. All you need to do is extend the class, implement onUpdate(), and then call run() to start the animation. I haven't used the scrollTop property so I can't guarantee this will work right, but it should give you the basic idea:

    public class ScrollAnimation extends Animation {
        private final Element e;
        private int scrollStart;
        private int scrollStop;
    
        public ScrollAnimation(Element e) {
            this.e = e;
        }
    
        public scrollTo(int position, int milliseconds) {
            scrollStart = e.getPropertyInt("scrollTop");
            scrollStop = position;
            run(milliseconds);
        }
    
        @Override
        protected void onUpdate(double progress) {
            int position = scrollStart + (int)(progress * (scrollStop - scrollStart));
            e.setPropertyInt("scrollTop", position);
        }
    }