You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
2.0 KiB
Java

URL Redirector
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;
public class Redir extends Applet implements Runnable {
protected String urlString;
protected URL theNewURL;
protected final static int NSECONDS = 5;
protected Thread t;
public void init() {
try {
// Get the address from a PARAM...
urlString = getParameter("URL");
if (urlString == null) {
urlString = "MISSING URL";
throw new IllegalArgumentException(
"Redir requires a URL parameter in the HTML");
}
// Make up the URL object
theNewURL = new URL(urlString);
// debug...
// showStatus("URL = " + theNewURL);
} catch (Exception err) {
System.err.println("Error!\n" + err);
showStatus("Error, look in Java Console for details!");
}
}
public void start() {
if (theNewURL == null)
return;
t = new Thread(this);
t.start();
}
/** Print a little message to the user. */
public void paint(Graphics g) {
if (urlString != null)
g.drawString(urlString, 20, 50);
else
g.drawString("Initializing...", 20, 50);
}
/** If users moves off the page, set Thread t to null so
* we don't showDocument from within the middle of the new page!
*/
public void stop() {
t = null;
}
/** run, called by the Thread, does the work of sleeping
* for a fixed number of seconds then, if the user hasn't
* moved off the page, actually passing control to the new page.
*/
public void run() {
for (int i=NSECONDS; i>=0; i--) {
try {
Thread.sleep(1000);
if (t == null)
return;
} catch (InterruptedException e) {
// so what?
}
if (t == null)
return;
showStatus(Integer.toString(i));
if (t == null)
return;
showStatus("Ignition!");
// "And then a miracle occurs..."
getAppletContext().showDocument(theNewURL);
}
}
}
/*
<APPLET CODE=Redir.class WIDTH=300 HEIGHT=100 ">
</APPLET>
*/