home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 22 / AMUG_22-1.ISO / Files / Internet / Java / ActiveMap 1.0 Demo.sit / ActiveMap / classes / ActiveMap.class (.txt) next >
Encoding:
Java Class File  |  1997-02-21  |  7.7 KB  |  414 lines  |  [????/????]

  1. import java.applet.Applet;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Event;
  5. import java.awt.Graphics;
  6. import java.awt.Image;
  7. import java.awt.MediaTracker;
  8. import java.awt.image.CropImageFilter;
  9. import java.awt.image.FilteredImageSource;
  10. import java.awt.image.ImageObserver;
  11. import java.awt.image.MemoryImageSource;
  12. import java.awt.image.PixelGrabber;
  13. import java.net.MalformedURLException;
  14. import java.net.URL;
  15. import java.util.StringTokenizer;
  16. import java.util.Vector;
  17.  
  18. public class ActiveMap extends Applet {
  19.    boolean correctHost = false;
  20.    String realHost = "software.sensenet.com";
  21.    String thisHost = "";
  22.    int cStandard;
  23.    int cExclusive = 1;
  24.    int cStayon = 2;
  25.    int cStayactive = 3;
  26.    int style;
  27.    private Color bgcolor;
  28.    private Image normal;
  29.    private int linkTotal;
  30.    private Vector links;
  31.    private Image bufferimage;
  32.    private Graphics bufferscreen;
  33.  
  34.    public Image getImage(URL var1) {
  35.       Image var2 = super.getImage(var1);
  36.       if (var2 == null) {
  37.          return null;
  38.       } else {
  39.          MediaTracker var3 = new MediaTracker(this);
  40.          var3.addImage(var2, 0);
  41.  
  42.          try {
  43.             var3.waitForID(0);
  44.          } catch (InterruptedException var10) {
  45.          }
  46.  
  47.          int var4 = var2.getWidth(this);
  48.          int var5 = var2.getHeight(this);
  49.          int[] var6 = new int[var4 * var5];
  50.          PixelGrabber var7 = new PixelGrabber(var2, 0, 0, var4, var5, var6, 0, var4);
  51.  
  52.          try {
  53.             var7.grabPixels();
  54.          } catch (Exception var9) {
  55.          }
  56.  
  57.          MemoryImageSource var8 = new MemoryImageSource(var4, var5, var6, 0, var4);
  58.          return ((Component)this).createImage(var8);
  59.       }
  60.    }
  61.  
  62.    public Image getImage(URL var1, String var2) {
  63.       try {
  64.          return this.getImage(new URL(var1, var2));
  65.       } catch (MalformedURLException var3) {
  66.          return null;
  67.       }
  68.    }
  69.  
  70.    public void init() {
  71.       this.thisHost = ((Applet)this).getCodeBase().getHost();
  72.       if (this.thisHost.length() == 0) {
  73.          this.thisHost = "localhost";
  74.          this.correctHost = true;
  75.       } else if (this.realHost.equals(this.thisHost)) {
  76.          this.correctHost = true;
  77.       } else if (this.realHost.equals("www." + this.thisHost)) {
  78.          this.correctHost = true;
  79.       } else if (this.realHost.equals("www." + this.thisHost + ".com")) {
  80.          this.correctHost = true;
  81.       }
  82.  
  83.       this.dbg("-");
  84.       this.dbg("ActiveMap v1.0");
  85.       this.dbg("Copyright (c) 1996 Sensenet, Inc.");
  86.       this.dbg("Authorized for \"" + this.realHost + "\"");
  87.       this.dbg("Running on \"" + this.thisHost + "\"");
  88.       Image var1 = null;
  89.       Image var2 = null;
  90.       String var3 = "-";
  91.       String var4 = ((Applet)this).getParameter("style");
  92.       if (var4 == null) {
  93.          this.style = this.cStandard;
  94.       } else if (var4.equals("exclusive")) {
  95.          this.style = this.cExclusive;
  96.       } else if (var4.equals("stayon")) {
  97.          this.style = this.cStayon;
  98.       } else if (var4.equals("stayactive")) {
  99.          this.style = this.cStayactive;
  100.       }
  101.  
  102.       try {
  103.          String var5 = ((Applet)this).getParameter("frame");
  104.          if (var5 != null) {
  105.             var3 = var5;
  106.          }
  107.  
  108.          String var6 = ((Applet)this).getParameter("background");
  109.          if (var6 == null) {
  110.             var6 = "";
  111.          }
  112.  
  113.          StringTokenizer var7 = new StringTokenizer(var6, "|");
  114.          if (var7.hasMoreTokens()) {
  115.             String var8 = var7.nextToken();
  116.             if (var8.indexOf(46) != -1) {
  117.                this.normal = this.getImage(new URL(((Applet)this).getDocumentBase(), var8));
  118.             } else {
  119.                this.bgcolor = GetColor(var8);
  120.             }
  121.          }
  122.  
  123.          if (var7.hasMoreTokens()) {
  124.             String var36 = var7.nextToken();
  125.             if (var36.indexOf(46) != -1) {
  126.                this.normal = this.getImage(new URL(((Applet)this).getDocumentBase(), var36));
  127.             } else {
  128.                this.bgcolor = GetColor(var36);
  129.             }
  130.          }
  131.  
  132.          String var37 = ((Applet)this).getParameter("active_image");
  133.          if (var37 != null) {
  134.             var1 = this.getImage(new URL(((Applet)this).getDocumentBase(), var37));
  135.          }
  136.  
  137.          String var9 = ((Applet)this).getParameter("on_image");
  138.          if (var9 != null) {
  139.             var2 = this.getImage(new URL(((Applet)this).getDocumentBase(), var9));
  140.          }
  141.  
  142.          ((Applet)this).showStatus("Loading images...");
  143.          MediaTracker var10 = new MediaTracker(this);
  144.          if (this.normal != null) {
  145.             var10.addImage(this.normal, 0);
  146.          }
  147.  
  148.          if (var1 != null) {
  149.             var10.addImage(var1, 0);
  150.          }
  151.  
  152.          if (var2 != null) {
  153.             var10.addImage(var2, 0);
  154.          }
  155.  
  156.          var10.waitForAll();
  157.          ((Component)this).repaint();
  158.       } catch (Exception var28) {
  159.          this.dbg("init1: " + ((Throwable)var28).toString());
  160.       }
  161.  
  162.       try {
  163.          while(true) {
  164.             int var30 = 0;
  165.             int var32 = 0;
  166.             int var34 = 0;
  167.             int var38 = 0;
  168.             URL var39 = null;
  169.             String var40 = var3;
  170.             String var11 = "-";
  171.             int var12 = 0;
  172.             int var13 = 0;
  173.             String var14 = "";
  174.             String var15 = "#000000";
  175.             int var16 = 0;
  176.             int var17 = 0;
  177.             Image var18 = null;
  178.             String var19 = ((Applet)this).getParameter("link" + (this.linkTotal + 1));
  179.             if (var19 == null) {
  180.                break;
  181.             }
  182.  
  183.             StringTokenizer var20 = new StringTokenizer(var19, "|");
  184.             if (var20.hasMoreTokens()) {
  185.                StringTokenizer var21 = new StringTokenizer(var20.nextToken(), ",");
  186.                if (var21.hasMoreTokens()) {
  187.                   var30 = Integer.parseInt(var21.nextToken());
  188.                }
  189.  
  190.                if (var21.hasMoreTokens()) {
  191.                   var32 = Integer.parseInt(var21.nextToken());
  192.                }
  193.  
  194.                if (var21.hasMoreTokens()) {
  195.                   var34 = Integer.parseInt(var21.nextToken()) - var30;
  196.                }
  197.  
  198.                if (var21.hasMoreTokens()) {
  199.                   var38 = Integer.parseInt(var21.nextToken()) - var32;
  200.                }
  201.             }
  202.  
  203.             if (var20.hasMoreTokens()) {
  204.                var39 = new URL(((Applet)this).getDocumentBase(), var20.nextToken());
  205.             }
  206.  
  207.             if (var20.hasMoreTokens()) {
  208.                var40 = var20.nextToken();
  209.             }
  210.  
  211.             if (var20.hasMoreTokens()) {
  212.                var11 = var20.nextToken();
  213.             }
  214.  
  215.             CropImageFilter var45 = new CropImageFilter(var30, var32, var34, var38);
  216.             Image var22 = var1 == null ? null : ((Component)this).createImage(new FilteredImageSource(var1.getSource(), var45));
  217.             Image var23 = var2 == null ? null : ((Component)this).createImage(new FilteredImageSource(var2.getSource(), var45));
  218.             ActiveMapLink var24 = new ActiveMapLink(this, var30, var32, var34, var38);
  219.             var24.SetImages(var22, var23);
  220.             var24.SetInfo(var39, var40, var11);
  221.             var19 = ((Applet)this).getParameter("text" + (this.linkTotal + 1));
  222.             if (var19 != null) {
  223.                var20 = new StringTokenizer(var19, "|");
  224.                if (var20.hasMoreTokens()) {
  225.                   StringTokenizer var25 = new StringTokenizer(var20.nextToken(), ",");
  226.                   if (var25.hasMoreTokens()) {
  227.                      var12 = Integer.parseInt(var25.nextToken());
  228.                   }
  229.  
  230.                   if (var25.hasMoreTokens()) {
  231.                      var13 = Integer.parseInt(var25.nextToken());
  232.                   }
  233.                }
  234.  
  235.                if (var20.hasMoreTokens()) {
  236.                   var14 = var20.nextToken();
  237.                }
  238.  
  239.                if (var20.hasMoreTokens()) {
  240.                   var15 = var20.nextToken();
  241.                }
  242.  
  243.                var24.SetText(var12, var13, var14, GetColor(var15));
  244.             }
  245.  
  246.             var19 = ((Applet)this).getParameter("image" + (this.linkTotal + 1));
  247.             if (var19 != null) {
  248.                var20 = new StringTokenizer(var19, "|");
  249.                if (var20.hasMoreTokens()) {
  250.                   StringTokenizer var46 = new StringTokenizer(var20.nextToken(), ",");
  251.                   if (var46.hasMoreTokens()) {
  252.                      var16 = Integer.parseInt(var46.nextToken());
  253.                   }
  254.  
  255.                   if (var46.hasMoreTokens()) {
  256.                      var17 = Integer.parseInt(var46.nextToken());
  257.                   }
  258.                }
  259.  
  260.                if (var20.hasMoreTokens()) {
  261.                   URL var47 = new URL(((Applet)this).getDocumentBase(), var20.nextToken());
  262.                   var18 = this.getImage(var47);
  263.                }
  264.  
  265.                ((Applet)this).showStatus("Loading images...");
  266.                MediaTracker var48 = new MediaTracker(this);
  267.                if (var18 != null) {
  268.                   var48.addImage(var18, 0);
  269.                }
  270.  
  271.                var48.waitForAll();
  272.                var24.SetImage(var16, var17, var18);
  273.                ((Component)this).repaint();
  274.             }
  275.  
  276.             this.links.addElement(var24);
  277.             ++this.linkTotal;
  278.          }
  279.       } catch (Exception var29) {
  280.          this.dbg("init2 : " + ((Throwable)var29).toString());
  281.       }
  282.  
  283.       String var31 = ((Applet)this).getParameter("ison");
  284.       if (var31 != null) {
  285.          try {
  286.             int var33 = Integer.parseInt(var31) - 1;
  287.             ActiveMapLink var35 = (ActiveMapLink)this.links.elementAt(var33);
  288.             if (var35 != null) {
  289.                var35.SetOn();
  290.             }
  291.          } catch (Exception var27) {
  292.             this.dbg("init3 : " + ((Throwable)var27).toString());
  293.          }
  294.       }
  295.  
  296.       try {
  297.          if (this.bufferimage == null) {
  298.             this.bufferimage = ((Component)this).createImage(((Component)this).size().width, ((Component)this).size().height);
  299.             this.bufferscreen = this.bufferimage.getGraphics();
  300.          }
  301.       } catch (Exception var26) {
  302.          this.bufferscreen = null;
  303.       }
  304.  
  305.       ((Component)this).repaint();
  306.    }
  307.  
  308.    public void paint(Graphics var1) {
  309.       if (!this.correctHost) {
  310.          var1.setColor(Color.black);
  311.          var1.fillRect(0, 0, ((Component)this).size().width, ((Component)this).size().height);
  312.          var1.setColor(Color.white);
  313.          var1.drawString("Registered to " + this.realHost, 20, 20);
  314.          var1.drawString("Running on " + this.thisHost, 20, 36);
  315.       } else {
  316.          var1.setColor(this.bgcolor);
  317.          var1.fillRect(0, 0, ((Component)this).size().width, ((Component)this).size().height);
  318.          if (this.normal != null) {
  319.             var1.drawImage(this.normal, 0, 0, this);
  320.          }
  321.  
  322.          for(int var2 = 0; var2 < this.linkTotal; ++var2) {
  323.             ((ActiveMapLink)this.links.elementAt(var2)).Draw(var1);
  324.          }
  325.  
  326.       }
  327.    }
  328.  
  329.    public void update(Graphics var1) {
  330.       if (this.bufferscreen != null) {
  331.          this.paint(this.bufferscreen);
  332.          var1.drawImage(this.bufferimage, 0, 0, (ImageObserver)null);
  333.       } else {
  334.          this.paint(var1);
  335.       }
  336.    }
  337.  
  338.    public boolean mouseExit(Event var1, int var2, int var3) {
  339.       if (!this.correctHost) {
  340.          return true;
  341.       } else {
  342.          for(int var4 = 0; var4 < this.linkTotal; ++var4) {
  343.             ((ActiveMapLink)this.links.elementAt(var4)).DoMouseExit();
  344.          }
  345.  
  346.          ((Component)this).repaint();
  347.          ((Applet)this).showStatus("");
  348.          return true;
  349.       }
  350.    }
  351.  
  352.    public boolean mouseDown(Event var1, int var2, int var3) {
  353.       if (!this.correctHost) {
  354.          return true;
  355.       } else {
  356.          for(int var4 = 0; var4 < this.linkTotal; ++var4) {
  357.             ActiveMapLink var5 = (ActiveMapLink)this.links.elementAt(var4);
  358.             if (var5.MouseHit(var2, var3)) {
  359.                var5.DoMouseDown();
  360.             } else {
  361.                var5.DoMouseUp();
  362.             }
  363.          }
  364.  
  365.          ((Component)this).repaint();
  366.          return true;
  367.       }
  368.    }
  369.  
  370.    public boolean mouseMove(Event var1, int var2, int var3) {
  371.       if (!this.correctHost) {
  372.          return false;
  373.       } else {
  374.          for(int var4 = 0; var4 < this.linkTotal; ++var4) {
  375.             ActiveMapLink var5 = (ActiveMapLink)this.links.elementAt(var4);
  376.             if (var5.MouseHit(var2, var3)) {
  377.                var5.DoMouseEnter();
  378.             } else {
  379.                var5.DoMouseExit();
  380.             }
  381.          }
  382.  
  383.          ((Component)this).repaint();
  384.          return false;
  385.       }
  386.    }
  387.  
  388.    public static Color GetColor(String var0) {
  389.       if (var0 == null) {
  390.          return Color.black;
  391.       } else {
  392.          if (var0.startsWith("#")) {
  393.             var0 = var0.substring(1);
  394.          }
  395.  
  396.          try {
  397.             return new Color(Integer.parseInt(var0, 16));
  398.          } catch (NumberFormatException var1) {
  399.             return Color.black;
  400.          }
  401.       }
  402.    }
  403.  
  404.    void dbg(String var1) {
  405.       System.out.println(var1);
  406.    }
  407.  
  408.    public ActiveMap() {
  409.       this.style = this.cStandard;
  410.       this.bgcolor = Color.black;
  411.       this.links = new Vector(8, 2);
  412.    }
  413. }
  414.