package org.limewire.ui.swing.animate;
import java.awt.Point;
import javax.swing.JWindow;
import org.limewire.listener.EventListener;
/**
* Moves the component from its current position to its new postion, over
* the given amount of time.
*/
public class MoveAnimator extends AbstractAnimator<JWindow> {
public MoveAnimator(final JWindow window, int totalTime, final Point newPoint) {
super(window, totalTime);
double xDifference = Math.ceil(newPoint.getX() - window.getLocation().getX());
double yDifference = Math.ceil(newPoint.getY() - window.getY());
final double xStep = xDifference / getTotalNumberOfSteps();
final double yStep = yDifference / getTotalNumberOfSteps();
addListener(new EventListener<AnimatorEvent<JWindow>>() {
@Override
public void handleEvent(AnimatorEvent event) {
if (event.getType() == AnimatorEvent.Type.STEP) {
Point currentLocation = window.getLocation();
Point newLocation = new Point((int) Math.ceil(currentLocation.getX() + xStep),
(int) Math.ceil(currentLocation.getY() + yStep));
window.setLocation(newLocation);
} else if (event.getType() == AnimatorEvent.Type.STOPPED) {
window.setLocation(newPoint);
}
}
});
}
}