/[gcjwebplugin]/gcjwebplugin/src/gnu/gcjwebplugin/AppletViewer.java
ViewVC logotype

Diff of /gcjwebplugin/src/gnu/gcjwebplugin/AppletViewer.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by mkoch, Mon Nov 3 17:00:47 2003 UTC revision 1.3 by fitzsim, Thu Nov 6 06:02:12 2003 UTC
# Line 1  Line 1 
1  /* gcjwebplugin - Webbrowser plugin to execute Java (tm) applets.  /* AppletViewer.java -
2     Copyright (C) 2003  Thomas Fitzsimmons <fitzsim@redhat.com>     Copyright (C) 2003  Thomas Fitzsimmons <fitzsim@redhat.com>
3    
4  This program is free software; you can redistribute it and/or modify  This program is free software; you can redistribute it and/or modify
# Line 36  exception statement from your version. * Line 36  exception statement from your version. *
36    
37  package gnu.gcjwebplugin;  package gnu.gcjwebplugin;
38    
39    import gnu.java.awt.EmbeddedWindow;
40  import gnu.getopt.Getopt;  import gnu.getopt.Getopt;
41  import gnu.getopt.LongOpt;  import gnu.getopt.LongOpt;
42  import gnu.java.awt.EmbeddedWindow;  import java.io.*;
43  import java.applet.Applet;  import java.applet.Applet;
44  import java.awt.Frame;  import java.awt.Frame;
45  import java.io.BufferedReader;  import java.util.Map;
46  import java.io.BufferedWriter;  import java.util.HashMap;
47  import java.io.InputStreamReader;  import java.util.List;
48  import java.io.IOException;  import java.util.Iterator;
49  import java.io.OutputStreamWriter;  import java.util.ArrayList;
50    import java.net.URL;
51    
52  public class AppletViewer extends Frame  public class AppletViewer extends Frame
53  {  {
   String code;  
   String codebase;  
   String archive;  
   String documentbase;  
   String parameters;  
   int width = 200;  
   int height = 200;  
   int xid;  
   boolean pluginmode;  
   Frame frame;  
54    Applet applet;    Applet applet;
   
55    AppletLoader loader = new AppletLoader();    AppletLoader loader = new AppletLoader();
56    
57    AppletViewer ()    URL documentbaseURL;
   {  
   }  
58    
59    boolean pluginMode ()    AppletViewer ()
   {  
     return pluginmode;  
   }  
   
   void createEmbeddedWindow (int xid)  
60    {    {
     System.err.println ("appletviewer: set xid to " + xid);  
     frame = new EmbeddedWindow (xid);  
     frame.setSize(width,height);  
61    }    }
62    
63    void loadApplet ()    void loadApplet ()
64    {    {
     if (code != null)  
       loader.setCode (code);  
     if (codebase != null)  
       loader.setCodeBase (codebase);  
     if (archive != null)  
       loader.setArchive (archive);  
     if (documentbase != null)  
       loader.setDocumentBase (documentbase);  
     applet = loader.loadApplet();  
65      applet.init();      applet.init();
66    }    }
67    
68    void showApplet ()    public void show ()
69    {    {
70      if (frame != null)      System.err.println ("appletviewer: show applet");
71        {  
72          System.err.println ("appletviewer: show applet");      loader.setFrame (this);
73          loader.setFrame (frame);  
74          frame.show();      super.show ();
75        }  
76      applet.start();      applet.start();
77    }    }
78    
79    void parseArgs (String [] args)    public static void main (String[] args)
80        throws IOException
81    {    {
82        List appletTags = new ArrayList ();
83        URL documentbase = null;
84    
85      LongOpt[] longOptions = new LongOpt[]      LongOpt[] longOptions = new LongOpt[]
86        {        {
87          new LongOpt ("code",         LongOpt.REQUIRED_ARGUMENT, null, 0),          new LongOpt ("code",         LongOpt.REQUIRED_ARGUMENT, null, 0),
# Line 115  public class AppletViewer extends Frame Line 91  public class AppletViewer extends Frame
91          new LongOpt ("parameters",   LongOpt.REQUIRED_ARGUMENT, null, 0),          new LongOpt ("parameters",   LongOpt.REQUIRED_ARGUMENT, null, 0),
92          new LongOpt ("width",        LongOpt.REQUIRED_ARGUMENT, null, 0),          new LongOpt ("width",        LongOpt.REQUIRED_ARGUMENT, null, 0),
93          new LongOpt ("height",       LongOpt.REQUIRED_ARGUMENT, null, 0),          new LongOpt ("height",       LongOpt.REQUIRED_ARGUMENT, null, 0),
         new LongOpt ("plugin",       LongOpt.NO_ARGUMENT,       null, 0),  
94        };        };
95    
96        Getopt opts = new Getopt("appletviewer", args, "", longOptions);
97    
98        // Parse command line, placing all option arguments at the start
99        // of args, all non-options at the end, and setting optind to the
100        // index of the first non-option argument.
101        while (opts.getopt() != -1);
102    
103        // optind now points to the first non-option argument.
104        System.out.println ("raw arguments:");
105        for (int i = 0; i < args.length; i++)
106          {
107            System.out.println (" " + args[i]);
108          }
109    
110        // Handle each file specified on the command line.
111        for (int i = opts.getOptind (); i < args.length; i++)
112          {
113            appletTags.addAll (AppletTag.parseAppletTags (args[i]));
114          }
115    
116        System.out.println ("documentbase: " + documentbase);
117        System.out.println ("parsed applet tags:");
118        for (int i = 0; i < appletTags.size(); i++)
119          {
120            System.out.println (" tag " + i + ":");
121            System.out.println ((AppletTag) appletTags.get (i));
122          }
123    
124        /*
125      int optVal;      int optVal;
126      String arg;      String arg;
127      int longIndex;      int longIndex;
# Line 132  public class AppletViewer extends Frame Line 136  public class AppletViewer extends Frame
136              switch (longIndex)              switch (longIndex)
137                {                {
138                case 0:                case 0:
139                  code = opts.getOptarg();                  if (!parseHTML)
140                      tag.code = opts.getOptarg();
141                  break;                  break;
142                case 1:                case 1:
143                  codebase = opts.getOptarg();                  if (!parseHTML)
144                      tag.codebase = opts.getOptarg();
145                  break;                  break;
146                case 2:                case 2:
147                  archive = opts.getOptarg();                  if (!parseHTML)
148                      tag.archives = opts.getOptarg();
149                  break;                  break;
150                case 3:                case 3:
151                  documentbase = opts.getOptarg();                  // FIXME: documentbase
152                  break;                  break;
153                case 4:                case 4:
154                  // FIXME: Handle multiple parameters.                  // FIXME: Handle multiple parameters.
155                  parameters = opts.getOptarg();                  //              tag.parameters = opts.getOptarg();
156                  break;                  break;
157                case 5:                case 5:
158                  width = Integer.parseInt(opts.getOptarg());                  tag.dimensions.width = Integer.parseInt(opts.getOptarg());
159                  break;                  break;
160                case 6:                case 6:
161                  height = Integer.parseInt(opts.getOptarg());                  tag.dimensions.height = Integer.parseInt(opts.getOptarg());
                 break;  
               case 7:  
                 pluginmode = true;  
162                  break;                  break;
163                }                }
164            }            }
165        }        }
     if (!pluginmode)  
       {  
         System.err.println ("AppletViewer: standalone mode");  
         frame = this;  
       }  
166    
167      System.err.println ("AppletViewer:\n" +      System.err.println ("AppletViewer:\n" +
168                          "code: " + code + "\n" +                          "code: " + tag.code + "\n" +
169                          "codebase: " + codebase + "\n" +                          "codebase: " + tag.codebase + "\n" +
170                          "archive: " + archive + "\n" +                          "archive: " + tag.archives + "\n" +
171                          "documentbase: " + documentbase + "\n" +                          "parameters: " + tag.parameters + "\n" +
172                          "parameters: " + parameters + "\n" +                          "width: " + tag.dimensions.width + "\n" +
173                          "width: " + width + "\n" +                          "height: " + tag.dimensions.height);
174                          "height: " + height + "\n" +      */
                         "pluginmode: " + pluginmode);  
   }  
   
   public static void main (String[] args) throws IOException  
   {  
     BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in));  
     BufferedWriter stdout = new BufferedWriter (new OutputStreamWriter (System.out));  
     String input;  
