home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 183 / dpcs0503.iso / Netfusion / data1.cab / Components / TickerTape / TickerTape.class (.txt) next >
Encoding:
Java Class File  |  1998-12-10  |  29.2 KB  |  807 lines

  1. import java.applet.Applet;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Dimension;
  6. import java.awt.Event;
  7. import java.awt.Frame;
  8. import java.awt.Graphics;
  9. import java.awt.Image;
  10. import java.net.MalformedURLException;
  11. import java.net.URL;
  12. import java.util.Vector;
  13.  
  14. public class TickerTape extends Applet implements Runnable {
  15.    int[] starts;
  16.    URL[] theURLs;
  17.    int numTokens;
  18.    long speed = 250L;
  19.    int theOffScreenPosition;
  20.    int theDisplayWidth;
  21.    int frameThickness;
  22.    int ledSize;
  23.    int scrollFactor;
  24.    int ledSpacing;
  25.    int ledType;
  26.    Thread tickTock;
  27.    Graphics offScreenGraphics;
  28.    Dimension offScreenSize;
  29.    Image offScreenImage;
  30.    Color frameColour;
  31.    Color backGround;
  32.    Color LEDColour;
  33.    Color LEDOffColour;
  34.    int theXOffset;
  35.    int theYOffset;
  36.    URL theURLToGoTo = null;
  37.    boolean mouseOut = true;
  38.    boolean notUpdatedYet = true;
  39.    Frame browserFrame = null;
  40.    int[][] itsData = new int[][]{{0, 0, 0, 0, 0, 0}, {0, 0, 380, 0, 0, 0}, {0, 12, 0, 12, 0, 0}, {80, 248, 80, 248, 80, 0}, {16, 168, 508, 168, 64, 0}, {140, 76, 32, 400, 392, 0}, {200, 308, 340, 136, 320, 0}, {0, 0, 12, 0, 0, 0}, {0, 248, 260, 0, 0, 0}, {0, 0, 260, 248, 0, 0}, {168, 112, 508, 112, 168, 0}, {0, 32, 112, 32, 0, 0}, {0, 512, 384, 0, 0, 0}, {0, 32, 32, 32, 0, 0}, {0, 0, 256, 0, 0, 0}, {128, 64, 32, 16, 8, 0}, {112, 136, 260, 136, 112, 0}, {0, 272, 508, 256, 0, 0}, {408, 324, 324, 292, 280, 0}, {136, 260, 260, 292, 216, 0}, {48, 40, 36, 508, 32, 0}, {316, 292, 292, 292, 192, 0}, {248, 292, 292, 292, 192, 0}, {0, 4, 388, 100, 28, 0}, {216, 292, 292, 292, 216, 0}, {24, 292, 292, 292, 248, 0}, {0, 0, 160, 0, 0, 0}, {0, 512, 416, 0, 0, 0}, {0, 32, 80, 136, 0, 0}, {0, 80, 80, 80, 0, 0}, {0, 136, 80, 32, 0, 0}, {8, 4, 324, 36, 24, 0}, {248, 260, 372, 340, 56, 0}, {496, 72, 68, 72, 496, 0}, {508, 292, 292, 292, 216, 0}, {248, 260, 260, 260, 136, 0}, {508, 260, 260, 260, 248, 0}, {508, 292, 292, 292, 260, 0}, {508, 36, 36, 4, 4, 0}, {248, 260, 260, 292, 232, 0}, {508, 32, 32, 32, 508, 0}, {0, 0, 508, 0, 0, 0}, {192, 256, 256, 256, 252, 0}, {508, 32, 80, 136, 260, 0}, {508, 256, 256, 256, 256, 0}, {508, 8, 16, 8, 508, 0}, {508, 8, 16, 32, 508, 0}, {248, 260, 260, 260, 248, 0}, {508, 36, 36, 36, 24, 0}, {248, 260, 324, 388, 504, 0}, {508, 36, 100, 164, 280, 0}, {152, 292, 292, 292, 200, 0}, {4, 4, 508, 4, 4, 0}, {252, 256, 256, 256, 252, 0}, {124, 128, 256, 128, 124, 0}, {252, 256, 128, 256, 252, 0}, {260, 136, 112, 136, 260, 0}, {12, 16, 480, 16, 12, 0}, {388, 324, 292, 276, 268, 0}, {0, 508, 260, 260, 0, 0}, {8, 16, 32, 64, 128, 0}, {0, 260, 260, 508, 0, 0}, {0, 32, 16, 32, 0, 0}, {256, 256, 256, 256, 256, 0}, {0, 4, 8, 0, 0, 0}, {128, 336, 336, 224, 256, 0}, {508, 288, 272, 272, 224, 0}, {224, 272, 272, 272, 0, 0}, {224, 272, 272, 292, 508, 0}, {224, 336, 336, 336, 96, 0}, {16, 504, 20, 4, 0, 0}, {224, 1296, 1296, 1296, 992, 0}, {4, 508, 16, 16, 480, 0}, {0, 0, 500, 0, 0, 0}, {512, 1024, 1012, 0, 0, 0}, {0, 508, 64, 160, 272, 0}, {0, 4, 508, 0, 0, 0}, {480, 16, 96, 16, 480, 0}, {496, 16, 16, 480, 0, 0}, {224, 272, 272, 272, 224, 0}, {2032, 160, 272, 272, 224, 0}, {224, 272, 272, 160, 2032, 0}, {0, 496, 32, 16, 16, 0}, {288, 336, 336, 336, 144, 0}, {0, 16, 252, 272, 0, 0}, {240, 256, 256, 256, 240, 0}, {48, 192, 256, 192, 48, 0}, {240, 256, 192, 256, 240, 0}, {272, 160, 64, 160, 272, 0}, {0, 1264, 1280, 768, 240, 0}, {272, 400, 336, 304, 272, 0}, {0, 32, 216, 260, 0, 0}, {0, 0, 508, 0, 0, 0}, {0, 260, 216, 32, 0, 0}, {32, 16, 32, 64, 32, 0}, {0, 0, 500, 0, 0, 0}, {224, 272, 1016, 272, 0, 0}, {278, 249, 273, 273, 128, 0}, {136, 112, 80, 112, 136, 0}, {44, 56, 488, 56, 44, 0}, {0, 0, 476, 0, 0, 0}, {56, 340, 340, 340, 224, 0}, {0, 4, 0, 4, 0, 0}, {248, 372, 396, 340, 248, 0}, {80, 106, 106, 106, 124, 0}, {32, 80, 168, 80, 136, 0}, {32, 32, 32, 32, 224, 0}, {32, 32, 32, 32, 32, 0}, {500, 212, 292, 260, 504, 0}, {0, 4, 4, 4, 0, 0}, {0, 7, 5, 7, 0, 0}, {0, 160, 240, 160, 0, 0}, {0, 9, 13, 11, 0, 0}, {0, 9, 11, 13, 0, 0}, {0, 4, 2, 0, 0, 0}, {1024, 1008, 256, 256, 240, 0}, {24, 36, 36, 508, 508, 0}, {0, 56, 56, 56, 0, 0}, {0, 1024, 1536, 0, 0, 0}, {0, 2, 15, 0, 0, 0}, {92, 98, 98, 98, 92, 0}, {136, 80, 168, 80, 32, 0}, {132, 94, 160, 208, 488, 0}, {68, 62, 336, 424, 320, 0}, {146, 86, 186, 208, 488, 0}, {128, 256, 276, 288, 192, 0}, {496, 73, 70, 72, 496, 0}, {496, 74, 69, 72, 496, 0}, {496, 74, 69, 74, 496, 0}, {498, 73, 70, 73, 496, 0}, {496, 74, 68, 74, 496, 0}, {496, 75, 71, 75, 496, 0}, {504, 36, 508, 292, 292, 0}, {248, 1284, 1796, 260, 136, 0}, {508, 293, 294, 292, 292, 0}, {508, 294, 293, 292, 292, 0}, {508, 294, 293, 294, 292, 0}, {508, 294, 292, 294, 292, 0}, {0, 0, 509, 2, 0, 0}, {0, 2, 509, 0, 0, 0}, {0, 2, 509, 2, 0, 0}, {0, 2, 508, 2, 0, 0}, {0, 0, 128, 320, 0, 0}, {510, 9, 18, 33, 508, 0}, {248, 261, 262, 260, 248, 0}, {248, 262, 261, 260, 248, 0}, {248, 262, 261, 262, 248, 0}, {250, 261, 262, 261, 248, 0}, {248, 262, 260, 262, 248, 0}, {0, 80, 32, 80, 0, 0}, {240, 200, 168, 152, 120, 0}, {252, 257, 258, 256, 252, 0}, {252, 258, 257, 256, 252, 0}, {252, 258, 257, 258, 252, 0}, {252, 258, 256, 258, 252, 0}, {12, 18, 481, 16, 12, 0}, {16, 504, 20, 492, 0, 0}, {508, 276, 276, 296, 192, 0}, {128, 338, 340, 224, 256, 0}, {128, 340, 338, 224, 256, 0}, {128, 340, 338, 228, 256, 0}, {132, 338, 340, 226, 256, 0}, {128, 340, 336, 228, 256, 0}, {128, 342, 342, 224, 256, 0}, {400, 336, 224, 336, 352, 0}, {224, 1296, 1808, 272, 0, 0}, {224, 338, 340, 336, 96, 0}, {224, 340, 338, 336, 96, 0}, {224, 340, 338, 340, 96, 0}, {224, 340, 336, 340, 96, 0}, {0, 2, 500, 0, 0, 0}, {0, 4, 498, 0, 0, 0}, {0, 4, 498, 4, 0, 0}, {0, 4, 496, 4, 0, 0}, {0, 0, 280, 128, 0, 0}, {500, 18, 20, 482, 0, 0}, {224, 274, 276, 272, 224, 0}, {224, 276, 274, 272, 224, 0}, {224, 276, 274, 276, 224, 0}, {228, 274, 276, 274, 224, 0}, {224, 276, 272, 276, 224, 0}, {32, 32, 168, 32, 32, 0}, {224, 400, 336, 304, 224, 0}, {240, 258, 260, 256, 240, 0}, {240, 260, 258, 256, 240, 0}, {240, 260, 258, 260, 240, 0}, {240, 260, 256, 260, 240, 0}, {0, 1268, 1282, 768, 240, 0}, {16, 504, 20, 508, 0, 0}, {0, 1268, 1280, 772, 240, 0}};
  41.    String[] theEntities = new String[]{"�", "", "", "", "", "", "", "", "", " ", " ", " ", " ", " ", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "&sp;", "!", """, "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "‐", ".", "/", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?", "@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "[", "\", "]", "ˆ", "_", "`", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}", "˜", "", "€", "", "‚", "ƒ", "„", "…", "†", "‡", "ˆ", "‰", "Š", "‹", "Œ", "", "Ž", "", "", "‘", "’", "“", "”", "•", "–", "—", "˜", "™", "š", "›", "œ", "", "ž", "Ÿ", " ", "¡", "¢", "£", "¤", "¥", "¦", "§", "¨", "©", "ª", "«", "¬", "­", "®", "&hibar;", "°", "±", "²", "³", "´", "µ", "¶", "·", "¸", "¹", "º", "»", "¼", "½", "¾", "¿", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "×", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù", "ú", "û", "ü", "ý", "þ", "ÿ"};
  42.  
  43.    private URL MakeAbsoluteURL(String var1) throws MalformedURLException {
  44.       Object var2 = null;
  45.       String var3 = ((Applet)this).getDocumentBase().toString();
  46.       String var4 = var3.substring(0, var3.lastIndexOf(47));
  47.  
  48.       try {
  49.          if (var1.startsWith(".")) {
  50.             var1 = var1.replace('\\', '/');
  51.             var1 = var4 + "/" + var1;
  52.          } else if (var1.startsWith("#")) {
  53.             var1 = ((Applet)this).getDocumentBase().toString() + var1;
  54.          } else if (!var1.startsWith("cid:") && !var1.startsWith("lifn:") && !var1.startsWith("java:") && !var1.startsWith("irc:") && !var1.startsWith("IOR:") && !var1.startsWith("ilu:") && !var1.startsWith("https:") && !var1.startsWith("http:") && !var1.startsWith("hdl:") && !var1.startsWith("gopher:") && !var1.startsWith("ftp:") && !var1.startsWith("finger:") && !var1.startsWith("file:") && !var1.startsWith("data:") && !var1.startsWith("clsid:") && !var1.startsWith("md5:") && !var1.startsWith("mailserver:") && !var1.startsWith("mailto:") && !var1.startsWith("mid:") && !var1.startsWith("news:") && !var1.startsWith("nntp:") && !var1.startsWith("path:") && !var1.startsWith("prospero:") && !var1.startsWith("service:") && !var1.startsWith("shttp") && !var1.startsWith("snews") && !var1.startsWith("STANF:") && !var1.startsWith("telnet:") && !var1.startsWith("vemmi:") && !var1.startsWith("wais:") && !var1.startsWith("whois++:")) {
  55.             var1 = "http://" + var1;
  56.          }
  57.  
  58.          var8 = new URL(var1);
  59.       } catch (MalformedURLException var6) {
  60.          var8 = null;
  61.       }
  62.  
  63.       return var8;
  64.    }
  65.  
  66.    public String getAppletInfo() {
  67.       return new String("NetObjects TickerTape");
  68.    }
  69.  
  70.    public void run() {
  71.       while(true) {
  72.          try {
  73.             Thread.currentThread();
  74.             Thread.sleep(this.speed);
  75.          } catch (InterruptedException var2) {
  76.          }
  77.  
  78.          super.repaint();
  79.       }
  80.    }
  81.  
  82.    public boolean mouseDrag(Event var1, int var2, int var3) {
  83.       if (this.theURLToGoTo != null && this.notUpdatedYet) {
  84.          this.notUpdatedYet = false;
  85.       }
  86.  
  87.       return true;
  88.    }
  89.  
  90.    public void setBackgroundColor(String var1) {
  91.       this.backGround = this.GetColourFromString(var1);
  92.       this.DrawOffScreenBackground();
  93.       ((Component)this).repaint();
  94.    }
  95.  
  96.    public boolean mouseUp(Event var1, int var2, int var3) {
  97.       int var5 = -1;
  98.       int var4 = var2 + this.theOffScreenPosition - this.theDisplayWidth;
  99.       if (var4 >= this.starts[0] && var4 < this.starts[this.numTokens]) {
  100.          for(var5 = 1; var5 < this.numTokens && var4 >= this.starts[var5]; ++var5) {
  101.          }
  102.  
  103.          this.theURLToGoTo = this.theURLs[var5 - 1];
  104.       } else {
  105.          this.theURLToGoTo = null;
  106.       }
  107.  
  108.       if (this.theURLToGoTo != null && !this.mouseOut) {
  109.          ((Applet)this).getAppletContext().showDocument(this.theURLToGoTo);
  110.       }
  111.  
  112.       return true;
  113.    }
  114.  
  115.    public int HTMLtoISO(String var1) {
  116.       char var2 = var1.charAt(1);
  117.       if (var1.charAt(0) != '&') {
  118.          return 0;
  119.       } else if (Character.isDigit(var1.charAt(1))) {
  120.          int var3 = Integer.valueOf(var1.substring(1, var1.indexOf(59, 2)));
  121.          return var3;
  122.       } else {
  123.          switch (var2) {
  124.             case 'A':
  125.                if (var1.startsWith("Agrave;", 1)) {
  126.                   return 192;
  127.                } else if (var1.startsWith("Aacute;", 1)) {
  128.                   return 193;
  129.                } else if (var1.startsWith("Acirc;", 1)) {
  130.                   return 194;
  131.                } else if (var1.startsWith("Atilde;", 1)) {
  132.                   return 195;
  133.                } else if (var1.startsWith("Auml;", 1)) {
  134.                   return 196;
  135.                } else if (var1.startsWith("Aring;", 1)) {
  136.                   return 197;
  137.                } else if (var1.startsWith("AElig;", 1)) {
  138.                   return 198;
  139.                }
  140.             case 'C':
  141.                if (var1.startsWith("Ccedil;", 1)) {
  142.                   return 199;
  143.                }
  144.             case 'D':
  145.                if (var1.startsWith("Dstrok;", 1)) {
  146.                   return 208;
  147.                }
  148.             case 'E':
  149.                if (var1.startsWith("Egrave;", 1)) {
  150.                   return 200;
  151.                } else if (var1.startsWith("Eacute;", 1)) {
  152.                   return 201;
  153.                } else if (var1.startsWith("Ecirc;", 1)) {
  154.                   return 202;
  155.                } else if (var1.startsWith("Euml;", 1)) {
  156.                   return 203;
  157.                } else if (var1.startsWith("ETH;", 1)) {
  158.                   return 208;
  159.                }
  160.             case 'I':
  161.                if (var1.startsWith("Igrave;", 1)) {
  162.                   return 204;
  163.                } else if (var1.startsWith("Iacute;", 1)) {
  164.                   return 205;
  165.                } else if (var1.startsWith("Icirc;", 1)) {
  166.                   return 206;
  167.                } else if (var1.startsWith("Iuml;", 1)) {
  168.                   return 207;
  169.                }
  170.             case 'N':
  171.                if (var1.startsWith("Ntilde;", 1)) {
  172.                   return 209;
  173.                }
  174.             case 'O':
  175.                if (var1.startsWith("Ograve;", 1)) {
  176.                   return 210;
  177.                } else if (var1.startsWith("Oacute;", 1)) {
  178.                   return 211;
  179.                } else if (var1.startsWith("Ocirc;", 1)) {
  180.                   return 212;
  181.                } else if (var1.startsWith("Otilde;", 1)) {
  182.                   return 213;
  183.                } else if (var1.startsWith("Ouml;", 1)) {
  184.                   return 214;
  185.                } else if (var1.startsWith("Oslash;", 1)) {
  186.                   return 216;
  187.                }
  188.             case 'T':
  189.                if (var1.startsWith("THORN;", 1)) {
  190.                   return 222;
  191.                }
  192.             case 'U':
  193.                if (var1.startsWith("Ugrave;", 1)) {
  194.                   return 217;
  195.                } else if (var1.startsWith("Uacute;", 1)) {
  196.                   return 218;
  197.                } else if (var1.startsWith("Ucirc;", 1)) {
  198.                   return 219;
  199.                } else if (var1.startsWith("Uuml;", 1)) {
  200.                   return 220;
  201.                }
  202.             case 'Y':
  203.                if (var1.startsWith("Yacute;", 1)) {
  204.                   return 221;
  205.                }
  206.             case 'a':
  207.                if (var1.startsWith("agrave;", 1)) {
  208.                   return 224;
  209.                } else if (var1.startsWith("aacute;", 1)) {
  210.                   return 225;
  211.                } else if (var1.startsWith("acirc;", 1)) {
  212.                   return 226;
  213.                } else if (var1.startsWith("atilde;", 1)) {
  214.                   return 227;
  215.                } else if (var1.startsWith("auml;", 1)) {
  216.                   return 228;
  217.                } else if (var1.startsWith("aring;", 1)) {
  218.                   return 229;
  219.                } else if (var1.startsWith("aelig;", 1)) {
  220.                   return 230;
  221.                } else if (var1.startsWith("amp;", 1)) {
  222.                   return 38;
  223.                } else if (var1.startsWith("apos;", 1)) {
  224.                   return 39;
  225.                } else if (var1.startsWith("ast;", 1)) {
  226.                   return 42;
  227.                } else if (var1.startsWith("acute;", 1)) {
  228.                   return 180;
  229.                } else if (var1.startsWith("angst;", 1)) {
  230.                   return 197;
  231.                }
  232.             case 'b':
  233.                if (var1.startsWith("blank;", 1)) {
  234.                   return 32;
  235.                } else if (var1.startsWith("bsol;", 1)) {
  236.                   return 92;
  237.                } else if (var1.startsWith("brvbar;", 1)) {
  238.                   return 166;
  239.                } else if (var1.startsWith("brkbar;", 1)) {
  240.                   return 166;
  241.                }
  242.             case 'c':
  243.                if (var1.startsWith("ccedil;", 1)) {
  244.                   return 231;
  245.                } else if (var1.startsWith("comma;", 1)) {
  246.                   return 44;
  247.                } else if (var1.startsWith("colon;", 1)) {
  248.                   return 58;
  249.                } else if (var1.startsWith("commat;", 1)) {
  250.                   return 64;
  251.                } else if (var1.startsWith("circ;", 1)) {
  252.                   return 94;
  253.                } else if (var1.startsWith("caret;", 1)) {
  254.                   return 94;
  255.                } else if (var1.startsWith("cent;", 1)) {
  256.                   return 162;
  257.                } else if (var1.startsWith("curren;", 1)) {
  258.                   return 164;
  259.                } else if (var1.startsWith("copy;", 1)) {
  260.                   return 169;
  261.                } else if (var1.startsWith("cedil;", 1)) {
  262.                   return 184;
  263.                }
  264.             case 'd':
  265.                if (var1.startsWith("divide;", 1)) {
  266.                   return 247;
  267.                } else if (var1.startsWith("dollar;", 1)) {
  268.                   return 36;
  269.                } else if (var1.startsWith("dash;", 1)) {
  270.                   return 45;
  271.                } else if (var1.startsWith("die;", 1)) {
  272.                   return 168;
  273.                } else if (var1.startsWith("deg;", 1)) {
  274.                   return 176;
  275.                }
  276.             case 'e':
  277.                if (var1.startsWith("egrave;", 1)) {
  278.                   return 232;
  279.                } else if (var1.startsWith("eacute;", 1)) {
  280.                   return 233;
  281.                } else if (var1.startsWith("ecirc;", 1)) {
  282.                   return 234;
  283.                } else if (var1.startsWith("euml;", 1)) {
  284.                   return 235;
  285.                } else if (var1.startsWith("eth;", 1)) {
  286.                   return 240;
  287.                } else if (var1.startsWith("excl;", 1)) {
  288.                   return 33;
  289.                } else if (var1.startsWith("equals;", 1)) {
  290.                   return 61;
  291.                }
  292.             case 'f':
  293.                if (var1.startsWith("frac14;", 1)) {
  294.                   return 188;
  295.                } else if (var1.startsWith("frac12;", 1)) {
  296.                   return 189;
  297.                } else if (var1.startsWith("frac34;", 1)) {
  298.                   return 190;
  299.                }
  300.             case 'g':
  301.                if (var1.startsWith("gt;", 1)) {
  302.                   return 62;
  303.                } else if (var1.startsWith("grave;", 1)) {
  304.                   return 96;
  305.                }
  306.             case 'h':
  307.                if (var1.startsWith("hyphen;", 1)) {
  308.                   return 45;
  309.                } else if (var1.startsWith("hibar;", 1)) {
  310.                   return 175;
  311.                } else if (var1.startsWith("half;", 1)) {
  312.                   return 189;
  313.                }
  314.             case 'i':
  315.                if (var1.startsWith("igrave;", 1)) {
  316.                   return 236;
  317.                } else if (var1.startsWith("iacute;", 1)) {
  318.                   return 237;
  319.                } else if (var1.startsWith("icirc;", 1)) {
  320.                   return 238;
  321.                } else if (var1.startsWith("iuml;", 1)) {
  322.                   return 239;
  323.                } else if (var1.startsWith("iexcl;", 1)) {
  324.                   return 161;
  325.                } else if (var1.startsWith("iquest;", 1)) {
  326.                   return 191;
  327.                }
  328.             case 'l':
  329.                if (var1.startsWith("lpar;", 1)) {
  330.                   return 40;
  331.                } else if (var1.startsWith("lt;", 1)) {
  332.                   return 60;
  333.                } else if (var1.startsWith("lsqb;", 1)) {
  334.                   return 91;
  335.                } else if (var1.startsWith("lowbar;", 1)) {
  336.                   return 95;
  337.                } else if (var1.startsWith("lcub;", 1)) {
  338.                   return 123;
  339.                } else if (var1.startsWith("laquo;", 1)) {
  340.                   return 171;
  341.                }
  342.             case 'm':
  343.                if (var1.startsWith("minus;", 1)) {
  344.                   return 45;
  345.                } else if (var1.startsWith("macr;", 1)) {
  346.                   return 175;
  347.                } else if (var1.startsWith("micro;", 1)) {
  348.                   return 181;
  349.                } else if (var1.startsWith("middot;", 1)) {
  350.                   return 183;
  351.                }
  352.             case 'n':
  353.                if (var1.startsWith("ntilde;", 1)) {
  354.                   return 241;
  355.                } else if (var1.startsWith("num;", 1)) {
  356.                   return 35;
  357.                } else if (var1.startsWith("nbsp;", 1)) {
  358.                   return 160;
  359.                } else if (var1.startsWith("not;", 1)) {
  360.                   return 172;
  361.                }
  362.             case 'o':
  363.                if (var1.startsWith("ograve;", 1)) {
  364.                   return 242;
  365.                } else if (var1.startsWith("oacute;", 1)) {
  366.                   return 243;
  367.                } else if (var1.startsWith("ocirc;", 1)) {
  368.                   return 244;
  369.                } else if (var1.startsWith("otilde;", 1)) {
  370.                   return 245;
  371.                } else if (var1.startsWith("ouml;", 1)) {
  372.                   return 246;
  373.                } else if (var1.startsWith("oslash;", 1)) {
  374.                   return 248;
  375.                } else if (var1.startsWith("ordf;", 1)) {
  376.                   return 170;
  377.                } else if (var1.startsWith("ordm;", 1)) {
  378.                   return 186;
  379.                }
  380.             case 'p':
  381.                if (var1.startsWith("percnt;", 1)) {
  382.                   return 37;
  383.                } else if (var1.startsWith("plus;", 1)) {
  384.                   return 43;
  385.                } else if (var1.startsWith("period;", 1)) {
  386.                   return 46;
  387.                } else if (var1.startsWith("pound;", 1)) {
  388.                   return 163;
  389.                } else if (var1.startsWith("plusmn;", 1)) {
  390.                   return 177;
  391.                } else if (var1.startsWith("para;", 1)) {
  392.                   return 182;
  393.                }
  394.             case 'q':
  395.                if (var1.startsWith("quot;", 1)) {
  396.                   return 34;
  397.                } else if (var1.startsWith("quest;", 1)) {
  398.                   return 63;
  399.                }
  400.             case 'r':
  401.                if (var1.startsWith("rpar;", 1)) {
  402.                   return 41;
  403.                } else if (var1.startsWith("rsqb;", 1)) {
  404.                   return 93;
  405.                } else if (var1.startsWith("rcub;", 1)) {
  406.                   return 125;
  407.                } else if (var1.startsWith("reg;", 1)) {
  408.                   return 174;
  409.                } else if (var1.startsWith("raquo;", 1)) {
  410.                   return 187;
  411.                }
  412.             case 's':
  413.                if (var1.startsWith("sp;", 1)) {
  414.                   return 32;
  415.                } else if (var1.startsWith("sol;", 1)) {
  416.                   return 47;
  417.                } else if (var1.startsWith("semi;", 1)) {
  418.                   return 59;
  419.                } else if (var1.startsWith("sim;", 1)) {
  420.                   return 126;
  421.                } else if (var1.startsWith("sect;", 1)) {
  422.                   return 167;
  423.                } else if (var1.startsWith("shy;", 1)) {
  424.                   return 173;
  425.                } else if (var1.startsWith("sup2;", 1)) {
  426.                   return 178;
  427.                } else if (var1.startsWith("sup3;", 1)) {
  428.                   return 179;
  429.                } else if (var1.startsWith("sup1;", 1)) {
  430.                   return 185;
  431.                }
  432.             case 't':
  433.                if (var1.startsWith("thorn;", 1)) {
  434.                   return 254;
  435.                } else if (var1.startsWith("tilde;", 1)) {
  436.                   return 126;
  437.                } else if (var1.startsWith("times;", 1)) {
  438.                   return 215;
  439.                }
  440.             case 'u':
  441.                if (var1.startsWith("ugrave;", 1)) {
  442.                   return 249;
  443.                } else if (var1.startsWith("uacute;", 1)) {
  444.                   return 250;
  445.                } else if (var1.startsWith("ucirc;", 1)) {
  446.                   return 251;
  447.                } else if (var1.startsWith("uuml;", 1)) {
  448.                   return 252;
  449.                } else if (var1.startsWith("uml;", 1)) {
  450.                   return 168;
  451.                }
  452.             case 'y':
  453.                if (var1.startsWith("yacute;", 1)) {
  454.                   return 253;
  455.                } else if (var1.startsWith("yuml;", 1)) {
  456.                   return 255;
  457.                } else if (var1.startsWith("yen;", 1)) {
  458.                   return 165;
  459.                }
  460.             default:
  461.                return 0;
  462.          }
  463.       }
  464.    }
  465.  
  466.    public void SetSpeed(long var1) {
  467.       this.speed = var1;
  468.    }
  469.  
  470.    public String ISOtoHTML(int var1) {
  471.       return var1 >= 0 && var1 <= 255 ? this.theEntities[var1] : "";
  472.    }
  473.  
  474.    Frame getBrowserFrame() {
  475.       Container var1;
  476.       for(var1 = ((Component)this).getParent(); var1 != null && !(var1 instanceof Frame); var1 = ((Component)var1).getParent()) {
  477.       }
  478.  
  479.       return (Frame)var1;
  480.    }
  481.  
  482.    public Color GetColourFromString(String var1) {
  483.       if (var1.equalsIgnoreCase("BLACK")) {
  484.          return Color.black;
  485.       } else if (var1.equalsIgnoreCase("BLUE")) {
  486.          return Color.blue;
  487.       } else if (var1.equalsIgnoreCase("CYAN")) {
  488.          return Color.cyan;
  489.       } else if (var1.equalsIgnoreCase("DARKGRAY")) {
  490.          return Color.darkGray;
  491.       } else if (var1.equalsIgnoreCase("GRAY")) {
  492.          return Color.gray;
  493.       } else if (var1.equalsIgnoreCase("GREEN")) {
  494.          return Color.green;
  495.       } else if (var1.equalsIgnoreCase("LIGHTGRAY")) {
  496.          return Color.lightGray;
  497.       } else if (var1.equalsIgnoreCase("MAGENTA")) {
  498.          return Color.magenta;
  499.       } else if (var1.equalsIgnoreCase("ORANGE")) {
  500.          return Color.orange;
  501.       } else if (var1.equalsIgnoreCase("PINK")) {
  502.          return Color.pink;
  503.       } else if (var1.equalsIgnoreCase("RED")) {
  504.          return Color.red;
  505.       } else if (var1.equalsIgnoreCase("WHITE")) {
  506.          return Color.white;
  507.       } else {
  508.          return var1.equalsIgnoreCase("YELLOW") ? Color.yellow : Color.black;
  509.       }
  510.    }
  511.  
  512.    public boolean mouseExit(Event var1, int var2, int var3) {
  513.       this.notUpdatedYet = true;
  514.       this.mouseOut = true;
  515.       if (this.browserFrame != null) {
  516.          this.browserFrame.setCursor(0);
  517.       }
  518.  
  519.       return true;
  520.    }
  521.  
  522.    public final synchronized void update(Graphics var1) {
  523.       var1.clipRect(this.theXOffset, this.theYOffset, this.theDisplayWidth - 2, this.offScreenSize.height);
  524.       int var2 = this.theOffScreenPosition > this.theDisplayWidth ? this.theOffScreenPosition - this.theDisplayWidth : -(this.theDisplayWidth - this.theOffScreenPosition);
  525.       var1.drawImage(this.offScreenImage, -var2 + this.theXOffset, this.theYOffset, this);
  526.       this.theOffScreenPosition += (this.ledSize + this.ledSpacing) * this.scrollFactor;
  527.       if (this.theOffScreenPosition > this.offScreenSize.width) {
  528.          this.theOffScreenPosition = this.theDisplayWidth;
  529.       }
  530.  
  531.    }
  532.  
  533.    public void init() {
  534.       this.browserFrame = this.getBrowserFrame();
  535.       String var10 = ((Applet)this).getParameter("speed");
  536.       this.SetSpeed(var10 == null ? 100L : 5L * (51L - Integer.valueOf(var10).longValue()));
  537.       var10 = ((Applet)this).getParameter("framecolour");
  538.       if (var10 == null) {
  539.          var10 = ((Applet)this).getParameter("framecolor");
  540.       }
  541.  
  542.       this.frameColour = var10 == null ? Color.green : this.GetColourFromString(var10);
  543.       var10 = ((Applet)this).getParameter("backcolour");
  544.       if (var10 == null) {
  545.          var10 = ((Applet)this).getParameter("backcolor");
  546.       }
  547.  
  548.       this.backGround = var10 == null ? Color.black : this.GetColourFromString(var10);
  549.       var10 = ((Applet)this).getParameter("LEDcolour");
  550.       if (var10 == null) {
  551.          var10 = ((Applet)this).getParameter("LEDcolor");
  552.       }
  553.  
  554.       this.LEDColour = var10 == null ? Color.green : this.GetColourFromString(var10);
  555.       var10 = ((Applet)this).getParameter("ledoffcolour");
  556.       if (var10 == null) {
  557.          var10 = ((Applet)this).getParameter("ledoffcolor");
  558.       }
  559.  
  560.       this.LEDOffColour = var10 == null ? this.backGround : this.GetColourFromString(var10);
  561.       var10 = ((Applet)this).getParameter("FrameThick");
  562.       this.frameThickness = var10 == null ? 1 : Integer.valueOf(var10);
  563.       var10 = ((Applet)this).getParameter("LEDSize");
  564.       this.ledSize = var10 == null ? 2 : Integer.valueOf(var10);
  565.       var10 = ((Applet)this).getParameter("scrollfactor");
  566.       this.scrollFactor = var10 == null ? 2 : Integer.valueOf(var10);
  567.       var10 = ((Applet)this).getParameter("ledspacing");
  568.       this.ledSpacing = var10 == null ? 1 : Integer.valueOf(var10);
  569.       var10 = ((Applet)this).getParameter("ledtype");
  570.       this.ledType = var10 == null ? 0 : Integer.valueOf(var10);
  571.       if (this.ledType > 1) {
  572.          this.ledType = 1;
  573.       }
  574.  
  575.       if (this.ledSize == 1) {
  576.          this.ledType = 0;
  577.       }
  578.  
  579.       var10 = ((Applet)this).getParameter("width");
  580.       int var7 = var10 == null ? 80 : Integer.valueOf(var10);
  581.       var10 = ((Applet)this).getParameter("height");
  582.       int var8 = var10 == null ? 39 : Integer.valueOf(var10);
  583.       ((Applet)this).resize(var7, var8);
  584.       this.theDisplayWidth = var7 - this.frameThickness * 2 - 1;
  585.       this.theXOffset = this.frameThickness + 1;
  586.       this.theYOffset = (var8 - (this.ledSize + this.ledSpacing) * 11) / 2;
  587.       String var12 = "";
  588.       Vector var1 = new Vector();
  589.  
  590.       String var11;
  591.       for(int var18 = 1; (var11 = ((Applet)this).getParameter("text" + var18)) != null; ++var18) {
  592.          var11 = var11.substring(1, var11.length() - 1);
  593.          int var9 = var11.length();
  594.          StringBuffer var13 = new StringBuffer();
  595.  
  596.          for(int var2 = 0; var2 < var9; ++var2) {
  597.             if (var11.charAt(var2) != '&') {
  598.                var13.append(var11.charAt(var2));
  599.             } else {
  600.                int var15 = var11.indexOf(59, var2 + 1);
  601.                int var14;
  602.                if (var15 != -1) {
  603.                   var14 = this.HTMLtoISO(var11.substring(var2, var15 + 1));
  604.                   if (var14 == 0) {
  605.                      var14 = 38;
  606.                   } else {
  607.                      var2 = var15;
  608.                   }
  609.                } else {
  610.                   var14 = 38;
  611.                }
  612.  
  613.                var13.append((char)var14);
  614.             }
  615.          }
  616.  
  617.          var11 = var13.toString();
  618.          var12 = var12 + var11;
  619.          var1.addElement(var11);
  620.       }
  621.  
  622.       this.numTokens = var1.size();
  623.       this.starts = new int[this.numTokens + 1];
  624.       this.starts[0] = this.theDisplayWidth;
  625.  
  626.       for(int var45 = 1; var45 <= this.numTokens; ++var45) {
  627.          this.starts[var45] = this.starts[var45 - 1] + ((String)var1.elementAt(var45 - 1)).length() * 6 * (this.ledSize + this.ledSpacing);
  628.       }
  629.  
  630.       var11 = var12;
  631.       int var26 = var12.length();
  632.       int var16 = var12.length() * 6 + 2 * this.theDisplayWidth / (this.ledSize + this.ledSpacing);
  633.       this.offScreenSize = new Dimension(var16 * (this.ledSize + this.ledSpacing), (this.ledSize + this.ledSpacing) * 11);
  634.       this.offScreenImage = ((Component)this).createImage(this.offScreenSize.width, this.offScreenSize.height);
  635.       this.offScreenGraphics = this.offScreenImage.getGraphics();
  636.       this.theOffScreenPosition = this.theDisplayWidth;
  637.       this.DrawOffScreenBackground();
  638.       var16 = this.theDisplayWidth / (this.ledSize + this.ledSpacing);
  639.       this.offScreenGraphics.setColor(this.LEDOffColour);
  640.  
  641.       for(int var21 = 0; var21 < var16; ++var21) {
  642.          for(int var4 = 0; var4 < 11; ++var4) {
  643.             if (this.ledType == 0) {
  644.                this.offScreenGraphics.fillRect(var21 * (this.ledSize + this.ledSpacing), var4 * (this.ledSize + this.ledSpacing), this.ledSize, this.ledSize);
  645.             } else {
  646.                this.offScreenGraphics.fillOval(var21 * (this.ledSize + this.ledSpacing), var4 * (this.ledSize + this.ledSpacing), this.ledSize, this.ledSize);
  647.             }
  648.          }
  649.       }
  650.  
  651.       int var17 = (var16 - 1) * (this.ledSize + this.ledSpacing);
  652.  
  653.       for(int var22 = 0; var22 < var26; ++var22) {
  654.          for(int var3 = 0; var3 < 6; ++var3) {
  655.             int var6 = this.GetLine(var11.charAt(var22), var3);
  656.  
  657.             for(int var24 = 0; var24 < 11; ++var24) {
  658.                int var5 = var6 >> var24;
  659.                if ((var5 & 1) == 1) {
  660.                   this.offScreenGraphics.setColor(this.LEDColour);
  661.                } else {
  662.                   this.offScreenGraphics.setColor(this.LEDOffColour);
  663.                }
  664.  
  665.                if (this.ledType == 0) {
  666.                   this.offScreenGraphics.fillRect(var17 + (var22 * 6 + var3) * (this.ledSize + this.ledSpacing), var24 * (this.ledSize + this.ledSpacing), this.ledSize, this.ledSize);
  667.                } else {
  668.                   this.offScreenGraphics.fillOval(var17 + (var22 * 6 + var3) * (this.ledSize + this.ledSpacing), var24 * (this.ledSize + this.ledSpacing), this.ledSize, this.ledSize);
  669.                }
  670.             }
  671.          }
  672.       }
  673.  
  674.       var17 += var26 * 6 * (this.ledSize + this.ledSpacing);
  675.       var16 = this.theDisplayWidth / (this.ledSize + this.ledSpacing);
  676.       this.offScreenGraphics.setColor(this.LEDOffColour);
  677.  
  678.       for(int var23 = 0; var23 < var16; ++var23) {
  679.          for(int var25 = 0; var25 < 11; ++var25) {
  680.             if (this.ledType == 0) {
  681.                this.offScreenGraphics.fillRect(var17 + var23 * (this.ledSize + this.ledSpacing), var25 * (this.ledSize + this.ledSpacing), this.ledSize, this.ledSize);
  682.             } else {
  683.                this.offScreenGraphics.fillOval(var17 + var23 * (this.ledSize + this.ledSpacing), var25 * (this.ledSize + this.ledSpacing), this.ledSize, this.ledSize);
  684.             }
  685.          }
  686.       }
  687.  
  688.       this.theURLs = new URL[this.numTokens];
  689.  
  690.       for(int var46 = 1; var46 <= this.numTokens; ++var46) {
  691.          var10 = ((Applet)this).getParameter("link" + var46);
  692.          if (var10 != null) {
  693.             try {
  694.                if (var10.compareTo("javascript:void(0)") == 0) {
  695.                   this.theURLToGoTo = null;
  696.                } else {
  697.                   this.theURLToGoTo = this.MakeAbsoluteURL(var10);
  698.                }
  699.             } catch (MalformedURLException var20) {
  700.                this.theURLToGoTo = null;
  701.             }
  702.  
  703.             this.theURLs[var46 - 1] = this.theURLToGoTo;
  704.          }
  705.       }
  706.  
  707.    }
  708.  
  709.    public int GetLine(char var1, int var2) {
  710.       int var3 = var1 & 255;
  711.       if (var3 >= 127 && var3 <= 160) {
  712.          var3 = 32;
  713.       } else if (var3 > 160) {
  714.          var3 -= 34;
  715.       }
  716.  
  717.       var3 -= 32;
  718.       if (var3 < 0) {
  719.          var3 = 0;
  720.       } else if (var3 > 189) {
  721.          var3 = 0;
  722.       }
  723.  
  724.       return this.itsData[var3][var2];
  725.    }
  726.  
  727.    public boolean mouseDown(Event var1, int var2, int var3) {
  728.       if (this.theURLToGoTo == null) {
  729.          boolean var10000 = false;
  730.       } else {
  731.          boolean var4 = true;
  732.       }
  733.  
  734.       return true;
  735.    }
  736.  
  737.    public void paint(Graphics var1) {
  738.       Color var2 = var1.getColor();
  739.       var1.setColor(this.frameColour);
  740.       var1.fillRect(0, 0, ((Component)this).bounds().width, ((Component)this).bounds().height);
  741.       var1.setColor(this.backGround);
  742.       var1.fillRect(this.frameThickness, this.frameThickness, this.theDisplayWidth, ((Component)this).bounds().height - this.frameThickness * 2 - 1);
  743.       this.update(var1);
  744.       var1.setColor(var2);
  745.    }
  746.  
  747.    public void ISO8859() {
  748.    }
  749.  
  750.    public void stop() {
  751.       if (this.tickTock != null) {
  752.          this.tickTock.stop();
  753.          this.tickTock = null;
  754.       }
  755.  
  756.    }
  757.  
  758.    public long GetSpeed() {
  759.       return this.speed;
  760.    }
  761.  
  762.    private void DrawOffScreenBackground() {
  763.       this.offScreenGraphics.setColor(this.backGround);
  764.       this.offScreenGraphics.fillRect(0, 0, this.offScreenSize.width, this.offScreenSize.height);
  765.    }
  766.  
  767.    public String About() {
  768.       return "Netobjects TickerTape";
  769.    }
  770.  
  771.    public boolean mouseMove(Event var1, int var2, int var3) {
  772.       if (this.theURLToGoTo != null && this.notUpdatedYet) {
  773.          this.notUpdatedYet = false;
  774.       }
  775.  
  776.       return true;
  777.    }
  778.  
  779.    public void start() {
  780.       if (this.tickTock == null) {
  781.          this.tickTock = new Thread(this);
  782.          this.tickTock.start();
  783.       }
  784.  
  785.    }
  786.  
  787.    public String[][] getParameterInfo() {
  788.       String[][] var1 = new String[][]{{"text1", "string", "the text to display"}, {"speed", "integer", ""}, {"framecolor", "string", ""}, {"backcolor", "string", ""}, {"LEDcolor", "string", ""}, {"ledoffcolor", "string", ""}, {"FrameThick", "integer", ""}, {"LEDSize", "integer", ""}, {"scrollfactor", "integer", ""}, {"ledspacing", "integer", ""}, {"ledtype", "integer", "The shape of the LED: 0 = Square and 1 = Circular"}, {"href1", "URL", ""}};
  789.       return var1;
  790.    }
  791.  
  792.    public boolean mouseEnter(Event var1, int var2, int var3) {
  793.       if (this.theURLToGoTo == null) {
  794.          boolean var10000 = false;
  795.       } else {
  796.          boolean var4 = true;
  797.       }
  798.  
  799.       if (this.browserFrame != null) {
  800.          this.browserFrame.setCursor(12);
  801.       }
  802.  
  803.       this.mouseOut = false;
  804.       return true;
  805.    }
  806. }
  807.