home *** CD-ROM | disk | FTP | other *** search
- import java.applet.Applet;
- import java.awt.Color;
- 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.Rectangle;
- import java.awt.image.ImageObserver;
- import java.net.URL;
- import java.util.Date;
-
- public class TimeBased extends Applet implements Runnable {
- Thread m_TimeBased;
- private Graphics m_Graphics;
- private Image[] m_Images;
- private int m_nCurrImage;
- private int m_nImgWidth;
- private int m_nImgHeight;
- private boolean m_fAllLoaded;
- private boolean NetworkFiles;
- private boolean didClick;
- private int numImages;
- private String[] imageNames;
- private String[] imageURLs;
- private int[] imageStarts;
- private MediaTracker tracker;
- protected Color backgroundColor;
- protected Image backgroundImage;
- protected int xOffset;
- protected int yOffset;
-
- public void start() {
- if (this.m_TimeBased == null) {
- this.m_TimeBased = new Thread(this);
- this.m_TimeBased.start();
- }
-
- }
-
- private int convertBGRtoRGB(int BGRColor) {
- int r = (BGRColor & 255) << 16;
- int g = BGRColor & '\uff00';
- int b = (BGRColor & 16711680) >> 16;
- return r + g + b;
- }
-
- public void stop() {
- if (this.m_TimeBased != null) {
- this.m_TimeBased.stop();
- this.m_TimeBased = null;
- }
-
- }
-
- public boolean mouseExit(Event evt, int x, int y) {
- this.didClick = false;
- return true;
- }
-
- private String modifyStringContext(String param) {
- if (param.startsWith(".")) {
- param = param.replace('\\', '/');
- String fullBase = ((Applet)this).getDocumentBase().toString();
- param = fullBase.substring(0, fullBase.lastIndexOf(47)) + "/" + param;
- } else if (param.startsWith("#")) {
- param = ((Applet)this).getDocumentBase().toString() + param;
- } else if (param.compareTo("javascript:void(0)") == 0) {
- param = null;
- } else if (!param.startsWith("cid:") && !param.startsWith("lifn:") && !param.startsWith("java:") && !param.startsWith("irc:") && !param.startsWith("IOR:") && !param.startsWith("ilu:") && !param.startsWith("https:") && !param.startsWith("http:") && !param.startsWith("hdl:") && !param.startsWith("gopher:") && !param.startsWith("ftp:") && !param.startsWith("finger:") && !param.startsWith("file:") && !param.startsWith("data:") && !param.startsWith("clsid:") && !param.startsWith("md5:") && !param.startsWith("mailserver:") && !param.startsWith("mailto:") && !param.startsWith("mid:") && !param.startsWith("news:") && !param.startsWith("nntp:") && !param.startsWith("path:") && !param.startsWith("prospero:") && !param.startsWith("service:") && !param.startsWith("shttp") && !param.startsWith("snews") && !param.startsWith("STANF:") && !param.startsWith("telnet:") && !param.startsWith("vemmi:") && !param.startsWith("wais:") && !param.startsWith("whois++:")) {
- param = "http://" + param;
- }
-
- return param;
- }
-
- public boolean mouseDown(Event evt, int x, int y) {
- this.didClick = true;
- return true;
- }
-
- public boolean mouseEnter(Event evt, int x, int y) {
- return true;
- }
-
- private void displayImage(Graphics g) {
- if (this.m_fAllLoaded) {
- if (this.backgroundImage != null) {
- int imHeight = this.backgroundImage.getHeight(this);
- int imWidth = this.backgroundImage.getWidth(this);
- Dimension d = ((Component)this).size();
- int x = (d.width + this.xOffset) / imWidth + 1;
- int y = (d.height + this.yOffset) / imHeight + 1;
-
- for(int i = 0; i < y; ++i) {
- for(int j = 0; j < x; ++j) {
- g.drawImage(this.backgroundImage, j * imWidth - this.xOffset, i * imHeight - this.yOffset, this);
- }
- }
- } else {
- g.clearRect(0, 0, ((Component)this).size().width, ((Component)this).size().height);
- }
-
- g.drawImage(this.m_Images[this.m_nCurrImage], (((Component)this).size().width - this.m_Images[this.m_nCurrImage].getWidth(this)) / 2, (((Component)this).size().height - this.m_Images[this.m_nCurrImage].getHeight(this)) / 2, (ImageObserver)null);
- }
- }
-
- public String getAppletInfo() {
- return "Name: TimeBased\r\n";
- }
-
- public boolean mouseUp(Event evt, int x, int y) {
- if (this.didClick) {
- try {
- ((Applet)this).getAppletContext().showDocument(new URL(this.imageURLs[this.m_nCurrImage]));
- } catch (Exception var6) {
- ((Applet)this).getAppletContext().showStatus("Bad URL: " + this.imageURLs[this.m_nCurrImage]);
- }
- }
-
- return true;
- }
-
- public void run() {
- Date today = new Date(System.currentTimeMillis());
- int currentHours = today.getHours();
-
- for(this.m_nCurrImage = 0; this.m_nCurrImage < this.numImages - 1 && this.imageStarts[this.m_nCurrImage + 1] <= currentHours; ++this.m_nCurrImage) {
- }
-
- if (!this.m_fAllLoaded) {
- ((Component)this).repaint();
- this.m_Graphics = ((Component)this).getGraphics();
- this.m_Images = new Image[this.numImages];
- this.tracker = new MediaTracker(this);
-
- for(int i = 1; i <= this.numImages; ++i) {
- this.m_Images[i - 1] = ((Applet)this).getImage(((Applet)this).getDocumentBase(), this.imageNames[i - 1]);
- this.tracker.addImage(this.m_Images[i - 1], i - 1);
- }
-
- try {
- this.tracker.waitForID(this.m_nCurrImage);
- this.m_fAllLoaded = !this.tracker.isErrorID(this.m_nCurrImage);
- } catch (InterruptedException var5) {
- }
-
- if (!this.m_fAllLoaded) {
- this.m_Graphics.drawString("Error loading image!", 10, 40);
- this.stop();
- return;
- }
- }
-
- ((Component)this).repaint();
-
- while(true) {
- try {
- this.displayImage(this.m_Graphics);
- today = new Date(System.currentTimeMillis());
- currentHours = today.getHours();
-
- for(this.m_nCurrImage = 0; this.m_nCurrImage < this.numImages - 1 && this.imageStarts[this.m_nCurrImage + 1] <= currentHours; ++this.m_nCurrImage) {
- }
-
- this.tracker.waitForID(this.m_nCurrImage);
- this.m_fAllLoaded = !this.tracker.isErrorID(this.m_nCurrImage);
- if (!this.m_fAllLoaded) {
- this.stop();
- this.m_Graphics.drawString("Error loading image!", 10, 40);
- return;
- }
-
- Thread.sleep(300000L);
- } catch (InterruptedException var6) {
- this.stop();
- }
- }
- }
-
- public void destroy() {
- }
-
- public void init() {
- this.xOffset = Integer.parseInt(((Applet)this).getParameter("X Position"));
- this.yOffset = Integer.parseInt(((Applet)this).getParameter("Y Position"));
- this.didClick = false;
- this.numImages = Integer.parseInt(((Applet)this).getParameter("Number of Images"));
- this.imageNames = new String[this.numImages];
- this.imageURLs = new String[this.numImages];
- this.imageStarts = new int[this.numImages];
-
- for(int cnt = 0; cnt < this.numImages; ++cnt) {
- this.imageNames[cnt] = ((Applet)this).getParameter("Image " + (cnt + 1));
- if (this.imageNames[cnt] != null && this.imageNames[cnt].startsWith("file://///")) {
- this.NetworkFiles = true;
- }
-
- this.imageURLs[cnt] = ((Applet)this).getParameter("URL for Image " + (cnt + 1));
- if (this.imageURLs[cnt] != null) {
- if (this.imageURLs[cnt].startsWith(".")) {
- String theBase = ((Applet)this).getDocumentBase().toExternalForm();
- int lastSlash = theBase.lastIndexOf(47);
- this.imageURLs[cnt] = theBase.substring(0, lastSlash + 1) + this.imageURLs[cnt];
- } else if (this.imageURLs[cnt].compareTo("javascript:void(0)") == 0) {
- this.imageURLs[cnt] = null;
- } else if (!this.imageURLs[cnt].startsWith("cid:") && !this.imageURLs[cnt].startsWith("lifn:") && !this.imageURLs[cnt].startsWith("java:") && !this.imageURLs[cnt].startsWith("irc:") && !this.imageURLs[cnt].startsWith("IOR:") && !this.imageURLs[cnt].startsWith("ilu:") && !this.imageURLs[cnt].startsWith("https:") && !this.imageURLs[cnt].startsWith("http:") && !this.imageURLs[cnt].startsWith("hdl:") && !this.imageURLs[cnt].startsWith("gopher:") && !this.imageURLs[cnt].startsWith("ftp:") && !this.imageURLs[cnt].startsWith("finger:") && !this.imageURLs[cnt].startsWith("file:") && !this.imageURLs[cnt].startsWith("data:") && !this.imageURLs[cnt].startsWith("clsid:") && !this.imageURLs[cnt].startsWith("md5:") && !this.imageURLs[cnt].startsWith("mailserver:") && !this.imageURLs[cnt].startsWith("mailto:") && !this.imageURLs[cnt].startsWith("mid:") && !this.imageURLs[cnt].startsWith("news:") && !this.imageURLs[cnt].startsWith("nntp:") && !this.imageURLs[cnt].startsWith("path:") && !this.imageURLs[cnt].startsWith("prospero:") && !this.imageURLs[cnt].startsWith("service:") && !this.imageURLs[cnt].startsWith("shttp") && !this.imageURLs[cnt].startsWith("snews") && !this.imageURLs[cnt].startsWith("STANF:") && !this.imageURLs[cnt].startsWith("telnet:") && !this.imageURLs[cnt].startsWith("vemmi:") && !this.imageURLs[cnt].startsWith("wais:") && !this.imageURLs[cnt].startsWith("whois++:")) {
- this.imageURLs[cnt] = "http://" + this.imageURLs[cnt];
- }
- }
-
- this.imageStarts[cnt] = Integer.parseInt(((Applet)this).getParameter("Start Time for Image " + (cnt + 1)));
- }
-
- if (((Applet)this).getParameter("BackgroundColor") != null) {
- int backgroundcolor = Integer.parseInt(((Applet)this).getParameter("BackgroundColor"));
- backgroundcolor = this.convertBGRtoRGB(backgroundcolor);
- this.backgroundColor = new Color(backgroundcolor);
- ((Component)this).setBackground(this.backgroundColor);
- } else if (((Applet)this).getParameter("BackgroundImage") != null) {
- String backgroundimage = this.modifyStringContext(((Applet)this).getParameter("BackgroundImage"));
-
- try {
- this.backgroundImage = ((Applet)this).getImage(new URL(backgroundimage));
- } catch (Exception var6) {
- System.out.println("Error forming URL for background image");
- return;
- }
-
- MediaTracker tracker = new MediaTracker(this);
- tracker.addImage(this.backgroundImage, 0);
-
- try {
- tracker.waitForID(0);
- } catch (InterruptedException var5) {
- System.out.println("Background image loading interrupted");
- }
- }
-
- }
-
- public void paint(Graphics g) {
- if (this.m_fAllLoaded) {
- Rectangle r = g.getClipRect();
- g.clearRect(r.x, r.y, r.width, r.height);
- this.displayImage(g);
- } else if (this.NetworkFiles) {
- g.drawString("Unable to load images over Windows network!", 10, 20);
- } else {
- g.drawString("Loading images...", 10, 20);
- }
-
- }
- }
-