/*
* SimpleBusyPanel.java
*
* Created on 2009-04-06, 02:07:23
*/
package app.navigps.gui.detailspanel;
import app.navigps.gui.detailspanel.UI.BusyPanelUI;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import org.jdesktop.animation.timing.Animator;
import org.jdesktop.animation.timing.TimingTargetAdapter;
import org.jdesktop.animation.timing.interpolation.PropertySetter;
/**
*
* @author Grzegorz (wara) Warywoda
*/
public class SimpleBusyPanel extends RoundJPanel implements MouseListener{
private Animator animator;
private volatile String infoText = "Loading ...";
private boolean enableMouseCursorInteraction = true;
public SimpleBusyPanel(){
//setOpaque(false);
setVisible(false);
addMouseListener(this);
setUpperThresholdAlpha(0.5f);
setBackground(new Color(10,10,10));
//animator = new Animator(1000,1, Animator.RepeatBehavior.REVERSE,
// new AnimatorBehaviour());
setUI(new BusyPanelUI());
}
public void setUI(BusyPanelUI newUI) {
super.setUI(newUI);
}
public void setBusy(boolean busy){
if(busy){
setAlpha(0.0f);
animator = new Animator(500, 1,Animator.RepeatBehavior.REVERSE,
new PropertySetter(this, "alpha", 0f, getUpperThresholdAlpha()));
animator.setAcceleration(0.1f);
animator.addTarget(new TimingTargetAdapter() {
@Override
public void begin() {
setVisible(true);
if(isEnableMouseCursorInteraction()){
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
}
}
});
}else{
animator = new Animator(500, 1,Animator.RepeatBehavior.LOOP,
new PropertySetter(this, "alpha", getAlpha(), 0.0f));
animator.addTarget(new TimingTargetAdapter() {
@Override
public void end() {
setCursor(null);
setVisible(false);
}
});
animator.setAcceleration(0.1f);
}
animator.start();
}
@Override
public boolean setAlpha(float alpha) {
boolean val = super.setAlpha(alpha);
repaint();
return val;
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
/**
* @return the text
*/
public String getText() {
return infoText;
}
/**
* @param text the text to set
*/
public void setText(String text) {
this.infoText = text;
}
/**
* @return the enableMouseCursorInteraction
*/
public boolean isEnableMouseCursorInteraction() {
return enableMouseCursorInteraction;
}
/**
* @param enableMouseCursorInteraction the enableMouseCursorInteraction to set
*/
public void setEnableMouseCursorInteraction(boolean enableMouseCursorInteraction) {
this.enableMouseCursorInteraction = enableMouseCursorInteraction;
}
}