package org.limewire.ui.swing.animate;
import javax.swing.JWindow;
import org.limewire.listener.EventListener;
import org.limewire.listener.EventListenerList;
/**
* Fades the given component in over the given time period, pauses for a given
* time, then fades the component out or the given time period.
*/
public class FadeInOutAnimator implements Animator<JWindow>, EventListener<AnimatorEvent<JWindow>> {
private final EventListenerList<AnimatorEvent<JWindow>> eventListenerList;
private final FadeInAnimator fadeInAnimator;
private final FadeOutAnimator fadeOutAnimator;
private final JWindow window;
public FadeInOutAnimator(final JWindow window, int fadeIn, int pauseTime, int fadeOut) {
this.window = window;
eventListenerList = new EventListenerList<AnimatorEvent<JWindow>>();
fadeInAnimator = new FadeInAnimator(window, fadeIn);
fadeInAnimator.addListener(this);
fadeOutAnimator = new FadeOutAnimator(window, fadeOut);
fadeOutAnimator.setInitialDelay(pauseTime);
fadeOutAnimator.addListener(this);
}
@Override
public int getTotalNumberOfSteps() {
return 0;
}
@Override
public void setInitialDelay(int initialDelay) {
throw new UnsupportedOperationException();
}
@Override
public void start() {
fadeInAnimator.start();
eventListenerList.broadcast(new AnimatorEvent<JWindow>(this, AnimatorEvent.Type.STARTED));
}
@Override
public void stop() {
throw new UnsupportedOperationException();
}
@Override
public void addListener(EventListener<AnimatorEvent<JWindow>> listener) {
eventListenerList.addListener(listener);
}
@Override
public boolean removeListener(EventListener<AnimatorEvent<JWindow>> listener) {
return eventListenerList.removeListener(listener);
}
@Override
public void handleEvent(AnimatorEvent<JWindow> event) {
if (event.getType() == AnimatorEvent.Type.STOPPED && event.getAnimator() == fadeInAnimator) {
fadeOutAnimator.start();
} else if (event.getType() == AnimatorEvent.Type.STOPPED
&& event.getAnimator() == fadeOutAnimator) {
eventListenerList
.broadcast(new AnimatorEvent<JWindow>(this, AnimatorEvent.Type.STOPPED));
}
}
@Override
public JWindow getComponent() {
return window;
}
@Override
public int getCurrentStepNumber() {
return 0;
}
}