/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package de.cismet.cids.custom.switchon;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JLabel;
/**
* DOCUMENT ME!
*
* @author martin.scholl@cismet.de
* @version $Revision$, $Date$
*/
public final class LoadingLabel extends JLabel {
//~ Instance fields --------------------------------------------------------
private final transient String loading;
private final transient Timer timer;
private final transient TimerTask task;
private transient int noOfDots;
//~ Constructors -----------------------------------------------------------
/**
* Creates a new LoadingLabel object.
*/
public LoadingLabel() {
loading = "LOADING ";
noOfDots = 0;
timer = new Timer(true);
task = new TimerTask() {
@Override
public void run() {
final StringBuilder sb = new StringBuilder(loading);
for (int i = 0; i < (noOfDots % 4); ++i) {
sb.append('.');
}
noOfDots++;
LoadingLabel.this.internalSetText(sb.toString());
}
};
timer.scheduleAtFixedRate(task, 0, 300);
}
//~ Methods ----------------------------------------------------------------
/**
* DOCUMENT ME!
*/
public void dispose() {
timer.cancel();
}
/**
* DOCUMENT ME!
*
* @param text DOCUMENT ME!
*/
private void internalSetText(final String text) {
super.setText(text);
}
@Override
public void setText(final String text) {
// we ignore settext, we don't want the label's text to be overridden
}
}