home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2003 January / maximum-cd-2003-01.iso / Software / Apps / OperawithJava / ow32enen700b1j.exe / OPERA.JAR / opera / PluginContext.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-11-07  |  6.4 KB  |  263 lines

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