home *** CD-ROM | disk | FTP | other *** search
- package opera;
-
- import java.applet.Applet;
- import java.applet.AppletContext;
- import java.applet.AudioClip;
- import java.awt.Image;
- import java.awt.Toolkit;
- import java.io.IOException;
- import java.net.URL;
- import java.security.AllPermission;
- import java.security.Permission;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Vector;
- import sun.applet.AppletAudioClip;
- import sun.awt.image.URLImageSource;
-
- public class PluginContext implements AppletContext {
- protected static Object opera_mutex = new Object();
- private static Hashtable audioCache = new Hashtable();
- private Hashtable panels = new Hashtable();
- public int document_ptr = 0;
- private int nextInstance = 0;
- private PluginClassLoader loader = null;
- private static Hashtable imageCache = new Hashtable();
-
- public PluginContext(int var1) {
- this.document_ptr = var1;
- }
-
- private static void checkConnect(URL var0) {
- SecurityManager var1 = System.getSecurityManager();
- if (var1 != null) {
- try {
- Permission var2 = var0.openConnection().getPermission();
- if (var2 != null) {
- var1.checkPermission(var2);
- } else {
- var1.checkConnect(var0.getHost(), var0.getPort());
- }
- } catch (IOException var3) {
- var1.checkConnect(var0.getHost(), var0.getPort());
- }
- }
-
- }
-
- protected void cleanup() {
- if (this.loader != null) {
- ThreadGroup var1 = this.loader.getThreadGroup();
- this.loader = null;
- }
-
- }
-
- void destroyPanel(int var1) {
- try {
- PluginPanel var2 = (PluginPanel)this.panels.get(new Integer(var1));
- if (var2 != null) {
- var2.destroyApplet();
- this.panels.remove(new Integer(var1));
- }
-
- if (this.panels.size() == 0) {
- PluginContextManager.deleteContext(this);
- }
- } catch (Exception var3) {
- ((Throwable)var3).printStackTrace(System.err);
- }
-
- }
-
- public Applet getApplet(String var1) {
- var1 = var1.toLowerCase();
- Hashtable var3 = this.panels;
- synchronized(var3){}
-
- Enumeration var2;
- try {
- var2 = this.panels.elements();
- } catch (Throwable var6) {
- throw var6;
- }
-
- while(var2.hasMoreElements()) {
- PluginPanel var8 = (PluginPanel)var2.nextElement();
- String var4 = var8.getParameter("name");
- if (var4 != null) {
- var4 = var4.toLowerCase();
- }
-
- if (var1.equals(var4)) {
- return var8.getApplet();
- }
- }
-
- return null;
- }
-
- public Enumeration getApplets() {
- Vector var1 = new Vector();
- Hashtable var3 = this.panels;
- synchronized(var3){}
-
- Enumeration var2;
- try {
- var2 = this.panels.elements();
- } catch (Throwable var5) {
- throw var5;
- }
-
- while(var2.hasMoreElements()) {
- var1.addElement(((PluginPanel)var2.nextElement()).getApplet());
- }
-
- return var1.elements();
- }
-
- public AudioClip getAudioClip(URL var1) {
- checkConnect(var1);
- Hashtable var3 = audioCache;
- synchronized(var3){}
-
- Object var2;
- try {
- Object var5 = (AudioClip)audioCache.get(var1);
- if (var5 == null) {
- var5 = new AppletAudioClip(var1);
- audioCache.put(var1, var5);
- }
-
- var2 = var5;
- } catch (Throwable var7) {
- throw var7;
- }
-
- return (AudioClip)var2;
- }
-
- public int getDocumentPtr() {
- return this.document_ptr;
- }
-
- public Image getImage(URL var1) {
- Hashtable var3 = imageCache;
- synchronized(var3){}
-
- Image var2;
- try {
- Image var5 = (Image)imageCache.get(var1);
- if (var5 == null) {
- var5 = Toolkit.getDefaultToolkit().createImage(new URLImageSource(var1));
- imageCache.put(var1, var5);
- }
-
- var2 = var5;
- } catch (Throwable var7) {
- throw var7;
- }
-
- return var2;
- }
-
- public native int getJSWindow();
-
- public PluginPanel getPanel(int var1) {
- return (PluginPanel)this.panels.get(new Integer(var1));
- }
-
- public static void init(String[] var0) throws SecurityException {
- SecurityManager var1 = System.getSecurityManager();
- if (var1 != null) {
- var1.checkPermission(new AllPermission());
- }
-
- for(int var2 = 0; var2 < var0.length / 2; ++var2) {
- System.setProperty(var0[var2 * 2], var0[var2 * 2 + 1]);
- }
-
- URL.setURLStreamHandlerFactory(new StreamHandlerFactory());
- }
-
- public int newPanel(String[] var1, String[] var2, String[] var3, String[] var4, String var5) {
- try {
- Hashtable var6 = new Hashtable();
-
- for(int var7 = 0; var7 < var3.length; ++var7) {
- var6.put(var3[var7].toLowerCase(), var4[var7]);
- }
-
- Hashtable var8 = new Hashtable();
-
- for(int var9 = 0; var9 < var1.length; ++var9) {
- var8.put(var1[var9].toLowerCase(), var2[var9]);
- }
-
- PluginPanel var10 = new PluginPanel(this, var8, var6, new URL(var5));
- Hashtable var12 = this.panels;
- synchronized(var12){}
-
- int var11;
- try {
- this.panels.put(new Integer(this.nextInstance), var10);
- var11 = this.nextInstance++;
- } catch (Throwable var16) {
- throw var16;
- }
-
- return var11;
- } catch (Exception var17) {
- ((Throwable)var17).printStackTrace(System.err);
- return -1;
- }
- }
-
- protected void setClassLoader(PluginClassLoader var1) {
- if (this.loader == null) {
- this.loader = var1;
- }
-
- }
-
- private native void showDocument(String var1, String var2);
-
- public void showDocument(URL var1) {
- this.showDocument(var1, "_self");
- }
-
- public void showDocument(URL var1, String var2) {
- Object var3 = opera_mutex;
- synchronized(var3){}
-
- try {
- String var5 = var1.toString();
- this.showDocument(var5, var2);
- } catch (Throwable var7) {
- throw var7;
- }
-
- }
-
- public native void showStatus(String var1);
- }
-