175    
176      AppletViewer viewer = new AppletViewer ();      AppletViewer viewer = new AppletViewer ();
     viewer.parseArgs(args);  
     if (viewer.pluginMode())  
       {  
         // Tell plugin that we've started.  
         stdout.write ("running", 0, "running".length());  
         stdout.newLine ();  
         stdout.flush ();  
   
         System.err.println ("appletviewer wrote running");  
   
         while (true)  
           {  
             // Wait for input from plugin on stdin.  
             input = stdin.readLine ();  
   
             System.err.println ("  PIPE: appletviewer read " + input);  
177    
178              // Return confirmation string to plugin.      viewer.loadApplet ();
179              stdout.write (input, 0, input.length());      viewer.show ();
             stdout.newLine ();  
             stdout.flush ();  
   
             System.err.println ("  PIPE: appletviewer wrote " + input);  
   
             if (input.compareTo ("xid") == 0)  
               {  
                 input = stdin.readLine();  
   
                 System.err.println ("  PIPE: appletviewer read " + input);  
   
                 // Return confirmation string to plugin.  
                 stdout.write (input, 0, input.length());  
                 stdout.newLine ();  
                 stdout.flush ();  
   
                 System.err.println ("  PIPE: appletviewer wrote " + input);  
   
                 // Read the plugin window's xid in hexadecimal.  
                 int xid = Integer.decode(input).intValue();  
                 viewer.createEmbeddedWindow (xid);  
                 viewer.loadApplet();  
                 viewer.showApplet();  
               }  
             else if (input.compareTo ("shutdown") == 0)  
               {  
                 System.err.println ("appletviewer: shutting down");  
                 System.exit(0);  
               }  
           }  
       }  
     else  
       {  
         viewer.loadApplet();  
         viewer.showApplet();  
       }  
180    }    }
181  }  }

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26