home *** CD-ROM | disk | FTP | other *** search
/ Windows 95 Secrets / Secrets1.iso / Internet / HTMLU / JavaPerk / _SETUP.1 / ButtonPLUS3.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-08-27  |  7.6 KB  |  364 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.Dimension;
  6. import java.awt.Event;
  7. import java.awt.Font;
  8. import java.awt.FontMetrics;
  9. import java.awt.Graphics;
  10. import java.awt.Image;
  11. import java.net.URL;
  12. import java.util.StringTokenizer;
  13.  
  14. public class ButtonPLUS3 extends Applet {
  15.    String fontname;
  16.    String basetext;
  17.    String entertext;
  18.    String clicktext;
  19.    String textalign;
  20.    String vtextalign;
  21.    String onetag;
  22.    String target;
  23.    String mode = "exit";
  24.    boolean firsttime = true;
  25.    boolean btext;
  26.    boolean etext;
  27.    boolean ctext;
  28.    boolean bimage;
  29.    boolean eimage;
  30.    boolean cimage;
  31.    boolean tag;
  32.    boolean esound = false;
  33.    boolean csound = false;
  34.    int fontsize;
  35.    int highlight;
  36.    // $FF: renamed from: br int
  37.    int field_0;
  38.    // $FF: renamed from: bg int
  39.    int field_1;
  40.    // $FF: renamed from: bb int
  41.    int field_2;
  42.    // $FF: renamed from: tr int
  43.    int field_3;
  44.    // $FF: renamed from: tg int
  45.    int field_4;
  46.    // $FF: renamed from: tb int
  47.    int field_5;
  48.    // $FF: renamed from: w int
  49.    int field_6;
  50.    // $FF: renamed from: h int
  51.    int field_7;
  52.    Image bufferI;
  53.    Image baseimage;
  54.    Image clickimage;
  55.    Image enterimage;
  56.    Graphics bufferG;
  57.    URL hotlink;
  58.    AudioClip entersound;
  59.    AudioClip clicksound;
  60.    // $FF: renamed from: f java.awt.Font
  61.    Font field_8;
  62.    // $FF: renamed from: fm java.awt.FontMetrics
  63.    FontMetrics field_9;
  64.  
  65.    public void init() {
  66.       Dimension var2 = ((Component)this).size();
  67.       this.field_6 = var2.width;
  68.       this.field_7 = var2.height;
  69.       this.bufferI = ((Component)this).createImage(this.field_6, this.field_7);
  70.       this.bufferG = this.bufferI.getGraphics();
  71.       String var1 = ((Applet)this).getParameter("ONETAG");
  72.       if (var1 != null) {
  73.          this.tag = true;
  74.          this.onetag = var1 + "*";
  75.       } else {
  76.          this.tag = false;
  77.       }
  78.  
  79.       var1 = this.tag ? this.extractParam("FONTNAME") : ((Applet)this).getParameter("FONTNAME");
  80.       this.fontname = var1 != null ? var1 : "TimesRoman";
  81.       var1 = this.tag ? this.extractParam("TEXTALIGN") : ((Applet)this).getParameter("TEXTALIGN");
  82.       this.textalign = var1 != null ? var1 : "center";
  83.       var1 = this.tag ? this.extractParam("VTEXTALIGN") : ((Applet)this).getParameter("VTEXTALIGN");
  84.       this.vtextalign = var1 != null ? var1 : "center";
  85.       var1 = this.tag ? this.extractParam("FONTSIZE") : ((Applet)this).getParameter("FONTSIZE");
  86.       this.fontsize = var1 != null ? Integer.parseInt(var1) : 12;
  87.       var1 = this.tag ? this.extractParam("URL") : ((Applet)this).getParameter("URL");
  88.       if (var1 != null) {
  89.          try {
  90.             this.hotlink = new URL(((Applet)this).getDocumentBase(), var1);
  91.          } catch (Exception var10) {
  92.          }
  93.       } else {
  94.          try {
  95.             this.hotlink = new URL("http://www.xm.com/cafe/ButtonPLUS/index.html");
  96.          } catch (Exception var9) {
  97.          }
  98.       }
  99.  
  100.       var1 = this.tag ? this.extractParam("TEXT") : ((Applet)this).getParameter("TEXT");
  101.       if (var1 != null) {
  102.          this.basetext = var1.substring(0, var1.indexOf("|"));
  103.          this.entertext = var1.substring(var1.indexOf("|") + 1, var1.lastIndexOf("|"));
  104.          this.clicktext = var1.substring(var1.lastIndexOf("|") + 1);
  105.          if (this.basetext != null) {
  106.             this.btext = true;
  107.          }
  108.  
  109.          if (this.entertext != null) {
  110.             this.etext = true;
  111.          }
  112.  
  113.          if (this.clicktext != null) {
  114.             this.ctext = true;
  115.          }
  116.       }
  117.  
  118.       var1 = this.tag ? this.extractParam("TARGET") : ((Applet)this).getParameter("TARGET");
  119.       this.target = var1;
  120.       var1 = this.tag ? this.extractParam("IMAGE") : ((Applet)this).getParameter("IMAGE");
  121.       if (var1 != null) {
  122.          String var4 = var1.substring(0, var1.indexOf("|"));
  123.          String var5 = var1.substring(var1.indexOf("|") + 1, var1.lastIndexOf("|"));
  124.          String var6 = var1.substring(var1.lastIndexOf("|") + 1);
  125.  
  126.          try {
  127.             this.baseimage = ((Applet)this).getImage(new URL(((Applet)this).getDocumentBase(), var4));
  128.             this.enterimage = ((Applet)this).getImage(new URL(((Applet)this).getDocumentBase(), var5));
  129.             this.clickimage = ((Applet)this).getImage(new URL(((Applet)this).getDocumentBase(), var6));
  130.          } catch (Exception var8) {
  131.          }
  132.  
  133.          if (this.baseimage != null) {
  134.             this.bimage = true;
  135.          }
  136.  
  137.          if (this.enterimage != null) {
  138.             this.eimage = true;
  139.          }
  140.  
  141.          if (this.clickimage != null) {
  142.             this.cimage = true;
  143.          }
  144.       }
  145.  
  146.       var1 = this.tag ? this.extractParam("SOUND") : ((Applet)this).getParameter("SOUND");
  147.       if (var1 != null) {
  148.          String var24 = var1.substring(0, var1.indexOf("|"));
  149.          String var25 = var1.substring(var1.indexOf("|") + 1);
  150.  
  151.          try {
  152.             this.entersound = ((Applet)this).getAudioClip(new URL(((Applet)this).getDocumentBase(), var24));
  153.             this.clicksound = ((Applet)this).getAudioClip(new URL(((Applet)this).getDocumentBase(), var25));
  154.          } catch (Exception var7) {
  155.          }
  156.  
  157.          if (this.entersound != null) {
  158.             this.esound = true;
  159.          }
  160.  
  161.          if (this.clicksound != null) {
  162.             this.csound = true;
  163.          }
  164.       }
  165.  
  166.       var1 = this.tag ? this.extractParam("BGCOLOR") : ((Applet)this).getParameter("BGCOLOR");
  167.       if (var1 != null) {
  168.          if (var1.equals("random")) {
  169.             this.field_0 = (int)(Math.random() * (double)256.0F);
  170.             this.field_1 = (int)(Math.random() * (double)256.0F);
  171.             this.field_2 = (int)(Math.random() * (double)256.0F);
  172.          } else {
  173.             StringTokenizer var3 = new StringTokenizer(var1, ",");
  174.             this.field_0 = Integer.parseInt(var3.nextToken());
  175.             this.field_1 = Integer.parseInt(var3.nextToken());
  176.             this.field_2 = Integer.parseInt(var3.nextToken());
  177.          }
  178.       } else {
  179.          this.field_0 = this.field_1 = this.field_2 = 192;
  180.       }
  181.  
  182.       var1 = this.tag ? this.extractParam("TEXTCOLOR") : ((Applet)this).getParameter("TEXTCOLOR");
  183.       if (var1 != null) {
  184.          StringTokenizer var23 = new StringTokenizer(var1, ",");
  185.          this.field_3 = Integer.parseInt(var23.nextToken());
  186.          this.field_4 = Integer.parseInt(var23.nextToken());
  187.          this.field_5 = Integer.parseInt(var23.nextToken());
  188.       } else {
  189.          this.field_3 = this.field_4 = this.field_5 = 255;
  190.       }
  191.  
  192.       var1 = this.tag ? this.extractParam("HIGHLIGHT") : ((Applet)this).getParameter("HIGHLIGHT");
  193.       this.highlight = var1 != null ? Integer.parseInt(var1) : 0;
  194.    }
  195.  
  196.    public int getXX(String var1) {
  197.       if (this.textalign.equals("center")) {
  198.          return (this.field_6 - this.field_9.stringWidth(var1)) / 2;
  199.       } else {
  200.          return this.textalign.equals("left") ? this.highlight + 2 : this.field_6 - this.highlight - 2 - this.field_9.stringWidth(var1);
  201.       }
  202.    }
  203.  
  204.    public int getYY(String var1) {
  205.       if (this.vtextalign.equals("center")) {
  206.          return (this.field_7 + this.field_9.getHeight()) / 2 - this.field_9.getMaxDescent();
  207.       } else {
  208.          return this.vtextalign.equals("top") ? this.highlight + 2 + this.field_9.getHeight() - this.field_9.getMaxDescent() : this.field_7 - this.highlight - 2;
  209.       }
  210.    }
  211.  
  212.    public void paint(Graphics var1) {
  213.       this.paintBuffer(this.bufferG);
  214.       var1.drawImage(this.bufferI, 0, 0, this);
  215.    }
  216.  
  217.    public String extractParam(String var1) {
  218.       var1 = "*" + var1 + "=";
  219.       return this.onetag.indexOf(var1) != -1 ? this.onetag.substring(this.onetag.indexOf(var1) + var1.length(), this.onetag.indexOf("*", this.onetag.indexOf(var1) + 1)) : null;
  220.    }
  221.  
  222.    public void paintBuffer(Graphics var1) {
  223.       this.field_8 = new Font(this.fontname, 0, this.fontsize);
  224.       var1.setFont(this.field_8);
  225.       this.field_9 = var1.getFontMetrics();
  226.       var1.setColor(new Color(this.field_0, this.field_1, this.field_2));
  227.       if (this.firsttime) {
  228.          if (this.bimage) {
  229.             var1.drawImage(this.baseimage, 0, 0, this);
  230.          }
  231.  
  232.          if (this.eimage) {
  233.             var1.drawImage(this.enterimage, 0, 0, this);
  234.          }
  235.  
  236.          if (this.cimage) {
  237.             var1.drawImage(this.clickimage, 0, 0, this);
  238.          }
  239.  
  240.          var1.clearRect(0, 0, this.field_6, this.field_7);
  241.          this.firsttime = false;
  242.       }
  243.  
  244.       if (this.mode.equals("exit")) {
  245.          var1.fillRect(0, 0, this.field_6, this.field_7);
  246.          if (this.bimage) {
  247.             var1.drawImage(this.baseimage, 0, 0, this);
  248.          }
  249.  
  250.          if (this.btext) {
  251.             var1.setColor(new Color(this.field_3, this.field_4, this.field_5));
  252.             int var7 = this.getXX(this.basetext);
  253.             int var10 = this.getYY(this.basetext);
  254.             var1.drawString(this.basetext, var7, var10);
  255.          }
  256.  
  257.          for(int var8 = 0; var8 < this.highlight; ++var8) {
  258.             var1.setColor(new Color(Math.min(this.field_0 + 25, 255), Math.min(this.field_1 + 25, 255), Math.min(this.field_2 + 25, 255)));
  259.             var1.drawLine(var8, var8, var8, this.field_7 - 1 - var8);
  260.             var1.drawLine(var8, var8, this.field_6 - 1 - var8, var8);
  261.             var1.setColor(new Color(Math.max(this.field_0 - 25, 0), Math.max(this.field_1 - 25, 0), Math.max(this.field_2 - 25, 0)));
  262.             var1.drawLine(var8, this.field_7 - 1 - var8, this.field_6 - 1 - var8, this.field_7 - 1 - var8);
  263.             var1.drawLine(this.field_6 - 1 - var8, var8, this.field_6 - 1 - var8, this.field_7 - 1 - var8);
  264.          }
  265.  
  266.       } else if (this.mode.equals("enter")) {
  267.          var1.fillRect(0, 0, this.field_6, this.field_7);
  268.          if (this.eimage) {
  269.             var1.drawImage(this.enterimage, 0, 0, this);
  270.          }
  271.  
  272.          if (this.etext) {
  273.             var1.setColor(new Color(this.field_3, this.field_4, this.field_5));
  274.             int var5 = this.getXX(this.entertext);
  275.             int var9 = this.getYY(this.entertext);
  276.             var1.drawString(this.entertext, var5, var9);
  277.          }
  278.  
  279.          for(int var6 = 0; var6 < this.highlight; ++var6) {
  280.             var1.setColor(new Color(Math.min(this.field_0 + 50, 255), Math.min(this.field_1 + 50, 255), Math.min(this.field_2 + 50, 255)));
  281.             var1.drawLine(var6, var6, var6, this.field_7 - 1 - var6);
  282.             var1.drawLine(var6, var6, this.field_6 - 1 - var6, var6);
  283.             var1.setColor(new Color(Math.max(this.field_0 - 50, 0), Math.max(this.field_1 - 50, 0), Math.max(this.field_2 - 50, 0)));
  284.             var1.drawLine(var6, this.field_7 - 1 - var6, this.field_6 - 1 - var6, this.field_7 - 1 - var6);
  285.             var1.drawLine(this.field_6 - 1 - var6, var6, this.field_6 - 1 - var6, this.field_7 - 1 - var6);
  286.          }
  287.  
  288.       } else {
  289.          if (this.mode.equals("click")) {
  290.             var1.fillRect(0, 0, this.field_6, this.field_7);
  291.             if (this.cimage) {
  292.                var1.drawImage(this.clickimage, 0, 0, this);
  293.             }
  294.  
  295.             if (this.ctext) {
  296.                var1.setColor(new Color(this.field_3, this.field_4, this.field_5));
  297.                int var2 = this.getXX(this.clicktext);
  298.                int var3 = this.getYY(this.clicktext);
  299.                var1.drawString(this.clicktext, var2, var3);
  300.             }
  301.  
  302.             for(int var4 = 0; var4 < this.highlight; ++var4) {
  303.                var1.setColor(new Color(Math.max(this.field_0 - 25, 0), Math.max(this.field_1 - 25, 0), Math.max(this.field_2 - 25, 0)));
  304.                var1.drawLine(var4, var4, var4, this.field_7 - 1 - var4);
  305.                var1.drawLine(var4, var4, this.field_6 - 1 - var4, var4);
  306.                var1.setColor(new Color(Math.min(this.field_0 + 25, 255), Math.min(this.field_1 + 25, 255), Math.min(this.field_2 + 25, 255)));
  307.                var1.drawLine(var4, this.field_7 - 1 - var4, this.field_6 - 1 - var4, this.field_7 - 1 - var4);
  308.                var1.drawLine(this.field_6 - 1 - var4, var4, this.field_6 - 1 - var4, this.field_7 - 1 - var4);
  309.             }
  310.          }
  311.  
  312.       }
  313.    }
  314.  
  315.    public void update(Graphics var1) {
  316.       this.paint(var1);
  317.    }
  318.  
  319.    public boolean mouseEnter(Event var1, int var2, int var3) {
  320.       this.mode = "enter";
  321.       if (this.esound) {
  322.          this.entersound.play();
  323.       }
  324.  
  325.       ((Applet)this).showStatus(this.hotlink.toString());
  326.       ((Component)this).repaint();
  327.       return true;
  328.    }
  329.  
  330.    public boolean mouseExit(Event var1, int var2, int var3) {
  331.       this.mode = "exit";
  332.       ((Applet)this).showStatus("");
  333.       ((Component)this).repaint();
  334.       return true;
  335.    }
  336.  
  337.    public boolean mouseMove(Event var1, int var2, int var3) {
  338.       return true;
  339.    }
  340.  
  341.    public boolean mouseDown(Event var1, int var2, int var3) {
  342.       this.mode = "click";
  343.       if (this.csound) {
  344.          this.clicksound.play();
  345.       }
  346.  
  347.       ((Applet)this).showStatus("Trying to connect to: " + this.hotlink.toString());
  348.       ((Component)this).repaint();
  349.       return true;
  350.    }
  351.  
  352.    public boolean mouseUp(Event var1, int var2, int var3) {
  353.       this.mode = "enter";
  354.       ((Component)this).repaint();
  355.       if (this.target == null) {
  356.          ((Applet)this).getAppletContext().showDocument(this.hotlink);
  357.       } else {
  358.          ((Applet)this).getAppletContext().showDocument(this.hotlink, this.target);
  359.       }
  360.  
  361.       return true;
  362.    }
  363. }
  364.