home *** CD-ROM | disk | FTP | other *** search
/ Australian PC Authority 2001 February / FEB2001.BIN / INTERNET / OPERA / CNET-Opera5_final_java.exe / OPERA.JAR / opera / PluginContext.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-08-15  |  5.1 KB  |  244 lines

  1. package opera;
  2.  
  3. import java.applet.Applet;
  4. import java.applet.AppletContext;
  5. import java.applet.AudioClip;
  6. import java.awt.Image;
  7. import java.awt.Toolkit;
  8. import java.io.IOException;
  9. import java.net.URL;
  10. import java.security.AllPermission;
  11. import java.security.Permission;
  12. import java.util.Enumeration;
  13. import java.util.Hashtable;
  14. import java.util.Vector;
  15. import sun.applet.AppletAudioClip;
  16. import sun.awt.image.URLImageSource;
  17.  
  18. public class PluginContext implements AppletContext {
  19.    protected static Object opera_mutex = new Object();
  20.    private static Hashtable audioCache = new Hashtable();
  21.    private Hashtable panels = new Hashtable();
  22.    public int document_ptr = 0;
  23.    private int nextInstance = 0;
  24.    private PluginClassLoader loader = null;
  25.    private static Hashtable imageCache = new Hashtable();
  26.  
  27.    public PluginContext(int var1) {
  28.       this.document_ptr = var1;
  29.    }
  30.  
  31.    private static void checkConnect(URL var0) {
  32.       SecurityManager var1 = System.getSecurityManager();
  33.       if (var1 != null) {
  34.          try {
  35.             Permission var2 = var0.openConnection().getPermission();
  36.             if (var2 != null) {
  37.                var1.checkPermission(var2);
  38.             } else {
  39.                var1.checkConnect(var0.getHost(), var0.getPort());
  40.             }
  41.          } catch (IOException var3) {
  42.             var1.checkConnect(var0.getHost(), var0.getPort());
  43.          }
  44.       }
  45.  
  46.    }
  47.  
  48.    protected void cleanup() {
  49.       if (this.loader != null) {
  50.          ThreadGroup var1 = this.loader.getThreadGroup();
  51.          this.loader = null;
  52.       }
  53.  
  54.    }
  55.  
  56.    void destroyPanel(int var1) {
  57.       try {
  58.          PluginPanel var2 = (PluginPanel)this.panels.get(new Integer(var1));
  59.          if (var2 != null) {
  60.             var2.destroyApplet();
  61.             this.panels.remove(new Integer(var1));
  62.          }
  63.  
  64.          if (this.panels.size() == 0) {
  65.             PluginContextManager.deleteContext(this);
  66.          }
  67.       } catch (Exception var3) {
  68.          ((Throwable)var3).printStackTrace(System.err);
  69.       }
  70.  
  71.    }
  72.  
  73.    public Applet getApplet(String var1) {
  74.       var1 = var1.toLowerCase();
  75.       Hashtable var3 = this.panels;
  76.       synchronized(var3){}
  77.  
  78.       Enumeration var2;
  79.       try {
  80.          var2 = this.panels.elements();
  81.       } catch (Throwable var6) {
  82.          throw var6;
  83.       }
  84.  
  85.       while(var2.hasMoreElements()) {
  86.          PluginPanel var8 = (PluginPanel)var2.nextElement();
  87.          String var4 = var8.getParameter("name");
  88.          if (var4 != null) {
  89.             var4 = var4.toLowerCase();
  90.          }
  91.  
  92.          if (var1.equals(var4)) {
  93.             return var8.getApplet();
  94.          }
  95.       }
  96.  
  97.       return null;
  98.    }
  99.  
  100.    public Enumeration getApplets() {
  101.       Vector var1 = new Vector();
  102.       Hashtable var3 = this.panels;
  103.       synchronized(var3){}
  104.  
  105.       Enumeration var2;
  106.       try {
  107.          var2 = this.panels.elements();
  108.       } catch (Throwable var5) {
  109.          throw var5;
  110.       }
  111.  
  112.       while(var2.hasMoreElements()) {
  113.          var1.addElement(((PluginPanel)var2.nextElement()).getApplet());
  114.       }
  115.  
  116.       return var1.elements();
  117.    }
  118.  
  119.    public AudioClip getAudioClip(URL var1) {
  120.       checkConnect(var1);
  121.       Hashtable var3 = audioCache;
  122.       synchronized(var3){}
  123.  
  124.       Object var2;
  125.       try {
  126.          Object var5 = (AudioClip)audioCache.get(var1);
  127.          if (var5 == null) {
  128.             var5 = new AppletAudioClip(var1);
  129.             audioCache.put(var1, var5);
  130.          }
  131.  
  132.          var2 = var5;
  133.       } catch (Throwable var7) {
  134.          throw var7;
  135.       }
  136.  
  137.       return (AudioClip)var2;
  138.    }
  139.  
  140.    public int getDocumentPtr() {
  141.       return this.document_ptr;
  142.    }
  143.  
  144.    public Image getImage(URL var1) {
  145.       Hashtable var3 = imageCache;
  146.       synchronized(var3){}
  147.  
  148.       Image var2;
  149.       try {
  150.          Image var5 = (Image)imageCache.get(var1);
  151.          if (var5 == null) {
  152.             var5 = Toolkit.getDefaultToolkit().createImage(new URLImageSource(var1));
  153.             imageCache.put(var1, var5);
  154.          }
  155.  
  156.          var2 = var5;
  157.       } catch (Throwable var7) {
  158.          throw var7;
  159.       }
  160.  
  161.       return var2;
  162.    }
  163.  
  164.    public native int getJSWindow();
  165.  
  166.    public PluginPanel getPanel(int var1) {
  167.       return (PluginPanel)this.panels.get(new Integer(var1));
  168.    }
  169.  
  170.    public static void init(String[] var0) throws SecurityException {
  171.       SecurityManager var1 = System.getSecurityManager();
  172.       if (var1 != null) {
  173.          var1.checkPermission(new AllPermission());
  174.       }
  175.  
  176.       for(int var2 = 0; var2 < var0.length / 2; ++var2) {
  177.          System.setProperty(var0[var2 * 2], var0[var2 * 2 + 1]);
  178.       }
  179.  
  180.       URL.setURLStreamHandlerFactory(new StreamHandlerFactory());
  181.    }
  182.  
  183.    public int newPanel(String[] var1, String[] var2, String[] var3, String[] var4, String var5) {
  184.       try {
  185.          Hashtable var6 = new Hashtable();
  186.  
  187.          for(int var7 = 0; var7 < var3.length; ++var7) {
  188.             var6.put(var3[var7].toLowerCase(), var4[var7]);
  189.          }
  190.  
  191.          Hashtable var8 = new Hashtable();
  192.  
  193.          for(int var9 = 0; var9 < var1.length; ++var9) {
  194.             var8.put(var1[var9].toLowerCase(), var2[var9]);
  195.          }
  196.  
  197.          PluginPanel var10 = new PluginPanel(this, var8, var6, new URL(var5));
  198.          Hashtable var12 = this.panels;
  199.          synchronized(var12){}
  200.  
  201.          int var11;
  202.          try {
  203.             this.panels.put(new Integer(this.nextInstance), var10);
  204.             var11 = this.nextInstance++;
  205.          } catch (Throwable var16) {
  206.             throw var16;
  207.          }
  208.  
  209.          return var11;
  210.       } catch (Exception var17) {
  211.          ((Throwable)var17).printStackTrace(System.err);
  212.          return -1;
  213.       }
  214.    }
  215.  
  216.    protected void setClassLoader(PluginClassLoader var1) {
  217.       if (this.loader == null) {
  218.          this.loader = var1;
  219.       }
  220.  
  221.    }
  222.  
  223.    private native void showDocument(String var1, String var2);
  224.  
  225.    public void showDocument(URL var1) {
  226.       this.showDocument(var1, "_self");
  227.    }
  228.  
  229.    public void showDocument(URL var1, String var2) {
  230.       Object var3 = opera_mutex;
  231.       synchronized(var3){}
  232.  
  233.       try {
  234.          String var5 = var1.toString();
  235.          this.showDocument(var5, var2);
  236.       } catch (Throwable var7) {
  237.          throw var7;
  238.       }
  239.  
  240.    }
  241.  
  242.    public native void showStatus(String var1);
  243. }
  244.