home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / applet / AppletViewer.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  15.9 KB  |  777 lines

  1. package sun.applet;
  2.  
  3. import java.applet.Applet;
  4. import java.applet.AppletContext;
  5. import java.applet.AudioClip;
  6. import java.awt.Component;
  7. import java.awt.Container;
  8. import java.awt.Dimension;
  9. import java.awt.Frame;
  10. import java.awt.Graphics;
  11. import java.awt.Image;
  12. import java.awt.Insets;
  13. import java.awt.Label;
  14. import java.awt.Menu;
  15. import java.awt.MenuBar;
  16. import java.awt.MenuItem;
  17. import java.awt.Point;
  18. import java.awt.PrintJob;
  19. import java.awt.Toolkit;
  20. import java.awt.Window;
  21. import java.awt.event.ActionEvent;
  22. import java.io.BufferedReader;
  23. import java.io.ByteArrayOutputStream;
  24. import java.io.IOException;
  25. import java.io.InputStream;
  26. import java.io.InputStreamReader;
  27. import java.io.PrintStream;
  28. import java.io.Reader;
  29. import java.net.SocketPermission;
  30. import java.net.URL;
  31. import java.net.URLConnection;
  32. import java.security.AccessController;
  33. import java.security.Permission;
  34. import java.util.Enumeration;
  35. import java.util.EventObject;
  36. import java.util.HashMap;
  37. import java.util.Hashtable;
  38. import java.util.Map;
  39. import java.util.Properties;
  40. import java.util.Vector;
  41. import sun.misc.Ref;
  42.  
  43. public class AppletViewer extends Frame implements AppletContext {
  44.    private static String defaultSaveFile = "Applet.ser";
  45.    AppletViewerPanel panel;
  46.    Label label;
  47.    PrintStream statusMsgStream;
  48.    AppletViewerFactory factory;
  49.    private static Map audioClips = new HashMap();
  50.    private static Map imageRefs = new HashMap();
  51.    static Vector appletPanels = new Vector();
  52.    static Hashtable systemParam = new Hashtable();
  53.    static AppletProps props;
  54.    // $FF: renamed from: c int
  55.    static int field_0;
  56.    // $FF: renamed from: x int
  57.    private static int field_1;
  58.    // $FF: renamed from: y int
  59.    private static int field_2;
  60.    private static final int XDELTA = 30;
  61.    private static final int YDELTA = 30;
  62.    static String encoding;
  63.    private static AppletMessageHandler amh;
  64.  
  65.    public AppletViewer(int var1, int var2, URL var3, Hashtable var4, PrintStream var5, AppletViewerFactory var6) {
  66.       this.factory = var6;
  67.       this.statusMsgStream = var5;
  68.       ((Frame)this).setTitle(amh.getMessage("tool.title", var4.get("code")));
  69.       MenuBar var7 = var6.getBaseMenuBar();
  70.       Menu var8 = new Menu(amh.getMessage("menu.applet"));
  71.       this.addMenuItem(var8, "menuitem.restart");
  72.       this.addMenuItem(var8, "menuitem.reload");
  73.       this.addMenuItem(var8, "menuitem.stop");
  74.       this.addMenuItem(var8, "menuitem.save");
  75.       this.addMenuItem(var8, "menuitem.start");
  76.       this.addMenuItem(var8, "menuitem.clone");
  77.       var8.add(new MenuItem("-"));
  78.       this.addMenuItem(var8, "menuitem.tag");
  79.       this.addMenuItem(var8, "menuitem.info");
  80.       this.addMenuItem(var8, "menuitem.edit").disable();
  81.       this.addMenuItem(var8, "menuitem.encoding");
  82.       var8.add(new MenuItem("-"));
  83.       this.addMenuItem(var8, "menuitem.print");
  84.       var8.add(new MenuItem("-"));
  85.       this.addMenuItem(var8, "menuitem.props");
  86.       var8.add(new MenuItem("-"));
  87.       this.addMenuItem(var8, "menuitem.close");
  88.       if (var6.isStandalone()) {
  89.          this.addMenuItem(var8, "menuitem.quit");
  90.       }
  91.  
  92.       var7.add(var8);
  93.       ((Frame)this).setMenuBar(var7);
  94.       ((Container)this).add("Center", this.panel = new AppletViewerPanel(var3, var4));
  95.       ((Container)this).add("South", this.label = new Label(amh.getMessage("label.hello")));
  96.       this.panel.init();
  97.       appletPanels.addElement(this.panel);
  98.       ((Window)this).pack();
  99.       ((Component)this).move(var1, var2);
  100.       ((Component)this).setVisible(true);
  101.       1 var9 = new 1(this);
  102.       ((Window)this).addWindowListener(var9);
  103.       this.panel.addAppletListener(new 1.AppletEventListener(this));
  104.       this.showStatus(amh.getMessage("status.start"));
  105.       this.initEventQueue();
  106.    }
  107.  
  108.    public MenuItem addMenuItem(Menu var1, String var2) {
  109.       MenuItem var3 = new MenuItem(amh.getMessage(var2));
  110.       var3.addActionListener(new UserActionListener(this, (1)null));
  111.       return var1.add(var3);
  112.    }
  113.  
  114.    private void initEventQueue() {
  115.       String var1 = System.getProperty("appletviewer.send.event");
  116.       if (var1 == null) {
  117.          this.panel.sendEvent(1);
  118.          this.panel.sendEvent(2);
  119.          this.panel.sendEvent(3);
  120.       } else {
  121.          String[] var2 = this.splitSeparator(",", var1);
  122.  
  123.          for(int var3 = 0; var3 < var2.length; ++var3) {
  124.             System.out.println("Adding event to queue: " + var2[var3]);
  125.             if (var2[var3].equals("dispose")) {
  126.                this.panel.sendEvent(0);
  127.             } else if (var2[var3].equals("load")) {
  128.                this.panel.sendEvent(1);
  129.             } else if (var2[var3].equals("init")) {
  130.                this.panel.sendEvent(2);
  131.             } else if (var2[var3].equals("start")) {
  132.                this.panel.sendEvent(3);
  133.             } else if (var2[var3].equals("stop")) {
  134.                this.panel.sendEvent(4);
  135.             } else if (var2[var3].equals("destroy")) {
  136.                this.panel.sendEvent(5);
  137.             } else if (var2[var3].equals("quit")) {
  138.                this.panel.sendEvent(6);
  139.             } else if (var2[var3].equals("error")) {
  140.                this.panel.sendEvent(7);
  141.             } else {
  142.                System.out.println("Unrecognized event name: " + var2[var3]);
  143.             }
  144.          }
  145.  
  146.          while(!this.panel.emptyEventQueue()) {
  147.          }
  148.  
  149.          this.appletSystemExit();
  150.       }
  151.  
  152.    }
  153.  
  154.    private String[] splitSeparator(String var1, String var2) {
  155.       Vector var3 = new Vector();
  156.       int var4 = 0;
  157.  
  158.       int var7;
  159.       for(var7 = 0; (var7 = var2.indexOf(var1, var4)) != -1; var4 = var7 + 1) {
  160.          var3.addElement(var2.substring(var4, var7));
  161.       }
  162.  
  163.       var3.addElement(var2.substring(var4));
  164.       String[] var6 = new String[var3.size()];
  165.       var3.copyInto(var6);
  166.       return var6;
  167.    }
  168.  
  169.    public AudioClip getAudioClip(URL var1) {
  170.       checkConnect(var1);
  171.       Map var2 = audioClips;
  172.       synchronized(var2) {
  173.          Object var3 = (AudioClip)audioClips.get(var1);
  174.          if (var3 == null) {
  175.             audioClips.put(var1, var3 = new AppletAudioClip(var1));
  176.          }
  177.  
  178.          return (AudioClip)var3;
  179.       }
  180.    }
  181.  
  182.    public Image getImage(URL var1) {
  183.       return getCachedImage(var1);
  184.    }
  185.  
  186.    static Image getCachedImage(URL var0) {
  187.       return (Image)getCachedImageRef(var0).get();
  188.    }
  189.  
  190.    static Ref getCachedImageRef(URL var0) {
  191.       Map var1 = imageRefs;
  192.       synchronized(var1) {
  193.          AppletImageRef var2 = (AppletImageRef)imageRefs.get(var0);
  194.          if (var2 == null) {
  195.             var2 = new AppletImageRef(var0);
  196.             imageRefs.put(var0, var2);
  197.          }
  198.  
  199.          return var2;
  200.       }
  201.    }
  202.  
  203.    static void flushImageCache() {
  204.       imageRefs.clear();
  205.    }
  206.  
  207.    public Applet getApplet(String var1) {
  208.       AppletSecurity var2 = (AppletSecurity)System.getSecurityManager();
  209.       var1 = var1.toLowerCase();
  210.       SocketPermission var3 = new SocketPermission(this.panel.getCodeBase().getHost(), "connect");
  211.       Enumeration var4 = appletPanels.elements();
  212.  
  213.       while(var4.hasMoreElements()) {
  214.          AppletPanel var5 = (AppletPanel)var4.nextElement();
  215.          String var6 = var5.getParameter("name");
  216.          if (var6 != null) {
  217.             var6 = var6.toLowerCase();
  218.          }
  219.  
  220.          if (var1.equals(var6) && var5.getDocumentBase().equals(this.panel.getDocumentBase())) {
  221.             SocketPermission var7 = new SocketPermission(var5.getCodeBase().getHost(), "connect");
  222.             if (var3.implies(var7)) {
  223.                return var5.applet;
  224.             }
  225.          }
  226.       }
  227.  
  228.       return null;
  229.    }
  230.  
  231.    public Enumeration getApplets() {
  232.       AppletSecurity var1 = (AppletSecurity)System.getSecurityManager();
  233.       Vector var2 = new Vector();
  234.       SocketPermission var3 = new SocketPermission(this.panel.getCodeBase().getHost(), "connect");
  235.       Enumeration var4 = appletPanels.elements();
  236.  
  237.       while(var4.hasMoreElements()) {
  238.          AppletPanel var5 = (AppletPanel)var4.nextElement();
  239.          if (var5.getDocumentBase().equals(this.panel.getDocumentBase())) {
  240.             SocketPermission var6 = new SocketPermission(var5.getCodeBase().getHost(), "connect");
  241.             if (var3.implies(var6)) {
  242.                var2.addElement(var5.applet);
  243.             }
  244.          }
  245.       }
  246.  
  247.       return var2.elements();
  248.    }
  249.  
  250.    public void showDocument(URL var1) {
  251.    }
  252.  
  253.    public void showDocument(URL var1, String var2) {
  254.    }
  255.  
  256.    public void showStatus(String var1) {
  257.       this.label.setText(var1);
  258.    }
  259.  
  260.    public static void printTag(PrintStream var0, Hashtable var1) {
  261.       var0.print("<applet");
  262.       String var2 = (String)var1.get("codebase");
  263.       if (var2 != null) {
  264.          var0.print(" codebase=\"" + var2 + "\"");
  265.       }
  266.  
  267.       var2 = (String)var1.get("code");
  268.       if (var2 == null) {
  269.          var2 = "applet.class";
  270.       }
  271.  
  272.       var0.print(" code=\"" + var2 + "\"");
  273.       var2 = (String)var1.get("width");
  274.       if (var2 == null) {
  275.          var2 = "150";
  276.       }
  277.  
  278.       var0.print(" width=" + var2);
  279.       var2 = (String)var1.get("height");
  280.       if (var2 == null) {
  281.          var2 = "100";
  282.       }
  283.  
  284.       var0.print(" height=" + var2);
  285.       var2 = (String)var1.get("name");
  286.       if (var2 != null) {
  287.          var0.print(" name=\"" + var2 + "\"");
  288.       }
  289.  
  290.       var0.println(">");
  291.       int var3 = var1.size();
  292.       String[] var4 = new String[var3];
  293.       var3 = 0;
  294.  
  295.       for(Enumeration var5 = var1.keys(); var5.hasMoreElements(); ++var3) {
  296.          String var6 = (String)var5.nextElement();
  297.  
  298.          int var7;
  299.          for(var7 = 0; var7 < var3 && var4[var7].compareTo(var6) < 0; ++var7) {
  300.          }
  301.  
  302.          System.arraycopy(var4, var7, var4, var7 + 1, var3 - var7);
  303.          var4[var7] = var6;
  304.       }
  305.  
  306.       for(int var13 = 0; var13 < var3; ++var13) {
  307.          String var14 = var4[var13];
  308.          if (systemParam.get(var14) == null) {
  309.             var0.println("<param name=" + var14 + " value=\"" + var1.get(var14) + "\">");
  310.          }
  311.       }
  312.  
  313.       var0.println("</applet>");
  314.    }
  315.  
  316.    public void updateAtts() {
  317.       Dimension var1 = this.panel.size();
  318.       Insets var2 = this.panel.insets();
  319.       this.panel.atts.put("width", (new Integer(var1.width - (var2.left + var2.right))).toString());
  320.       this.panel.atts.put("height", (new Integer(var1.height - (var2.top + var2.bottom))).toString());
  321.    }
  322.  
  323.    void appletRestart() {
  324.       this.panel.sendEvent(4);
  325.       this.panel.sendEvent(5);
  326.       this.panel.sendEvent(2);
  327.       this.panel.sendEvent(3);
  328.    }
  329.  
  330.    void appletReload() {
  331.       this.panel.sendEvent(4);
  332.       this.panel.sendEvent(5);
  333.       this.panel.sendEvent(0);
  334.       AppletPanel.flushClassLoader(this.panel.baseURL);
  335.  
  336.       try {
  337.          this.panel.joinAppletThread();
  338.          this.panel.release();
  339.       } catch (InterruptedException var2) {
  340.          return;
  341.       }
  342.  
  343.       this.panel.createAppletThread();
  344.       this.panel.sendEvent(1);
  345.       this.panel.sendEvent(2);
  346.       this.panel.sendEvent(3);
  347.    }
  348.  
  349.    void appletSave() {
  350.       AccessController.doPrivileged(new 2(this));
  351.    }
  352.  
  353.    void appletClone() {
  354.       Point var1 = ((Component)this).location();
  355.       this.updateAtts();
  356.       this.factory.createAppletViewer(var1.x + 30, var1.y + 30, this.panel.documentURL, (Hashtable)this.panel.atts.clone());
  357.    }
  358.  
  359.    void appletTag() {
  360.       ByteArrayOutputStream var1 = new ByteArrayOutputStream();
  361.       this.updateAtts();
  362.       printTag(new PrintStream(var1), this.panel.atts);
  363.       this.showStatus(amh.getMessage("applettag"));
  364.       Point var2 = ((Component)this).location();
  365.       new TextFrame(var2.x + 30, var2.y + 30, amh.getMessage("applettag.textframe"), var1.toString());
  366.    }
  367.  
  368.    void appletInfo() {
  369.       String var1 = this.panel.applet.getAppletInfo();
  370.       if (var1 == null) {
  371.          var1 = amh.getMessage("appletinfo.applet");
  372.       }
  373.  
  374.       var1 = var1 + "\n\n";
  375.       String[][] var2 = this.panel.applet.getParameterInfo();
  376.       if (var2 != null) {
  377.          for(int var3 = 0; var3 < var2.length; ++var3) {
  378.             var1 = var1 + var2[var3][0] + " -- " + var2[var3][1] + " -- " + var2[var3][2] + "\n";
  379.          }
  380.       } else {
  381.          var1 = var1 + amh.getMessage("appletinfo.param");
  382.       }
  383.  
  384.       Point var5 = ((Component)this).location();
  385.       new TextFrame(var5.x + 30, var5.y + 30, amh.getMessage("appletinfo.textframe"), var1);
  386.    }
  387.  
  388.    void appletCharacterEncoding() {
  389.       this.showStatus(amh.getMessage("appletencoding", encoding));
  390.    }
  391.  
  392.    void appletEdit() {
  393.    }
  394.  
  395.    void appletPrint() {
  396.       PrintJob var1 = Toolkit.getDefaultToolkit().getPrintJob(this, amh.getMessage("appletprint.printjob"), (Properties)null);
  397.       if (var1 != null) {
  398.          Dimension var2 = var1.getPageDimension();
  399.          int var3 = var1.getPageResolution();
  400.          boolean var4 = var1.lastPageFirst();
  401.          Graphics var5 = var1.getGraphics();
  402.          if (var5 != null) {
  403.             this.panel.applet.printAll(var5);
  404.             var5.dispose();
  405.          } else {
  406.             this.statusMsgStream.println(amh.getMessage("appletprint.fail"));
  407.          }
  408.  
  409.          this.statusMsgStream.println(amh.getMessage("appletprint.finish"));
  410.          var1.end();
  411.       } else {
  412.          this.statusMsgStream.println(amh.getMessage("appletprint.cancel"));
  413.       }
  414.  
  415.    }
  416.  
  417.    public static synchronized void networkProperties() {
  418.       if (props == null) {
  419.          props = new AppletProps();
  420.       }
  421.  
  422.       props.addNotify();
  423.       props.setVisible(true);
  424.    }
  425.  
  426.    void appletStart() {
  427.       this.panel.sendEvent(3);
  428.    }
  429.  
  430.    void appletStop() {
  431.       this.panel.sendEvent(4);
  432.    }
  433.  
  434.    private void appletShutdown(AppletPanel var1) {
  435.       var1.sendEvent(4);
  436.       var1.sendEvent(5);
  437.       var1.sendEvent(0);
  438.       var1.sendEvent(6);
  439.    }
  440.  
  441.    void appletClose() {
  442.       this.appletShutdown(this.panel);
  443.       appletPanels.removeElement(this.panel);
  444.       ((Window)this).dispose();
  445.       if (countApplets() == 0) {
  446.          this.appletSystemExit();
  447.       }
  448.  
  449.    }
  450.  
  451.    private void appletSystemExit() {
  452.       if (this.factory.isStandalone()) {
  453.          System.exit(0);
  454.       }
  455.  
  456.    }
  457.  
  458.    protected void appletQuit() {
  459.       Enumeration var1 = appletPanels.elements();
  460.  
  461.       while(var1.hasMoreElements()) {
  462.          AppletPanel var2 = (AppletPanel)var1.nextElement();
  463.          this.appletShutdown(var2);
  464.       }
  465.  
  466.       this.appletSystemExit();
  467.    }
  468.  
  469.    public void processUserAction(ActionEvent var1) {
  470.       String var2 = ((MenuItem)((EventObject)var1).getSource()).getLabel();
  471.       if (amh.getMessage("menuitem.restart").equals(var2)) {
  472.          this.appletRestart();
  473.       } else if (amh.getMessage("menuitem.reload").equals(var2)) {
  474.          this.appletReload();
  475.       } else if (amh.getMessage("menuitem.clone").equals(var2)) {
  476.          this.appletClone();
  477.       } else if (amh.getMessage("menuitem.stop").equals(var2)) {
  478.          this.appletStop();
  479.       } else if (amh.getMessage("menuitem.save").equals(var2)) {
  480.          this.appletSave();
  481.       } else if (amh.getMessage("menuitem.start").equals(var2)) {
  482.          this.appletStart();
  483.       } else if (amh.getMessage("menuitem.tag").equals(var2)) {
  484.          this.appletTag();
  485.       } else if (amh.getMessage("menuitem.info").equals(var2)) {
  486.          this.appletInfo();
  487.       } else if (amh.getMessage("menuitem.encoding").equals(var2)) {
  488.          this.appletCharacterEncoding();
  489.       } else if (amh.getMessage("menuitem.edit").equals(var2)) {
  490.          this.appletEdit();
  491.       } else if (amh.getMessage("menuitem.print").equals(var2)) {
  492.          this.appletPrint();
  493.       } else if (amh.getMessage("menuitem.props").equals(var2)) {
  494.          networkProperties();
  495.       } else if (amh.getMessage("menuitem.close").equals(var2)) {
  496.          this.appletClose();
  497.       } else if (this.factory.isStandalone() && amh.getMessage("menuitem.quit").equals(var2)) {
  498.          this.appletQuit();
  499.       }
  500.    }
  501.  
  502.    public static int countApplets() {
  503.       return appletPanels.size();
  504.    }
  505.  
  506.    public static void skipSpace(Reader var0) throws IOException {
  507.       while(field_0 >= 0 && (field_0 == 32 || field_0 == 9 || field_0 == 10 || field_0 == 13)) {
  508.          field_0 = var0.read();
  509.       }
  510.  
  511.    }
  512.  
  513.    public static String scanIdentifier(Reader var0) throws IOException {
  514.       StringBuffer var1;
  515.       for(var1 = new StringBuffer(); field_0 >= 97 && field_0 <= 122 || field_0 >= 65 && field_0 <= 90 || field_0 >= 48 && field_0 <= 57 || field_0 == 95; field_0 = var0.read()) {
  516.          var1.append((char)field_0);
  517.       }
  518.  
  519.       return var1.toString();
  520.    }
  521.  
  522.    public static Hashtable scanTag(Reader var0) throws IOException {
  523.       Hashtable var1 = new Hashtable();
  524.       skipSpace(var0);
  525.  
  526.       while(field_0 >= 0 && field_0 != 62) {
  527.          String var2 = scanIdentifier(var0);
  528.          String var3 = "";
  529.          skipSpace(var0);
  530.          if (field_0 == 61) {
  531.             int var4 = -1;
  532.             field_0 = var0.read();
  533.             skipSpace(var0);
  534.             if (field_0 == 39 || field_0 == 34) {
  535.                var4 = field_0;
  536.                field_0 = var0.read();
  537.             }
  538.  
  539.             StringBuffer var5;
  540.             for(var5 = new StringBuffer(); field_0 > 0 && (var4 < 0 && field_0 != 32 && field_0 != 9 && field_0 != 10 && field_0 != 13 && field_0 != 62 || var4 >= 0 && field_0 != var4); field_0 = var0.read()) {
  541.                var5.append((char)field_0);
  542.             }
  543.  
  544.             if (field_0 == var4) {
  545.                field_0 = var0.read();
  546.             }
  547.  
  548.             skipSpace(var0);
  549.             var3 = var5.toString();
  550.          }
  551.  
  552.          if (!var3.equals("")) {
  553.             var1.put(var2.toLowerCase(), var3);
  554.          }
  555.  
  556.          while(field_0 != 62 && field_0 >= 0 && (field_0 < 97 || field_0 > 122) && (field_0 < 65 || field_0 > 90) && (field_0 < 48 || field_0 > 57) && field_0 != 95) {
  557.             field_0 = var0.read();
  558.          }
  559.       }
  560.  
  561.       return var1;
  562.    }
  563.  
  564.    private static Reader makeReader(InputStream var0) {
  565.       if (encoding != null) {
  566.          try {
  567.             return new BufferedReader(new InputStreamReader(var0, encoding));
  568.          } catch (IOException var2) {
  569.          }
  570.       }
  571.  
  572.       InputStreamReader var1 = new InputStreamReader(var0);
  573.       encoding = var1.getEncoding();
  574.       return new BufferedReader(var1);
  575.    }
  576.  
  577.    public static void parse(URL var0, String var1) throws IOException {
  578.       encoding = var1;
  579.       parse(var0, System.out, new StdAppletViewerFactory());
  580.    }
  581.  
  582.    public static void parse(URL var0) throws IOException {
  583.       parse(var0, System.out, new StdAppletViewerFactory());
  584.    }
  585.  
  586.    public static void parse(URL var0, PrintStream var1, AppletViewerFactory var2) throws IOException {
  587.       boolean var3 = false;
  588.       boolean var4 = false;
  589.       boolean var5 = false;
  590.       String var6 = amh.getMessage("parse.warning.requiresname");
  591.       String var7 = amh.getMessage("parse.warning.paramoutside");
  592.       String var8 = amh.getMessage("parse.warning.applet.requirescode");
  593.       String var9 = amh.getMessage("parse.warning.applet.requiresheight");
  594.       String var10 = amh.getMessage("parse.warning.applet.requireswidth");
  595.       String var11 = amh.getMessage("parse.warning.object.requirescode");
  596.       String var12 = amh.getMessage("parse.warning.object.requiresheight");
  597.       String var13 = amh.getMessage("parse.warning.object.requireswidth");
  598.       String var14 = amh.getMessage("parse.warning.embed.requirescode");
  599.       String var15 = amh.getMessage("parse.warning.embed.requiresheight");
  600.       String var16 = amh.getMessage("parse.warning.embed.requireswidth");
  601.       String var17 = amh.getMessage("parse.warning.appnotLongersupported");
  602.       URLConnection var18 = var0.openConnection();
  603.       Reader var19 = makeReader(var18.getInputStream());
  604.       var0 = var18.getURL();
  605.       int var20 = 1;
  606.       Hashtable var21 = null;
  607.  
  608.       while(true) {
  609.          field_0 = var19.read();
  610.          if (field_0 == -1) {
  611.             var19.close();
  612.             return;
  613.          }
  614.  
  615.          if (field_0 == 60) {
  616.             field_0 = var19.read();
  617.             if (field_0 == 47) {
  618.                field_0 = var19.read();
  619.                String var33 = scanIdentifier(var19);
  620.                if (var33.equalsIgnoreCase("applet") || var33.equalsIgnoreCase("object") || var33.equalsIgnoreCase("embed")) {
  621.                   if (var4 && var21.get("code") == null && var21.get("object") == null) {
  622.                      var1.println(var11);
  623.                      var21 = null;
  624.                   }
  625.  
  626.                   if (var21 != null) {
  627.                      var2.createAppletViewer(field_1, field_2, var0, var21);
  628.                      field_1 += 30;
  629.                      field_2 += 30;
  630.                      Dimension var35 = Toolkit.getDefaultToolkit().getScreenSize();
  631.                      if (field_1 > var35.width - 300 || field_2 > var35.height - 300) {
  632.                         field_1 = 0;
  633.                         field_2 = 2 * var20 * 30;
  634.                         ++var20;
  635.                      }
  636.                   }
  637.  
  638.                   var21 = null;
  639.                   var3 = false;
  640.                   var4 = false;
  641.                   var5 = false;
  642.                }
  643.             } else {
  644.                String var22 = scanIdentifier(var19);
  645.                if (var22.equalsIgnoreCase("param")) {
  646.                   Hashtable var34 = scanTag(var19);
  647.                   String var24 = (String)var34.get("name");
  648.                   if (var24 == null) {
  649.                      var1.println(var6);
  650.                   } else {
  651.                      String var25 = (String)var34.get("value");
  652.                      if (var25 == null) {
  653.                         var1.println(var6);
  654.                      } else if (var21 != null) {
  655.                         var21.put(var24.toLowerCase(), var25);
  656.                      } else {
  657.                         var1.println(var7);
  658.                      }
  659.                   }
  660.                } else if (var22.equalsIgnoreCase("applet")) {
  661.                   var3 = true;
  662.                   var21 = scanTag(var19);
  663.                   if (var21.get("code") == null && var21.get("object") == null) {
  664.                      var1.println(var8);
  665.                      var21 = null;
  666.                   } else if (var21.get("width") == null) {
  667.                      var1.println(var10);
  668.                      var21 = null;
  669.                   } else if (var21.get("height") == null) {
  670.                      var1.println(var9);
  671.                      var21 = null;
  672.                   }
  673.                } else if (var22.equalsIgnoreCase("object")) {
  674.                   var4 = true;
  675.                   var21 = scanTag(var19);
  676.                   if (var21.get("codebase") != null) {
  677.                      var21.remove("codebase");
  678.                   }
  679.  
  680.                   if (var21.get("width") == null) {
  681.                      var1.println(var13);
  682.                      var21 = null;
  683.                   } else if (var21.get("height") == null) {
  684.                      var1.println(var12);
  685.                      var21 = null;
  686.                   }
  687.                } else if (var22.equalsIgnoreCase("embed")) {
  688.                   var5 = true;
  689.                   var21 = scanTag(var19);
  690.                   if (var21.get("code") == null && var21.get("object") == null) {
  691.                      var1.println(var14);
  692.                      var21 = null;
  693.                   } else if (var21.get("width") == null) {
  694.                      var1.println(var16);
  695.                      var21 = null;
  696.                   } else if (var21.get("height") == null) {
  697.                      var1.println(var15);
  698.                      var21 = null;
  699.                   }
  700.                } else if (var22.equalsIgnoreCase("app")) {
  701.                   var1.println(var17);
  702.                   Hashtable var23 = scanTag(var19);
  703.                   var22 = (String)var23.get("class");
  704.                   if (var22 != null) {
  705.                      var23.remove("class");
  706.                      var23.put("code", var22 + ".class");
  707.                   }
  708.  
  709.                   var22 = (String)var23.get("src");
  710.                   if (var22 != null) {
  711.                      var23.remove("src");
  712.                      var23.put("codebase", var22);
  713.                   }
  714.  
  715.                   if (var23.get("width") == null) {
  716.                      var23.put("width", "100");
  717.                   }
  718.  
  719.                   if (var23.get("height") == null) {
  720.                      var23.put("height", "100");
  721.                   }
  722.  
  723.                   printTag(var1, var23);
  724.                   var1.println();
  725.                }
  726.             }
  727.          }
  728.       }
  729.    }
  730.  
  731.    public static void main(String[] var0) {
  732.       Main.main(var0);
  733.    }
  734.  
  735.    private static void checkConnect(URL var0) {
  736.       SecurityManager var1 = System.getSecurityManager();
  737.       if (var1 != null) {
  738.          try {
  739.             Permission var2 = var0.openConnection().getPermission();
  740.             if (var2 != null) {
  741.                var1.checkPermission(var2);
  742.             } else {
  743.                var1.checkConnect(var0.getHost(), var0.getPort());
  744.             }
  745.          } catch (IOException var3) {
  746.             var1.checkConnect(var0.getHost(), var0.getPort());
  747.          }
  748.       }
  749.  
  750.    }
  751.  
  752.    // $FF: synthetic method
  753.    static AppletMessageHandler access$100() {
  754.       return amh;
  755.    }
  756.  
  757.    // $FF: synthetic method
  758.    static String access$200() {
  759.       return defaultSaveFile;
  760.    }
  761.  
  762.    static {
  763.       systemParam.put("codebase", "codebase");
  764.       systemParam.put("code", "code");
  765.       systemParam.put("alt", "alt");
  766.       systemParam.put("width", "width");
  767.       systemParam.put("height", "height");
  768.       systemParam.put("align", "align");
  769.       systemParam.put("vspace", "vspace");
  770.       systemParam.put("hspace", "hspace");
  771.       field_1 = 0;
  772.       field_2 = 0;
  773.       encoding = null;
  774.       amh = new AppletMessageHandler("appletviewer");
  775.    }
  776. }
  777.