home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2001 March / maximum-cd-2001-03.iso / Powerware / Opera / Opera5_final_java.exe / OPERA.JAR / netscape / javascript / JSObject.class (.txt) < prev   
Encoding:
Java Class File  |  2000-08-16  |  2.4 KB  |  138 lines

  1. package netscape.javascript;
  2.  
  3. import java.applet.Applet;
  4. import opera.PluginContext;
  5.  
  6. public final class JSObject {
  7.    private int js_object;
  8.    private int doc_ptr;
  9.    private Object result;
  10.  
  11.    private JSObject(int var1, int var2) {
  12.       this.js_object = var1;
  13.       this.doc_ptr = var2;
  14.       this.ref();
  15.    }
  16.  
  17.    public Object call(String var1, Object[] var2) throws JSException {
  18.       try {
  19.          synchronized(this){}
  20.  
  21.          Object var3;
  22.          try {
  23.             JSObject var6 = (JSObject)this.getMember(var1);
  24.             if (var6 == null) {
  25.                throw new JSException("Method " + var1 + " not found.");
  26.             }
  27.  
  28.             if (this.startCall(var6, var2)) {
  29.                this.wait();
  30.                if (this.result instanceof JSException) {
  31.                   throw (JSException)this.result;
  32.                }
  33.             } else {
  34.                this.result = null;
  35.             }
  36.  
  37.             var3 = this.result;
  38.          } catch (Throwable var9) {
  39.             throw var9;
  40.          }
  41.  
  42.          return var3;
  43.       } catch (InterruptedException var10) {
  44.          return null;
  45.       }
  46.    }
  47.  
  48.    public Object eval(String var1) throws JSException {
  49.       try {
  50.          synchronized(this){}
  51.  
  52.          Object var2;
  53.          try {
  54.             if (this.startEval(var1)) {
  55.                this.wait();
  56.                if (this.result instanceof JSException) {
  57.                   throw (JSException)this.result;
  58.                }
  59.             } else {
  60.                this.result = null;
  61.             }
  62.  
  63.             var2 = this.result;
  64.          } catch (Throwable var7) {
  65.             throw var7;
  66.          }
  67.  
  68.          return var2;
  69.       } catch (InterruptedException var8) {
  70.          return null;
  71.       }
  72.    }
  73.  
  74.    protected void finalize() {
  75.       try {
  76.          this.unref();
  77.          super.finalize();
  78.       } catch (Throwable var1) {
  79.       }
  80.  
  81.    }
  82.  
  83.    public native Object getMember(String var1);
  84.  
  85.    public native Object getSlot(int var1);
  86.  
  87.    public static JSObject getWindow(Applet var0) throws JSException {
  88.       PluginContext var1 = (PluginContext)var0.getAppletContext();
  89.       if (var1 != null) {
  90.          int var2 = var1.getJSWindow();
  91.          if (var2 != 0) {
  92.             return new JSObject(var2, var1.getDocumentPtr());
  93.          }
  94.       }
  95.  
  96.       return null;
  97.    }
  98.  
  99.    private native void ref();
  100.  
  101.    public native void removeMember(String var1);
  102.  
  103.    private void setExceptionResult() {
  104.       this.result = new JSException("JavaScript exception");
  105.    }
  106.  
  107.    public native void setMember(String var1, Object var2);
  108.  
  109.    private void setResult(Object var1) {
  110.       synchronized(this){}
  111.  
  112.       try {
  113.          this.result = var1;
  114.          this.notify();
  115.       } catch (Throwable var4) {
  116.          throw var4;
  117.       }
  118.  
  119.    }
  120.  
  121.    public native void setSlot(int var1, Object var2);
  122.  
  123.    private native boolean startCall(JSObject var1, Object[] var2);
  124.  
  125.    private native boolean startEval(String var1);
  126.  
  127.    public String toString() {
  128.       try {
  129.          Object var1 = this.eval("this.toString()");
  130.          return var1 != null && var1 instanceof String ? (String)var1 : null;
  131.       } catch (JSException var2) {
  132.          return null;
  133.       }
  134.    }
  135.  
  136.    private native void unref();
  137. }
  138.