home *** CD-ROM | disk | FTP | other *** search
/ Internet Magazine 2002 June / INTERNET92.ISO / pc / software / windows / building / visual_dhtml / visualdhtmlwin9x_nt.exe / slideb.___ (.txt) < prev    next >
Encoding:
Java Class File  |  2001-10-19  |  8.5 KB  |  540 lines

  1. import java.applet.Applet;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Dimension;
  5. import java.awt.Event;
  6. import java.awt.Font;
  7. import java.awt.FontMetrics;
  8. import java.awt.Graphics;
  9. import java.awt.Image;
  10. import java.awt.MediaTracker;
  11. import java.net.MalformedURLException;
  12. import java.net.URL;
  13.  
  14. public class slideb extends OCAviewerExtend implements Runnable {
  15.    Image off2;
  16.    Graphics g_off2;
  17.    // $FF: renamed from: fm java.awt.FontMetrics
  18.    FontMetrics field_0;
  19.    Image[] images;
  20.    URL goURL;
  21.    private Thread bbthread = null;
  22.    boolean on_the_move = false;
  23.    boolean mouse_on;
  24.    int which_image = -1;
  25.    // $FF: renamed from: k int
  26.    int field_1;
  27.    MediaTracker tracker;
  28.    // $FF: renamed from: d java.awt.Dimension
  29.    Dimension field_2;
  30.    long next_time;
  31.    boolean time_expired;
  32.    private boolean m_stall_on_mouseover = true;
  33.    private int m_expired_delay = 2000;
  34.    private boolean m_overlap = true;
  35.    private int m_jump = 1;
  36.    private String m_load_msg = "";
  37.    private int font_size = 12;
  38.    private int m_delay_periods = 3;
  39.    private String m_offsbtext = "Java by OpenCube";
  40.    private Color m_bgcolor;
  41.    private Color m_textcolor;
  42.    private String m_loadwhere;
  43.    private String[] m_cur_loadwhere;
  44.    private boolean[] m_cur_overlap;
  45.    private boolean[] m_drawn;
  46.    private String[] imagefile;
  47.    private int m_movedelay;
  48.    private int[] m_heading;
  49.    int num_images;
  50.    String[] destinations;
  51.    String[] descriptions;
  52.    boolean first_pass;
  53.    boolean push_status;
  54.    boolean first_run;
  55.    Image off;
  56.    Graphics g_off;
  57.    int[] delay_periods;
  58.    boolean tag;
  59.  
  60.    public void stop() {
  61.       if (this.bbthread != null) {
  62.          this.bbthread.stop();
  63.          this.bbthread = null;
  64.       }
  65.  
  66.    }
  67.  
  68.    public boolean mouseEnter(Event var1, int var2, int var3) {
  69.       this.mouse_on = true;
  70.       if (!this.descriptions[this.which_image].equals("-1")) {
  71.          ((OCAviewerExtend)this).showStatus(this.descriptions[this.which_image]);
  72.       }
  73.  
  74.       return true;
  75.    }
  76.  
  77.    public boolean mouseExit(Event var1, int var2, int var3) {
  78.       this.mouse_on = false;
  79.       ((OCAviewerExtend)this).showStatus(this.m_offsbtext);
  80.       return true;
  81.    }
  82.  
  83.    public void paint(Graphics var1) {
  84.       this.paintIt(var1);
  85.    }
  86.  
  87.    public slideb() {
  88.       this.m_bgcolor = Color.black;
  89.       this.m_textcolor = Color.white;
  90.       this.m_loadwhere = "_self";
  91.       this.m_movedelay = 0;
  92.       this.first_pass = true;
  93.       this.push_status = false;
  94.       this.first_run = true;
  95.       this.tag = false;
  96.    }
  97.  
  98.    public void paintIt(Graphics var1) {
  99.       if (this.tag) {
  100.          if (this.first_run) {
  101.             this.drawLoad(var1, this.m_load_msg);
  102.             return;
  103.          }
  104.  
  105.          if (!this.on_the_move) {
  106.             this.drawBG();
  107.             this.g_off.drawImage(this.images[this.which_image], 0, 0, this);
  108.             var1.drawImage(this.off, 0, 0, this);
  109.             ((OCAviewerExtend)this).showStatus(this.descriptions[this.which_image]);
  110.             return;
  111.          }
  112.       } else {
  113.          this.drawLoad(var1, "Invalid Notice Tag");
  114.          var1.drawString("Invalid Notice Tag", this.field_2.width / 2 - this.field_0.stringWidth(this.m_load_msg) / 2, this.field_2.height / 2 + this.field_0.getDescent());
  115.          ((OCAviewerExtend)this).showStatus("Invalid 'Notice' Tag");
  116.       }
  117.  
  118.    }
  119.  
  120.    static int getTransitionValue(String var0) {
  121.       if (var0.equalsIgnoreCase("Up-Left")) {
  122.          return 0;
  123.       } else if (var0.equalsIgnoreCase("Up")) {
  124.          return 1;
  125.       } else if (var0.equalsIgnoreCase("Up-Right")) {
  126.          return 2;
  127.       } else if (var0.equalsIgnoreCase("Right")) {
  128.          return 3;
  129.       } else if (var0.equalsIgnoreCase("Down-Right")) {
  130.          return 4;
  131.       } else if (var0.equalsIgnoreCase("Down")) {
  132.          return 5;
  133.       } else if (var0.equalsIgnoreCase("Down-Left")) {
  134.          return 6;
  135.       } else if (var0.equalsIgnoreCase("Left")) {
  136.          return 7;
  137.       } else {
  138.          return var0.equalsIgnoreCase("Random") ? 8 : -1;
  139.       }
  140.    }
  141.  
  142.    public void drawLoad(Graphics var1, String var2) {
  143.       this.g_off.setColor(this.m_bgcolor);
  144.       this.g_off.fillRect(0, 0, this.field_2.width, this.field_2.height);
  145.       this.g_off.setColor(this.m_textcolor);
  146.       this.field_0 = ((Component)this).getFontMetrics(new Font("Helvetica", 0, this.font_size));
  147.       this.g_off.setFont(new Font("Helvetica", 0, this.font_size));
  148.       this.g_off.drawString(var2, this.field_2.width / 2 - this.field_0.stringWidth(var2) / 2, this.field_2.height / 2 + this.field_0.getDescent());
  149.       this.g_off2.drawImage(this.off, 0, 0, this);
  150.       var1.drawImage(this.off, 0, 0, this);
  151.    }
  152.  
  153.    public void moveSlide(Graphics var1) {
  154.       double var2 = (double)0.0F;
  155.       double var4 = (double)this.field_2.height / (double)this.field_2.width;
  156.       this.on_the_move = true;
  157.       if (this.m_heading[this.field_1] == 0) {
  158.          var2 = (double)(-this.field_2.height);
  159.  
  160.          for(int var6 = -this.field_2.width; var6 <= 0; var6 += this.m_jump) {
  161.             var2 += var4 * (double)this.m_jump;
  162.             var1.drawImage(this.off, var6, (int)var2, this);
  163.             if (!this.m_cur_overlap[this.field_1]) {
  164.                var1.drawImage(this.off2, var6 + this.field_2.width, (int)var2 + this.field_2.height, this);
  165.             }
  166.  
  167.             try {
  168.                Thread.sleep((long)this.m_movedelay);
  169.             } catch (InterruptedException var14) {
  170.             }
  171.          }
  172.  
  173.          var1.drawImage(this.off, 0, 0, this);
  174.          var2 = (double)0.0F;
  175.       } else if (this.m_heading[this.field_1] == 1) {
  176.          for(int var23 = -this.field_2.height; var23 <= 0; var23 += this.m_jump) {
  177.             var1.drawImage(this.off, 0, var23, this);
  178.             if (!this.m_cur_overlap[this.field_1]) {
  179.                var1.drawImage(this.off2, 0, var23 + this.field_2.height, this);
  180.             }
  181.  
  182.             try {
  183.                Thread.sleep((long)this.m_movedelay);
  184.             } catch (InterruptedException var13) {
  185.             }
  186.          }
  187.  
  188.          var1.drawImage(this.off, 0, 0, this);
  189.       } else if (this.m_heading[this.field_1] == 2) {
  190.          var2 = (double)(-this.field_2.height);
  191.  
  192.          for(int var24 = this.field_2.width; var24 >= 0; var24 -= this.m_jump) {
  193.             var2 += var4 * (double)this.m_jump;
  194.             var1.drawImage(this.off, var24, (int)var2, this);
  195.             if (!this.m_cur_overlap[this.field_1]) {
  196.                var1.drawImage(this.off2, var24 - this.field_2.width, (int)var2 + this.field_2.height, this);
  197.             }
  198.  
  199.             try {
  200.                Thread.sleep((long)this.m_movedelay);
  201.             } catch (InterruptedException var12) {
  202.             }
  203.          }
  204.  
  205.          var1.drawImage(this.off, 0, 0, this);
  206.          var2 = (double)0.0F;
  207.       } else if (this.m_heading[this.field_1] == 3) {
  208.          for(int var25 = this.field_2.width; var25 >= 0; var25 -= this.m_jump) {
  209.             var1.drawImage(this.off, var25, 0, this);
  210.             if (!this.m_cur_overlap[this.field_1]) {
  211.                var1.drawImage(this.off2, var25 - this.field_2.width, 0, this);
  212.             }
  213.  
  214.             try {
  215.                Thread.sleep((long)this.m_movedelay);
  216.             } catch (InterruptedException var11) {
  217.             }
  218.          }
  219.  
  220.          var1.drawImage(this.off, 0, 0, this);
  221.       } else if (this.m_heading[this.field_1] == 4) {
  222.          var2 = (double)this.field_2.height;
  223.  
  224.          for(int var26 = this.field_2.width; var26 >= 0; var26 -= this.m_jump) {
  225.             var2 -= var4 * (double)this.m_jump;
  226.             var1.drawImage(this.off, var26, (int)var2, this);
  227.             if (!this.m_cur_overlap[this.field_1]) {
  228.                var1.drawImage(this.off2, var26 - this.field_2.width, (int)var2 - this.field_2.height, this);
  229.             }
  230.  
  231.             try {
  232.                Thread.sleep((long)this.m_movedelay);
  233.             } catch (InterruptedException var10) {
  234.             }
  235.          }
  236.  
  237.          var1.drawImage(this.off, 0, 0, this);
  238.          var2 = (double)0.0F;
  239.       } else if (this.m_heading[this.field_1] == 5) {
  240.          for(int var27 = this.field_2.height; var27 >= 0; var27 -= this.m_jump) {
  241.             var1.drawImage(this.off, 0, var27, this);
  242.             if (!this.m_cur_overlap[this.field_1]) {
  243.                var1.drawImage(this.off2, 0, var27 - this.field_2.height, this);
  244.             }
  245.  
  246.             try {
  247.                Thread.sleep((long)this.m_movedelay);
  248.             } catch (InterruptedException var9) {
  249.             }
  250.          }
  251.  
  252.          var1.drawImage(this.off, 0, 0, this);
  253.       } else if (this.m_heading[this.field_1] == 6) {
  254.          var2 = (double)this.field_2.height;
  255.  
  256.          for(int var28 = -this.field_2.width; var28 <= 0; var28 += this.m_jump) {
  257.             var2 -= var4 * (double)this.m_jump;
  258.             var1.drawImage(this.off, var28, (int)var2, this);
  259.             if (!this.m_cur_overlap[this.field_1]) {
  260.                var1.drawImage(this.off2, var28 + this.field_2.width, (int)var2 - this.field_2.height, this);
  261.             }
  262.  
  263.             try {
  264.                Thread.sleep((long)this.m_movedelay);
  265.             } catch (InterruptedException var8) {
  266.             }
  267.          }
  268.  
  269.          var1.drawImage(this.off, 0, 0, this);
  270.          var2 = (double)0.0F;
  271.       } else if (this.m_heading[this.field_1] == 7) {
  272.          for(int var29 = -this.field_2.width; var29 <= 0; var29 += this.m_jump) {
  273.             var1.drawImage(this.off, var29, 0, this);
  274.             if (!this.m_cur_overlap[this.field_1]) {
  275.                var1.drawImage(this.off2, var29 + this.field_2.width, 0, this);
  276.             }
  277.  
  278.             try {
  279.                Thread.sleep((long)this.m_movedelay);
  280.             } catch (InterruptedException var7) {
  281.             }
  282.          }
  283.  
  284.          var1.drawImage(this.off, 0, 0, this);
  285.       } else {
  286.          var1.drawImage(this.off, 0, 0, this);
  287.       }
  288.  
  289.       if (this.field_1 != this.num_images - 1) {
  290.          if (!this.m_cur_overlap[this.field_1 + 1]) {
  291.             this.g_off2.drawImage(this.off, 0, 0, this);
  292.          }
  293.       } else if (!this.m_cur_overlap[0]) {
  294.          this.g_off2.drawImage(this.off, 0, 0, this);
  295.       }
  296.  
  297.       this.on_the_move = false;
  298.    }
  299.  
  300.    public void start() {
  301.       if (this.bbthread == null) {
  302.          this.bbthread = new Thread(this);
  303.          this.bbthread.start();
  304.       }
  305.  
  306.    }
  307.  
  308.    public void drawBG() {
  309.       this.g_off.setColor(this.m_bgcolor);
  310.       this.g_off.fillRect(0, 0, this.field_2.height, this.field_2.width);
  311.    }
  312.  
  313.    public boolean mouseDown(Event var1, int var2, int var3) {
  314.       if (!this.destinations[this.which_image].equals("-1")) {
  315.          try {
  316.             this.goURL = new URL(((OCAviewerExtend)this).getDocumentBase(), this.destinations[this.which_image]);
  317.             ((Applet)this).getAppletContext().showDocument(this.goURL, this.m_cur_loadwhere[this.which_image]);
  318.          } catch (MalformedURLException var4) {
  319.          }
  320.       }
  321.  
  322.       return true;
  323.    }
  324.  
  325.    public void runDelay() {
  326.       this.next_time = System.currentTimeMillis() + (long)this.delay_periods[this.which_image];
  327.       long var1 = 0L;
  328.       if (this.m_stall_on_mouseover) {
  329.          while((var1 = System.currentTimeMillis()) < this.next_time || this.mouse_on) {
  330.             if (var1 > this.next_time && this.mouse_on) {
  331.                this.next_time = System.currentTimeMillis() + (long)this.m_expired_delay;
  332.             }
  333.  
  334.             try {
  335.                Thread.sleep(250L);
  336.             } catch (InterruptedException var3) {
  337.             }
  338.          }
  339.  
  340.       } else {
  341.          try {
  342.             Thread.sleep((long)this.delay_periods[this.which_image]);
  343.          } catch (InterruptedException var4) {
  344.          }
  345.       }
  346.    }
  347.  
  348.    public void run() {
  349.       Graphics var1 = ((Component)this).getGraphics();
  350.       if (this.first_run) {
  351.          this.drawLoad(var1, this.m_load_msg);
  352.          this.first_run = false;
  353.       }
  354.  
  355.       while(true) {
  356.          if (++this.which_image >= this.images.length) {
  357.             this.which_image = 0;
  358.          }
  359.  
  360.          this.field_1 = this.which_image;
  361.          if (!this.tracker.checkID(this.field_1, true)) {
  362.             while(!this.tracker.checkID(this.field_1)) {
  363.                try {
  364.                   Thread.sleep(100L);
  365.                } catch (InterruptedException var3) {
  366.                }
  367.  
  368.                if (this.tracker.isErrorID(this.field_1)) {
  369.                   break;
  370.                }
  371.             }
  372.          }
  373.  
  374.          if (!this.m_drawn[this.field_1]) {
  375.             ocgifix var2 = new ocgifix();
  376.             this.images[this.field_1] = var2.gifix(this.images[this.field_1], this.imagefile[this.field_1]);
  377.             this.m_drawn[this.field_1] = true;
  378.          }
  379.  
  380.          this.drawBG();
  381.          this.g_off.drawImage(this.images[this.which_image], 0, 0, this);
  382.          ((OCAviewerExtend)this).showStatus(this.descriptions[this.which_image]);
  383.          this.moveSlide(((Component)this).getGraphics());
  384.          this.runDelay();
  385.       }
  386.    }
  387.  
  388.    public void init() {
  389.       String var1 = "Sliding Billboards, Copyright (c) 1999, OpenCube Inc.";
  390.       int var2 = 0;
  391.       this.field_2 = ((Component)this).size();
  392.       Object var3 = null;
  393.       this.tracker = new MediaTracker(this);
  394.       this.off = ((Component)this).createImage(this.field_2.width, this.field_2.height);
  395.       this.g_off = this.off.getGraphics();
  396.       String var6 = ((OCAviewerExtend)this).getParameter("Notice");
  397.       if (var6 == null) {
  398.          this.m_offsbtext = "Missing 'Notice' Tag";
  399.       } else {
  400.          String var4 = compkey.getKey(var6, ((OCAviewerExtend)this).getDocumentBase());
  401.          if (!var4.equals(var1)) {
  402.             if (var4.equals("-1")) {
  403.                this.m_offsbtext = "Licence Error: Invalid URL";
  404.             } else {
  405.                this.m_offsbtext = "Incorrect Copyright Notice in 'Notice' tag";
  406.             }
  407.          } else {
  408.             this.tag = true;
  409.             var6 = ((OCAviewerExtend)this).getParameter("movedelay");
  410.             if (var6 != null) {
  411.                this.m_movedelay = Integer.parseInt(var6);
  412.             }
  413.  
  414.             var6 = ((OCAviewerExtend)this).getParameter("offdelay");
  415.             if (var6 != null) {
  416.                this.m_expired_delay = Integer.parseInt(var6) * 1000;
  417.             }
  418.  
  419.             var6 = ((OCAviewerExtend)this).getParameter("jump");
  420.             if (var6 != null) {
  421.                this.m_jump = Integer.parseInt(var6);
  422.             }
  423.  
  424.             if ((var6 = ((OCAviewerExtend)this).getParameter("loaddesc")) != null) {
  425.                this.m_load_msg = var6;
  426.             }
  427.  
  428.             if ((var6 = ((OCAviewerExtend)this).getParameter("fontsize")) != null) {
  429.                this.font_size = Integer.parseInt(var6);
  430.             }
  431.  
  432.             if ((var6 = ((OCAviewerExtend)this).getParameter("delay")) != null) {
  433.                this.m_delay_periods = Integer.parseInt(var6) * 1000;
  434.             }
  435.  
  436.             if ((var6 = ((OCAviewerExtend)this).getParameter("offsbtext")) != null) {
  437.                this.m_offsbtext = var6;
  438.             }
  439.  
  440.             if ((var6 = ((OCAviewerExtend)this).getParameter("bgcolor")) != null) {
  441.                this.m_bgcolor = occcolor.ConvertColor(var6);
  442.             }
  443.  
  444.             ((Component)this).setBackground(this.m_bgcolor);
  445.             if ((var6 = ((OCAviewerExtend)this).getParameter("textcolor")) != null) {
  446.                this.m_textcolor = occcolor.ConvertColor(var6);
  447.             }
  448.  
  449.             if ((var6 = ((OCAviewerExtend)this).getParameter("loadwhere")) != null) {
  450.                this.m_loadwhere = var6;
  451.             }
  452.  
  453.             var6 = ((OCAviewerExtend)this).getParameter("overlap");
  454.             if (var6 != null) {
  455.                this.m_overlap = Boolean.valueOf(var6);
  456.             }
  457.  
  458.             var6 = ((OCAviewerExtend)this).getParameter("stallmover");
  459.             if (var6 != null) {
  460.                this.m_stall_on_mouseover = Boolean.valueOf(var6);
  461.             }
  462.  
  463.             while(((OCAviewerExtend)this).getParameter("imagefile" + var2) != null) {
  464.                ++var2;
  465.                ++this.num_images;
  466.             }
  467.  
  468.             this.images = new Image[this.num_images];
  469.             this.imagefile = new String[this.num_images];
  470.             this.destinations = new String[this.num_images];
  471.             this.descriptions = new String[this.num_images];
  472.             this.delay_periods = new int[this.num_images];
  473.             this.m_cur_loadwhere = new String[this.num_images];
  474.             this.m_cur_overlap = new boolean[this.num_images];
  475.             this.m_heading = new int[this.num_images];
  476.             this.m_drawn = new boolean[this.num_images];
  477.  
  478.             for(int var5 = 0; var5 < this.num_images; ++var5) {
  479.                if ((var6 = ((OCAviewerExtend)this).getParameter("imagefile" + var5)) != null) {
  480.                   this.imagefile[var5] = var6;
  481.                   this.images[var5] = ((Applet)this).getImage(((OCAviewerExtend)this).getDocumentBase(), var6);
  482.                   this.tracker.addImage(this.images[var5], var5);
  483.                }
  484.  
  485.                if ((var6 = ((OCAviewerExtend)this).getParameter("desturl" + var5)) != null) {
  486.                   this.destinations[var5] = var6;
  487.                } else {
  488.                   this.destinations[var5] = "-1";
  489.                }
  490.  
  491.                if ((var6 = ((OCAviewerExtend)this).getParameter("desc" + var5)) != null) {
  492.                   this.descriptions[var5] = var6;
  493.                } else {
  494.                   this.descriptions[var5] = this.destinations[var5];
  495.                }
  496.  
  497.                if ((var6 = ((OCAviewerExtend)this).getParameter("delay" + var5)) != null) {
  498.                   this.delay_periods[var5] = Integer.parseInt(var6) * 1000;
  499.                } else {
  500.                   this.delay_periods[var5] = this.m_delay_periods;
  501.                }
  502.  
  503.                if ((var6 = ((OCAviewerExtend)this).getParameter("loadwhere" + var5)) != null) {
  504.                   this.m_cur_loadwhere[var5] = var6;
  505.                } else {
  506.                   this.m_cur_loadwhere[var5] = this.m_loadwhere;
  507.                }
  508.  
  509.                var6 = ((OCAviewerExtend)this).getParameter("overlap" + var5);
  510.                if (var6 != null) {
  511.                   this.m_cur_overlap[var5] = Boolean.valueOf(var6);
  512.                } else {
  513.                   this.m_cur_overlap[var5] = this.m_overlap;
  514.                }
  515.  
  516.                if (!this.m_cur_overlap[var5]) {
  517.                   this.push_status = true;
  518.                }
  519.  
  520.                var6 = ((OCAviewerExtend)this).getParameter("heading" + var5);
  521.                if (var6 != null) {
  522.                   this.m_heading[var5] = getTransitionValue(var6);
  523.                   if (this.m_heading[var5] == 8) {
  524.                      this.m_heading[var5] = (int)(Math.random() * (double)8.0F);
  525.                   }
  526.                } else {
  527.                   this.m_heading[var5] = (int)(Math.random() * (double)8.0F);
  528.                }
  529.             }
  530.  
  531.             if (this.push_status = true) {
  532.                this.off2 = ((Component)this).createImage(this.field_2.width, this.field_2.height);
  533.                this.g_off2 = this.off2.getGraphics();
  534.             }
  535.  
  536.          }
  537.       }
  538.    }
  539. }
  540.