package org.eclipse.swt.nebula.presentations.shelf;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
public abstract class ImageAnimationPlayer
{
private Image[] images;
private int delay = 120;
private Display display;
private int currentImage = 0;
private boolean stopped = false;
public ImageAnimationPlayer(Display display)
{
this.display = display;
}
public void start()
{
stopped = false;
if (images == null || images.length == 0) return;
updateImage(images[0]);
Runnable run = new Runnable()
{
public void run()
{
if (stopped) return;
currentImage ++;
if (currentImage == images.length)
currentImage = 0;
updateImage(images[currentImage]);
display.timerExec(delay, this);
}
};
display.timerExec(delay,run);
}
public void stop()
{
stopped = true;
}
public Image[] getImages()
{
return images;
}
public void setImages(Image[] images)
{
this.images = images;
}
public abstract void updateImage(Image i);
public Display getDisplay()
{
return display;
}
public int getDelay()
{
return delay;
}
public void setDelay(int delay)
{
this.delay = delay;
}
}