1 Clazz.declarePackage ("jalview.javascript");
\r
2 Clazz.load (null, "jalview.javascript.JSFunctionExec", ["jalview.bin.JalviewLite", "java.lang.StringBuffer", "$.Thread", "java.net.MalformedURLException", "$.URL", "netscape.javascript.JSException", "$.JSObject"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
5 this.jsExecQueue = null;
\r
6 this.executor = null;
\r
7 Clazz.instantialize (this, arguments);
\r
8 }, jalview.javascript, "JSFunctionExec", null, Runnable);
\r
9 Clazz.makeConstructor (c$,
\r
11 this.jvlite = applet;
\r
12 this.jsExecQueue = this.jvlite.getJsExecQueue ();
\r
13 this.jvlite.setExecutor (this);
\r
14 }, "jalview.bin.JalviewLite");
\r
15 Clazz.overrideMethod (c$, "finalize",
\r
18 this.executor = null;
\r
19 if (this.jsExecQueue != null) {
\r
20 this.jsExecQueue.clear ();
\r
21 }this.jsExecQueue = null;
\r
23 Clazz.defineMethod (c$, "stopQueue",
\r
25 if (this.jsExecQueue != null) {
\r
28 q = this.jsExecQueue;
\r
29 this.jsExecQueue = null;
\r
31 for (var jx, $jx = q.iterator (); $jx.hasNext () && ((jx = $jx.next ()) || true);) {
\r
34 q.removeAllElements ();
\r
37 }}}this.jvlite = null;
\r
38 this.executor = null;
\r
40 Clazz.defineMethod (c$, "run",
\r
42 while (this.jsExecQueue != null) {
\r
43 if (this.jsExecQueue.size () > 0) {
\r
44 var r = this.jsExecQueue.elementAt (0);
\r
45 this.jsExecQueue.removeElementAt (0);
\r
49 if (Clazz.exceptionOf (e$$, Exception)) {
\r
52 ex.printStackTrace ();
\r
54 } else if (Clazz.exceptionOf (e$$, Error)) {
\r
57 ex.printStackTrace ();
\r
66 this.jsExecQueue.wait (1000);
\r
68 if (Clazz.exceptionOf (ex, Exception)) {
\r
75 Clazz.defineMethod (c$, "executeJavascriptFunction",
\r
76 function (_listener, objects) {
\r
77 this.executeJavascriptFunction (false, _listener, objects);
\r
79 Clazz.defineMethod (c$, "executeJavascriptFunction",
\r
80 function (async, _listener, $arguments) {
\r
81 this.executeJavascriptFunction (async, _listener, $arguments, null);
\r
83 Clazz.defineMethod (c$, "executeJavascriptFunction",
\r
84 function (async, _listener, $arguments, dbgMsg) {
\r
85 var objects = new Array ($arguments != null ? $arguments.length : 0);
\r
86 if ($arguments != null) {
\r
87 System.arraycopy ($arguments, 0, objects, 0, $arguments.length);
\r
88 }var jsex = new Array (1);
\r
89 var exec = ((Clazz.isClassDefined ("jalview.javascript.JSFunctionExec$1") ? 0 : jalview.javascript.JSFunctionExec.$JSFunctionExec$1$ ()), Clazz.innerTypeInstance (jalview.javascript.JSFunctionExec$1, this, Clazz.cloneFinals ("dbgMsg", dbgMsg, "_listener", _listener, "objects", objects, "jsex", jsex, "async", async)));
\r
91 if (this.executor == null) {
\r
92 this.executor = new Thread ( new jalview.javascript.JSFunctionExec (this.jvlite));
\r
93 this.executor.start ();
\r
95 this.jsExecQueue.addElement (exec);
\r
96 this.jsExecQueue.notify ();
\r
99 if (jsex[0] != null) {
\r
101 }}}, "~B,~S,~A,~S");
\r
102 c$.$JSFunctionExec$1$ = function () {
\r
103 Clazz.pu$h(self.c$);
\r
104 c$ = Clazz.declareAnonymous (jalview.javascript, "JSFunctionExec$1", null, Runnable);
\r
105 Clazz.defineMethod (c$, "run",
\r
108 var scriptObject = null;
\r
110 scriptObject = netscape.javascript.JSObject.getWindow (this.b$["jalview.javascript.JSFunctionExec"].jvlite);
\r
112 if (Clazz.exceptionOf (ex, Exception)) {
\r
117 ;if (scriptObject != null) {
\r
118 if (jalview.bin.JalviewLite.debug && this.f$.dbgMsg != null) {
\r
119 System.err.println (this.f$.dbgMsg);
\r
120 }scriptObject.call (this.f$._listener, this.f$.objects);
\r
122 if (Clazz.exceptionOf (jex, Exception)) {
\r
123 if (!(Clazz.instanceOf (jex, java.net.MalformedURLException))) {
\r
124 if (jalview.bin.JalviewLite.debug) {
\r
125 System.err.println (jex);
\r
126 }if (Clazz.instanceOf (jex, netscape.javascript.JSException) && this.b$["jalview.javascript.JSFunctionExec"].jvlite.jsfallbackEnabled) {
\r
127 this.f$.jsex[0] = jex;
\r
128 if (jalview.bin.JalviewLite.debug) {
\r
129 System.err.println ("Falling back to javascript: url call");
\r
130 }var sb = new StringBuffer ("javascript:" + this.f$._listener + "(");
\r
131 for (var i = 0; this.f$.objects != null && i < this.f$.objects.length; i++) {
\r
135 if (this.f$.objects[i] != null && !(this.f$.objects[i].getClass ().getName ().indexOf ("jalview") == 0)) {
\r
136 sb.append (this.f$.objects[i].toString ());
\r
140 if (jalview.bin.JalviewLite.debug) {
\r
141 System.err.println (sb.toString ());
\r
144 url = new java.net.URL (sb.toString ());
\r
145 this.b$["jalview.javascript.JSFunctionExec"].jvlite.getAppletContext ().showDocument (url);
\r
148 if (Clazz.exceptionOf (uex, Exception)) {
\r
154 }if (jex != null) {
\r
155 if (this.f$.async) {
\r
156 jex.printStackTrace ();
\r
158 this.f$.jsex[0] = jex;
\r