/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package app.navigps.gui.detailspanel;
import app.navigps.gui.buttons.RotatedButton;
import app.navigps.utils.OutputVerboseStream;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import org.jdesktop.animation.timing.Animator;
import org.jdesktop.animation.timing.Animator.Direction;
import org.jdesktop.animation.timing.Animator.RepeatBehavior;
import org.jdesktop.animation.timing.TimingTarget;
/**
* Created on 2008-12-15, 21:29:18
* @author vara
*/
public class OpenCloseButton extends RotatedButton implements ActionListener,TimingTarget{
private Animator animator;
private int animationDuration = 2000;
/**
*
* @param text
* @param clockwise
* @param size
*/
public OpenCloseButton(String text,boolean clockwise,Dimension size){
this(text, clockwise, size, 0);
}
/**
*
* @param text
* @param clockwise
* @param size
* @param round
*/
public OpenCloseButton(String text,boolean clockwise,Dimension size,float round){
super(text,true,size,round);
animator = new Animator(animationDuration, Animator.INFINITE,
RepeatBehavior.REVERSE, this);
animator.setStartFraction(0.2f);
animator.setStartDirection(Direction.BACKWARD);
addActionListener(this);
}
/**
*
* @param arg0
*/
@Override
public void timingEvent(float arg0) {
setAlpha(arg0);
repaint();
}
/**
*
*/
@Override
public void begin() {}
/**
*
*/
@Override
public void end() {}
/**
*
*/
@Override
public void repeat() {}
@Override
public void actionPerformed(ActionEvent ae) {
if (!animator.isRunning()) {
this.setText("Stop Animation");
animator.start();
} else {
animator.stop();
this.setText("Start Animation");
// reset alpha to opaque
setAlpha(1.0f);
}
}
}