home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2003 March / DPPCPRO0303.ISO / Extras / Content / Images / StockObjects / objects / java / ABanner / AmpersandBanner1_2.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-10-22  |  10.0 KB  |  477 lines

  1. import java.applet.Applet;
  2. import java.applet.AudioClip;
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Event;
  6. import java.awt.Font;
  7. import java.awt.Graphics;
  8. import java.awt.Image;
  9. import java.awt.MediaTracker;
  10. import java.awt.image.FilteredImageSource;
  11. import java.io.InputStream;
  12. import java.net.MalformedURLException;
  13. import java.net.URL;
  14. import java.net.URLConnection;
  15. import java.util.StringTokenizer;
  16.  
  17. public class AmpersandBanner1_2 extends Applet implements Runnable {
  18.    Thread animator;
  19.    Image[] image;
  20.    Image offscreen;
  21.    MediaTracker tracker;
  22.    AudioClip audioclip;
  23.    // $FF: renamed from: og java.awt.Graphics
  24.    Graphics field_0;
  25.    Color backcolor;
  26.    // $FF: renamed from: y1 int
  27.    int field_1;
  28.    // $FF: renamed from: y2 int
  29.    int field_2;
  30.    int imageY;
  31.    int bannercount;
  32.    int pause;
  33.    int thisimage = 1;
  34.    int nextimage = 1;
  35.    int oldimage;
  36.    int width;
  37.    int height;
  38.    int total;
  39.    int count;
  40.    long delay;
  41.    long now;
  42.    long then;
  43.    long threadsleep;
  44.    String parameter;
  45.    String target;
  46.    String correcthost;
  47.    String[] urls;
  48.    String[] targets;
  49.    String[] audioclips;
  50.    String[] images;
  51.    int[] weights;
  52.    int[] weight;
  53.    URL url;
  54.    URL oldurl;
  55.    boolean loading;
  56.    boolean random;
  57.    boolean registered;
  58.  
  59.    public void init() {
  60.       System.out.println("\nAmpersand Internet Banner Applet");
  61.       System.out.println("Version 1.2");
  62.       System.out.println("Copyright 1997 Ampersand Internet All Rights Reserved");
  63.       System.out.println("http://www.powerup.com.au/~mgk\n");
  64.       this.correcthost = "http://www.powerup.com.au/~mgk";
  65.       ((Applet)this).getDocumentBase().toString();
  66.       this.registered = true;
  67.       this.width = ((Component)this).size().width;
  68.       this.height = ((Component)this).size().height;
  69.       this.offscreen = ((Component)this).createImage(this.width, this.height);
  70.       this.field_0 = this.offscreen.getGraphics();
  71.       this.tracker = new MediaTracker(this);
  72.       if (((Applet)this).getParameter("configfile") != null) {
  73.          this.externalconfig();
  74.       } else {
  75.          this.paramconfig();
  76.       }
  77.    }
  78.  
  79.    public void start() {
  80.       if (this.animator == null) {
  81.          this.then = System.currentTimeMillis();
  82.          if (this.random) {
  83.             while(this.weight[this.thisimage] < 1) {
  84.                this.thisimage = (int)(Math.random() * (double)this.bannercount) + 1;
  85.                if (this.now - this.then > (long)this.pause) {
  86.                   this.setweights();
  87.                }
  88.             }
  89.          } else {
  90.             this.thisimage = 1;
  91.          }
  92.  
  93.          ++this.count;
  94.          int var10002 = this.weight[this.thisimage]--;
  95.          this.imageY = 0;
  96.          this.loading = true;
  97.          this.field_0.fillRect(0, 0, this.width, this.height);
  98.          this.field_0.drawImage(this.image[this.thisimage], 0, 0, this);
  99.          this.then = System.currentTimeMillis();
  100.          if (!this.random) {
  101.             this.nextimage = this.thisimage + 1;
  102.          } else {
  103.             while(this.nextimage == this.thisimage || this.weights[this.nextimage] < 1) {
  104.                this.nextimage = (int)(Math.random() * (double)this.bannercount) + 1;
  105.                this.now = System.currentTimeMillis();
  106.                if (this.now - this.then > (long)this.pause) {
  107.                   this.setweights();
  108.                }
  109.             }
  110.          }
  111.  
  112.          ++this.count;
  113.          var10002 = this.weight[this.nextimage]--;
  114.          this.animator = new Thread(this);
  115.          this.animator.start();
  116.       }
  117.  
  118.    }
  119.  
  120.    public void stop() {
  121.       if (this.animator != null) {
  122.          this.animator.stop();
  123.          this.animator = null;
  124.       }
  125.  
  126.    }
  127.  
  128.    public void run() {
  129.       for(; Thread.currentThread() == this.animator; ++this.imageY) {
  130.          this.then = System.currentTimeMillis();
  131.          ((Component)this).repaint();
  132.          this.now = System.currentTimeMillis();
  133.          this.delay = this.now - this.then;
  134.          if (this.delay > this.threadsleep) {
  135.             this.delay = this.threadsleep;
  136.          }
  137.  
  138.          try {
  139.             Thread.sleep(this.threadsleep);
  140.          } catch (InterruptedException var3) {
  141.          }
  142.  
  143.          if (this.imageY == this.height + 1 || this.loading) {
  144.             try {
  145.                Thread.sleep((long)this.pause);
  146.             } catch (InterruptedException var2) {
  147.             }
  148.  
  149.             this.imageY = 0;
  150.             this.oldimage = this.thisimage;
  151.             if (!this.loading) {
  152.                this.thisimage = this.nextimage;
  153.             }
  154.  
  155.             this.then = System.currentTimeMillis();
  156.             if (!this.random) {
  157.                this.nextimage = this.thisimage + 1;
  158.                if (this.nextimage > this.bannercount) {
  159.                   this.nextimage = 1;
  160.                }
  161.             } else {
  162.                while(this.nextimage == this.thisimage || this.weight[this.nextimage] < 1) {
  163.                   this.nextimage = (int)(Math.random() * (double)this.bannercount) + 1;
  164.                   this.now = System.currentTimeMillis();
  165.                   if (this.now - this.then > (long)this.pause) {
  166.                      this.setweights();
  167.                   }
  168.                }
  169.  
  170.                ++this.count;
  171.                int var10002 = this.weight[this.nextimage]--;
  172.                if (this.count == this.total) {
  173.                   this.setweights();
  174.                }
  175.             }
  176.  
  177.             try {
  178.                this.tracker.waitForID(this.nextimage);
  179.             } catch (InterruptedException var1) {
  180.                this.loadimage(this.nextimage, this.images[this.nextimage]);
  181.             }
  182.  
  183.             if (this.tracker.isErrorID(this.nextimage)) {
  184.                this.loadimage(this.nextimage, this.images[this.nextimage]);
  185.             }
  186.  
  187.             this.loading = false;
  188.          }
  189.       }
  190.  
  191.    }
  192.  
  193.    public void update(Graphics var1) {
  194.       this.paint(var1);
  195.       this.field_1 = -this.imageY;
  196.       this.field_2 = -this.imageY + this.height;
  197.       this.field_0.fillRect(0, this.field_1, this.width, this.height);
  198.       this.field_0.drawImage(this.image[this.thisimage], 0, this.field_1, this);
  199.       this.field_0.fillRect(0, this.field_2, this.width, this.height);
  200.       this.field_0.drawImage(this.image[this.nextimage], 0, this.field_2, this);
  201.       if (!this.registered) {
  202.          this.field_0.setFont(new Font("arial", 1, 12));
  203.          this.field_0.setColor(Color.black);
  204.          this.field_0.drawString("Licensed for use at " + this.correcthost, 10, 12);
  205.          this.field_0.drawString("Contact mgk@powerup.com.au to obtain a license", 10, 24);
  206.          this.field_0.setColor(Color.white);
  207.          this.field_0.drawString("Licensed for use at " + this.correcthost, 9, 11);
  208.          this.field_0.drawString("Contact mgk@powerup.com.au to obtain a license", 9, 23);
  209.          this.field_0.setColor(this.backcolor);
  210.       }
  211.  
  212.       this.paint(this.field_0);
  213.    }
  214.  
  215.    public void paint(Graphics var1) {
  216.       var1.drawImage(this.offscreen, 0, 0, this);
  217.    }
  218.  
  219.    public boolean mouseMove(Event var1, int var2, int var3) {
  220.       if (var3 < this.field_2) {
  221.          this.checkURL(this.thisimage);
  222.       }
  223.  
  224.       if (var3 > this.field_2) {
  225.          this.checkURL(this.nextimage);
  226.       }
  227.  
  228.       if (this.url != null && this.url != this.oldurl) {
  229.          ((Applet)this).showStatus("" + this.url);
  230.          this.oldurl = this.url;
  231.       }
  232.  
  233.       return true;
  234.    }
  235.  
  236.    public boolean mouseExit(Event var1, int var2, int var3) {
  237.       ((Applet)this).showStatus("");
  238.       return true;
  239.    }
  240.  
  241.    public boolean mouseUp(Event var1, int var2, int var3) {
  242.       if (var3 < this.field_2) {
  243.          this.checkURL(this.thisimage);
  244.       }
  245.  
  246.       if (var3 > this.field_2) {
  247.          this.checkURL(this.nextimage);
  248.       }
  249.  
  250.       if (this.url != null) {
  251.          if (this.audioclip != null) {
  252.             this.audioclip.play();
  253.          }
  254.  
  255.          if (this.target.trim().equals("null")) {
  256.             ((Applet)this).getAppletContext().showDocument(this.url);
  257.          } else {
  258.             ((Applet)this).getAppletContext().showDocument(this.url, this.target);
  259.          }
  260.       }
  261.  
  262.       return true;
  263.    }
  264.  
  265.    public void checkURL(int var1) {
  266.       if (this.urls[var1] != null) {
  267.          String var2 = this.urls[var1];
  268.  
  269.          try {
  270.             this.url = new URL(var2);
  271.          } catch (MalformedURLException var3) {
  272.             System.out.println("Bad URL for URL" + var1 + " in Banner applet: " + this.urls[var1]);
  273.          }
  274.       }
  275.  
  276.       this.target = this.targets[var1];
  277.       if (this.audioclips[var1].trim().equals("null")) {
  278.          this.audioclip = null;
  279.       } else {
  280.          this.audioclip = ((Applet)this).getAudioClip(((Applet)this).getCodeBase(), this.audioclips[var1]);
  281.       }
  282.    }
  283.  
  284.    public void loadimage(int var1, String var2) {
  285.       if (var2.toLowerCase().startsWith("http")) {
  286.          try {
  287.             Image var8 = ((Applet)this).getImage(new URL(var2));
  288.             FixDither var9 = new FixDither();
  289.             FilteredImageSource var10 = new FilteredImageSource(var8.getSource(), var9);
  290.             this.image[var1] = ((Component)this).createImage(var10);
  291.             this.tracker.addImage(this.image[var1], var1);
  292.          } catch (Exception var6) {
  293.             System.out.println(var6 + " loading image in Banner applet");
  294.          }
  295.       } else {
  296.          try {
  297.             Image var3 = ((Applet)this).getImage(((Applet)this).getDocumentBase(), var2);
  298.             FixDither var4 = new FixDither();
  299.             FilteredImageSource var5 = new FilteredImageSource(var3.getSource(), var4);
  300.             this.image[var1] = ((Component)this).createImage(var5);
  301.             this.tracker.addImage(this.image[var1], var1);
  302.          } catch (Exception var7) {
  303.             System.out.println(var7 + " loading image in Banner applet");
  304.          }
  305.       }
  306.    }
  307.  
  308.    public void setweights() {
  309.       this.count = 0;
  310.       this.total = 0;
  311.  
  312.       for(int var1 = 1; var1 < this.bannercount + 1; ++var1) {
  313.          this.weight[var1] = this.weights[var1];
  314.          this.total += this.weights[var1];
  315.       }
  316.  
  317.    }
  318.  
  319.    public void paramconfig() {
  320.       int var1 = 0;
  321.       int var2 = 0;
  322.       int var3 = 0;
  323.       String var4 = "";
  324.       this.parameter = ((Applet)this).getParameter("backcolor");
  325.       if (this.parameter == null) {
  326.          this.parameter = "#abcdef";
  327.       }
  328.  
  329.       var4 = this.parameter.substring(1, 3);
  330.       var1 = Integer.valueOf(var4, 16);
  331.       var4 = this.parameter.substring(3, 5);
  332.       var2 = Integer.valueOf(var4, 16);
  333.       var4 = this.parameter.substring(5, 7);
  334.       var3 = Integer.valueOf(var4, 16);
  335.       this.backcolor = new Color(var1, var2, var3);
  336.       this.field_0.setColor(this.backcolor);
  337.       this.parameter = ((Applet)this).getParameter("pause");
  338.       if (this.parameter == null) {
  339.          this.parameter = "3000";
  340.       }
  341.  
  342.       this.pause = Integer.parseInt(this.parameter);
  343.       this.parameter = ((Applet)this).getParameter("threadsleep");
  344.       if (this.parameter == null) {
  345.          this.parameter = "40";
  346.       }
  347.  
  348.       this.threadsleep = (long)Integer.parseInt(this.parameter);
  349.       this.parameter = ((Applet)this).getParameter("random");
  350.       if (this.parameter.equalsIgnoreCase("yes")) {
  351.          this.random = true;
  352.       }
  353.  
  354.       for(int var5 = 1; ((Applet)this).getParameter("banner" + var5) != null; this.bannercount = var5++) {
  355.       }
  356.  
  357.       this.image = new Image[this.bannercount + 2];
  358.       this.images = new String[this.bannercount + 2];
  359.       this.weights = new int[this.bannercount + 2];
  360.       this.weight = new int[this.bannercount + 2];
  361.       this.urls = new String[this.bannercount + 2];
  362.       this.targets = new String[this.bannercount + 2];
  363.       this.audioclips = new String[this.bannercount + 2];
  364.       this.count = 0;
  365.       this.total = 0;
  366.  
  367.       for(int var6 = 1; var6 < this.bannercount + 1; ++var6) {
  368.          this.images[var6] = ((Applet)this).getParameter("banner" + var6);
  369.          this.loadimage(var6, this.images[var6]);
  370.          if (((Applet)this).getParameter("weight" + var6) == null) {
  371.             this.weights[var6] = 1;
  372.          } else {
  373.             this.weights[var6] = Integer.parseInt(((Applet)this).getParameter("weight" + var6));
  374.          }
  375.  
  376.          if (((Applet)this).getParameter("url" + var6) == null) {
  377.             this.urls[var6] = "null";
  378.          } else {
  379.             this.urls[var6] = ((Applet)this).getParameter("url" + var6);
  380.          }
  381.  
  382.          if (((Applet)this).getParameter("target" + var6) == null) {
  383.             this.targets[var6] = "null";
  384.          } else {
  385.             this.targets[var6] = ((Applet)this).getParameter("target" + var6);
  386.          }
  387.  
  388.          if (((Applet)this).getParameter("audio" + var6) == null) {
  389.             this.audioclips[var6] = "null";
  390.          } else {
  391.             this.audioclips[var6] = ((Applet)this).getParameter("audio" + var6);
  392.          }
  393.  
  394.          this.field_0.drawImage(this.image[var6], 0, 0, this);
  395.          this.audioclip = ((Applet)this).getAudioClip(((Applet)this).getCodeBase(), this.audioclips[var6]);
  396.       }
  397.  
  398.       this.setweights();
  399.    }
  400.  
  401.    public void externalconfig() {
  402.       String var1 = ((Applet)this).getParameter("configfile");
  403.       byte[] var2 = new byte[10240];
  404.  
  405.       try {
  406.          URL var3 = new URL(((Applet)this).getDocumentBase(), var1);
  407.          URLConnection var4 = var3.openConnection();
  408.          InputStream var5 = var4.getInputStream();
  409.          var5.read(var2);
  410.       } catch (Exception var11) {
  411.          ((Applet)this).showStatus("Error: " + ((Throwable)var11).toString() + " while loading " + var1);
  412.       }
  413.  
  414.       String var12 = new String(var2, 0);
  415.       StringTokenizer var17 = new StringTokenizer(var12, "\n");
  416.  
  417.       for(int var19 = 1; var19 >= 0; ++var19) {
  418.          String var6 = var17.nextToken().trim();
  419.          if (var6.trim().equals("EOF")) {
  420.             this.bannercount = var19 - 5;
  421.             break;
  422.          }
  423.       }
  424.  
  425.       this.image = new Image[this.bannercount + 2];
  426.       this.images = new String[this.bannercount + 2];
  427.       this.weights = new int[this.bannercount + 2];
  428.       this.weight = new int[this.bannercount + 2];
  429.       this.urls = new String[this.bannercount + 2];
  430.       this.targets = new String[this.bannercount + 2];
  431.       this.audioclips = new String[this.bannercount + 2];
  432.       var17 = new StringTokenizer(var12, "\n");
  433.  
  434.       for(int var20 = 1; var20 < this.bannercount + 1; ++var20) {
  435.          String var7 = var17.nextToken().trim();
  436.          StringTokenizer var8 = new StringTokenizer(var7, ",");
  437.          this.loadimage(var20, var8.nextToken());
  438.          this.weights[var20] = Integer.parseInt(var8.nextToken());
  439.          this.urls[var20] = var8.nextToken();
  440.          this.targets[var20] = var8.nextToken();
  441.          this.audioclips[var20] = var8.nextToken();
  442.          this.field_0.drawImage(this.image[var20], 0, 0, this);
  443.          if (!this.audioclips[var20].equals("null")) {
  444.             this.audioclip = ((Applet)this).getAudioClip(((Applet)this).getCodeBase(), this.audioclips[var20]);
  445.          }
  446.       }
  447.  
  448.       this.parameter = var17.nextToken().trim();
  449.       int var21 = 0;
  450.       int var23 = 0;
  451.       int var9 = 0;
  452.       var12 = "";
  453.       if (this.parameter == null) {
  454.          this.parameter = "#000000";
  455.       }
  456.  
  457.       var12 = this.parameter.substring(1, 3);
  458.       var21 = Integer.valueOf(var12, 16);
  459.       var12 = this.parameter.substring(3, 5);
  460.       var23 = Integer.valueOf(var12, 16);
  461.       var12 = this.parameter.substring(5, 7);
  462.       var9 = Integer.valueOf(var12, 16);
  463.       this.backcolor = new Color(var21, var23, var9);
  464.       this.field_0.setColor(this.backcolor);
  465.       this.pause = Integer.parseInt(var17.nextToken().trim());
  466.       this.threadsleep = (long)Integer.parseInt(var17.nextToken().trim());
  467.       String var10 = var17.nextToken().trim();
  468.       if (var10 == "yes") {
  469.          this.random = true;
  470.       } else {
  471.          this.random = false;
  472.       }
  473.  
  474.       this.setweights();
  475.    }
  476. }
  477.