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