package org.tessell.gwt.animation.client;
import com.google.gwt.animation.client.Animation;
/** Implements {@link IsAnimation} for a generic {@code logic} by extending GWT's Animation class. */
public final class GwtAnimation extends Animation implements IsAnimation {
private AnimationLogic logic;
public GwtAnimation(final AnimationLogic logic) {
this.logic = logic;
}
@Override
public void run(final int duration) {
super.run(duration);
}
@Override
public void cancel() {
super.cancel();
}
@Override
protected void onUpdate(final double progress) {
// progress is already interpolated by the Animation base class
logic.onUpdate(progress);
}
@Override
public void onStart() {
logic.onStart();
}
@Override
protected void onComplete() {
logic.onComplete();
}
@Override
protected double interpolate(double progress) {
// defer to the user's interpolation method
return logic.interpolate(progress);
}
@Override
public void doNotAutoFinish() {
// noop
}
@Override
public void setNewLogic(AnimationLogic logic) {
this.logic = logic;
}
}