home *** CD-ROM | disk | FTP | other *** search
- import java.applet.Applet;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Event;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.net.MalformedURLException;
- import java.net.URL;
-
- public class DynamicBanner extends Applet implements Runnable {
- Thread kicker;
- public Image image;
- BannerTransition transition;
- public int currentBanner;
- public int nextBanner;
- int numOfBanners;
- int numOfTransitionTypes;
- int currentTransitionType;
- long delay;
- boolean mouseInsideApplet;
- boolean mouseDown;
- int componentWidth;
- int componentHeight;
- int autoResize;
- public BannerData[] banners;
- String[] transitionClasses;
-
- public void finishInit() {
- if (this.delay == -1L) {
- String var1 = ((Applet)this).getParameter("delay");
-
- try {
- this.delay = Long.parseLong(var1);
- } catch (NumberFormatException var4) {
- this.delay = 3L;
- }
-
- this.transitionClasses = new String[this.numOfBanners];
-
- for(int var2 = 0; var2 < this.numOfBanners; ++var2) {
- var1 = ((Applet)this).getParameter("banner" + Integer.toString(var2));
- int var3 = var1.lastIndexOf(",");
- this.transitionClasses[var2] = var1.substring(var3 + 1) + "Transition";
- }
-
- this.banners[this.nextBanner].initPixels(this.componentWidth, this.componentHeight);
- this.mouseInsideApplet = false;
- }
- }
-
- public void init() {
- String var1 = ((Applet)this).getParameter("bgcolor");
- if (var1 != null) {
- Color var2 = new Color(Integer.parseInt(var1.substring(1), 16));
- ((Component)this).getParent().setBackground(var2);
- ((Component)this).getParent().repaint();
- ((Component)this).setBackground(var2);
- }
-
- var1 = ((Applet)this).getParameter("banner0");
- this.numOfBanners = 1;
-
- for(String var4 = ((Applet)this).getParameter("banner1"); var4 != null; var4 = ((Applet)this).getParameter("banner" + Integer.toString(this.numOfBanners))) {
- ++this.numOfBanners;
- }
-
- var1 = ((Applet)this).getParameter("autoResize");
- this.autoResize = Integer.parseInt(var1);
- this.banners = new BannerData[this.numOfBanners];
- int var6 = (int)(Math.random() * (double)this.numOfBanners);
- if (var6 > this.numOfBanners - 1) {
- var6 = this.numOfBanners - 1;
- }
-
- this.currentBanner = this.nextBanner = var6;
- this.componentWidth = ((Component)this).size().width;
- this.componentHeight = ((Component)this).size().height;
-
- while(!this.parseBannerData()) {
- if (++this.nextBanner >= this.numOfBanners) {
- this.nextBanner = 0;
- }
- }
-
- this.delay = -1L;
- }
-
- public boolean mouseUp(Event var1, int var2, int var3) {
- if (this.banners[this.currentBanner].link == null) {
- return false;
- } else {
- this.kicker.stop();
- ((Applet)this).getAppletContext().showDocument(this.banners[this.currentBanner].link);
- return true;
- }
- }
-
- public void paint(Graphics var1) {
- var1.drawImage(this.image, 0, 0, Color.white, this);
- }
-
- boolean parseBannerData() {
- String var1 = ((Applet)this).getParameter("banner" + Integer.toString(this.nextBanner));
- int var2 = var1.indexOf(",");
- int var3 = var1.lastIndexOf(",");
- String var4 = var1.substring(0, var2);
- if (var4.length() <= 0) {
- return false;
- } else {
- Image var5 = ((Applet)this).getImage(((Applet)this).getDocumentBase(), var4);
- var1 = var1.substring(var2 + 1, var3);
-
- URL var6;
- try {
- var6 = new URL(((Applet)this).getDocumentBase(), var1);
- } catch (MalformedURLException var7) {
- var6 = null;
- }
-
- ((Component)this).prepareImage(var5, this);
- if (this.autoResize == 1) {
- if (var5.getWidth(this) != this.componentWidth || var5.getHeight(this) != this.componentHeight) {
- var5 = var5.getScaledInstance(this.componentWidth, this.componentHeight, 2);
- ((Component)this).prepareImage(var5, this);
- }
- } else {
- ((Component)this).prepareImage(var5, this);
- }
-
- this.banners[this.nextBanner] = new BannerData(var6, var5);
- if (this.image == null) {
- this.image = var5;
- } else {
- this.banners[this.nextBanner].initPixels(this.componentWidth, this.componentHeight);
- }
-
- return true;
- }
- }
-
- public void run() {
- while((((Component)this).checkImage(this.image, this) & 16) == 0 && (((Component)this).checkImage(this.image, this) & 32) == 0) {
- try {
- Thread.sleep(600L);
- } catch (InterruptedException var5) {
- }
- }
-
- this.finishInit();
-
- while(Thread.currentThread() == this.kicker) {
- long var1 = System.currentTimeMillis() + this.delay * 1000L;
- this.currentBanner = this.nextBanner;
- if (++this.nextBanner >= this.numOfBanners) {
- this.nextBanner = 0;
- }
-
- if (this.banners[this.nextBanner] == null) {
- while(!this.parseBannerData()) {
- if (++this.nextBanner >= this.numOfBanners) {
- this.nextBanner = 0;
- }
- }
-
- try {
- Thread.sleep(120L);
- } catch (InterruptedException var6) {
- }
- }
-
- this.currentTransitionType = this.currentBanner;
-
- try {
- this.transition = (BannerTransition)Class.forName(this.transitionClasses[this.currentTransitionType]).newInstance();
- this.transition.initialize(this, this.componentWidth, this.componentHeight);
- } catch (Exception var10) {
- ((Throwable)var10).printStackTrace();
- }
-
- if (System.currentTimeMillis() < var1) {
- try {
- Thread.sleep(var1 - System.currentTimeMillis());
- } catch (InterruptedException var9) {
- }
- }
-
- Graphics var3 = ((Component)this).getGraphics();
-
- for(int var4 = 0; var4 < this.transition.numOfFrames; ++var4) {
- this.image = this.transition.frames[var4];
- var3.drawImage(this.image, 0, 0, this);
- ((Component)this).getToolkit().sync();
-
- try {
- Thread.sleep((long)this.transition.delay);
- } catch (InterruptedException var8) {
- }
- }
-
- this.image = this.banners[this.nextBanner].image;
- var3.drawImage(this.image, 0, 0, this);
- ((Component)this).getToolkit().sync();
- var3.dispose();
- this.transition.clearFrames();
- this.transition = null;
-
- try {
- Thread.sleep(120L);
- } catch (InterruptedException var7) {
- }
- }
-
- }
-
- public void start() {
- if (this.kicker == null) {
- this.nextBanner = this.currentBanner;
- this.image = this.banners[this.currentBanner].image;
- this.transition = null;
- this.kicker = new Thread(this);
- this.kicker.start();
- }
-
- }
-
- public void stop() {
- if (this.kicker != null) {
- this.kicker.stop();
- this.kicker = null;
- }
-
- }
-
- public void update(Graphics var1) {
- this.paint(var1);
- }
- }
-