package com.revolsys.swing.component;
import java.awt.Color;
import java.awt.Graphics2D;
import org.jdesktop.swingx.painter.BusyPainter;
import org.jdesktop.swingx.util.PaintUtils;
public class BusyLabelPainter extends BusyPainter {
public BusyLabelPainter() {
super(16);
}
private Color calcFrameColor(final int i) {
final int frame = getFrame();
final Color baseColor = getBaseColor();
if (frame == -1) {
return baseColor;
}
final int trailLength = getTrailLength();
for (int t = 0; t < trailLength; t++) {
final int pointCount = getPoints();
if (i == (frame - t + pointCount) % pointCount) {
final float terp = 1 - (float)(trailLength - t) / (float)trailLength;
final Color highlightColor = getHighlightColor();
return PaintUtils.interpolate(baseColor, highlightColor, terp);
}
}
return baseColor;
}
@Override
protected void doPaint(final Graphics2D g, final Object t, final int width, final int height) {
drawPoint(g, 0, 6, 0);
drawPoint(g, 1, 10, 2);
drawPoint(g, 2, 12, 6);
drawPoint(g, 3, 10, 10);
drawPoint(g, 4, 6, 12);
drawPoint(g, 5, 2, 10);
drawPoint(g, 6, 0, 6);
drawPoint(g, 7, 2, 2);
}
private void drawPoint(final Graphics2D g, final int index, final int x, final int y) {
final Color color = calcFrameColor(index);
g.setColor(color);
g.drawOval(x, y, 2, 2);
g.fillOval(x, y, 2, 2);
}
}