// ==========================================================================
// Author: Yee Hsu
// Date: 3/2/2007
// File: counter.java
//
// Desc: Counter
// ==========================================================================
package countdown;
import java.applet.Applet;
import java.applet.AppletContext;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Event;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.image.ImageObserver;
import java.net.URL;
import java.util.Date;
public class CountDown extends Applet implements Runnable {
String strCurrentDateTimeParam;
private MediaTracker mtTracker;
private Thread thdRunner;
private Graphics gBuffer;
private Image imBuffer;
private Image imBackgroundImage;
private Image[] imNormalDigitImages;
private Image[] imBlueDigitImages;
private long lClockOffset;
private long lCurrentCountDown;
private long lLastTick;
private Date dtTarget;
private String strDate;
private int iCharSpace;
private int iPosX;
private int iPosY;
private boolean isStandalone = false;
private String[] strNormalDigitImageFiles = {
"0.gif",
"1.gif",
"2.gif",
"3.gif",
"4.gif",
"5.gif",
"6.gif",
"7.gif",
"8.gif",
"9.gif",
"colin.gif"
};
private String[] strBlueDigitImageFiles = {
"b0.gif",
"b1.gif",
"b2.gif",
"b3.gif",
"b4.gif",
"b5.gif",
"b6.gif",
"b7.gif",
"b8.gif",
"b9.gif",
"bcolin.gif"
};
private int[] iBlueDigitsLocations = {
3,
1,
12,
12,
20,
8,
5,
19,
8,
15,
20
};
private int iBlueNumDigits = 11;
private URL uLink = null;
public String getParameter(String key, String def) {
return (isStandalone) ? System.getProperty(key, def) : (getParameter(key) != null) ? getParameter(key) : def;
}
public void init() {
try {
String strTempParameter = null;
Date dtCurrent = null;
mtTracker = new MediaTracker(this);
imNormalDigitImages = getMultiImage(strNormalDigitImageFiles);
imBlueDigitImages = getMultiImage(strBlueDigitImageFiles);
lLastTick = 0L;
strTempParameter = getParameter("CurrentDateTime", "");
if (strTempParameter != null && strTempParameter != "") dtCurrent = new Date(strTempParameter);
else dtCurrent = new Date();
strTempParameter = getParameter("TargetDateTime", "");
if (strTempParameter != null && strTempParameter != "") dtTarget = new Date(strTempParameter);
else dtTarget = new Date("9/20/2002 10:00");
lClockOffset = dtCurrent.getTime() - new Date().getTime();
strTempParameter = getParameter("BackgroundImage");
if (strTempParameter != null && strTempParameter != "") imBackgroundImage = getSingleImage(strTempParameter);
else imBackgroundImage = getSingleImage("bg1.gif");
strTempParameter = getParameter("CharSpaceing");
if (strTempParameter != null && strTempParameter != "") iCharSpace = Integer.parseInt(strTempParameter, 10);
else iCharSpace = 1;
strTempParameter = getParameter("XPos");
if (strTempParameter != null && strTempParameter != "") iPosX = Integer.parseInt(strTempParameter, 10);
else iPosX = 125;
strTempParameter = getParameter("YPos");
if (strTempParameter != null && strTempParameter != "") iPosY = Integer.parseInt(strTempParameter, 10);
else iPosY = 155;
strTempParameter = getParameter("Data");
if (strTempParameter != null && strTempParameter != "") {
int i = 0;
iBlueNumDigits = strTempParameter.length();
iBlueDigitsLocations = new int[iBlueNumDigits];
for (i = 0; i < iBlueNumDigits; ++i) {
if (strTempParameter.charAt(i) == 46) iBlueDigitsLocations[i] = -1;
else iBlueDigitsLocations[i] = 47 - strTempParameter.charAt(i) + 27 + 1;
}
}
uLink = new URL("http://www.blizzard.com/frontpage.shtml");
}
catch(Exception exception1) {
exception1.printStackTrace();
}
}
public void start() {
imBuffer = createImage(size().width, size().height);
gBuffer = imBuffer.getGraphics();
if (thdRunner == null) {
thdRunner = new Thread(this);
thdRunner.start();
}
}
public void stop() {
if (thdRunner != null) {
thdRunner.stop();
thdRunner = null;
}
}
public void run() {
for (;;) {
try {
Thread.sleep(50L);
}
catch(Exception exception1) {}
repaint();
}
}
}