summaryrefslogtreecommitdiffstats
path: root/khtml/java/org/kde/javascript/JSObject.java
diff options
context:
space:
mode:
Diffstat (limited to 'khtml/java/org/kde/javascript/JSObject.java')
-rw-r--r--khtml/java/org/kde/javascript/JSObject.java183
1 files changed, 0 insertions, 183 deletions
diff --git a/khtml/java/org/kde/javascript/JSObject.java b/khtml/java/org/kde/javascript/JSObject.java
deleted file mode 100644
index 11e7f9f99..000000000
--- a/khtml/java/org/kde/javascript/JSObject.java
+++ /dev/null
@@ -1,183 +0,0 @@
-package org.kde.javascript;
-
-import java.applet.Applet;
-import org.kde.kjas.server.KJASAppletContext;
-import org.kde.kjas.server.Main;
-
-public class JSObject extends netscape.javascript.JSObject {
- public String returnvalue = null;
- public Thread thread;
-
- private String jsobject;
- private int id;
- private Applet applet;
- private String appletID = null;
-
- /* JavaScript code:
- * __lc=[[JS objects],call func(index,script,appletname,isglobal)]
- */
- private final static String decls = "if(!window.__lc) window.__lc=[[window],function(i,s,a,g){var v;var len=window.__lc[0].length;if(i>=len)v='E unknown object';else{var r;try{r=eval((g?'':'window.__lc[0][i]')+s);}catch(e){v='E '+e;r='E ';}finally{var t=typeof r;if(t=='undefined')v='V ';else if(t=='number')v='N '+r;else if(t=='string'){if(r!='E ')v='S '+r;}else{window.__lc[0][len]=r;v=''+len+' '+(r==window.__lc?'[array]':r);}}}a.__lc_ret=v},0]";
-
- public JSObject(Applet a, String name, int _id) {
- Main.info("JSObject.ctor: " + name);
- jsobject = new String(name);
- applet = a;
- id = _id;
- KJASAppletContext kc = (KJASAppletContext)applet.getAppletContext();
- appletID = kc.getAppletID(a);
- if (id == 0) {
- kc.evaluateJavaScript(decls, appletID, null);
- }
- }
-
- int getId() {
- return id;
- }
-
- private String escapeString(String string) {
- StringBuffer sb = new StringBuffer();
- int idx = 0;
- boolean cr = false;
- char [] chars = string.toCharArray();
- while (idx < chars.length) {
- if (cr && chars[idx] != '\n') {
- cr = false;
- sb.append("\\n");
- }
- switch (chars[idx]) {
- case '\\':
- sb.append("\\\\");
- break;
- case '"':
- sb.append("\\\"");
- break;
- case '\n':
- cr = false;
- sb.append("\\n");
- break;
- case '\r':
- cr = true;
- break;
- default:
- sb.append(chars[idx]);
- }
- idx++;
- }
- if (cr)
- sb.append("\\n");
- return sb.toString();
- }
-
- private Object evaluate(String script, boolean global) throws netscape.javascript.JSException {
- Main.info("evaluate (\"" + script + "\")");
-
- KJASAppletContext kc = (KJASAppletContext) applet.getAppletContext();
- //String appletname = kc.getAppletName(appletID);
- thread = Thread.currentThread();
-
- if (!kc.evaluateJavaScript("window.__lc[1](" + id + ",\"" + escapeString(script) + "\",this" + (global ? ",true)" : ")"), appletID, this)) {
- Main.debug("evaluate on not active applet");
- return null;
- }
- boolean timedout = true;
- try {
- Thread.sleep(30000);
- } catch (InterruptedException ex) {
- timedout = false;
- }
- thread = null;
- if (timedout || returnvalue == null)
- return null;
-
- /* lets see what we've got */
- String retval = returnvalue;
- int pos = retval.indexOf(' ');
- String type = retval.substring(0, pos);
- if (type.equals("V")) // Void
- return null;
- String value = retval.substring(pos+1);
- if (type.equals("E")) // Error
- throw new netscape.javascript.JSException("Script error: " + value);
- Main.info("value=" + value + " (type=" + type + ")");
- if (type.equals("N")) // Number
- return new Double(value);
- if (type.equals("S")) // String
- return value;
-
- /* Is it an applet? */
- if (value.startsWith("[object APPLET ref=")) {
- int p1 = value.indexOf('=');
- int p2 = value.indexOf(']', p1+1);
- int applethashcode = Integer.parseInt(value.substring(p1+1, p2));
- java.util.Enumeration e = kc.getApplets();
- while (e.hasMoreElements()) {
- Applet app = (Applet) e.nextElement();
- if (app.hashCode() == applethashcode)
- return app;
- }
- return null;
- }
- /* Is it a Java object then? */
- if (value.startsWith("[object ") && value.indexOf("ref=") > 0) {
- int p1 = value.indexOf("ref=");
- int p2 = value.indexOf(']', p1+4);
- int objecthashcode = Integer.parseInt(value.substring(p1+4, p2));
- return kc.getJSReferencedObject(applet, objecthashcode);
- }
- /* Ok, make it a JSObject */
- return new JSObject(applet, value, Integer.parseInt(type));
- }
- private String convertValueJ2JS(Object o) {
- if (o == null)
- return new String("null");
- if (o instanceof java.lang.Number || o instanceof java.lang.Boolean)
- return o.toString();
- if (o instanceof netscape.javascript.JSObject)
- return new String("window.__lc[0][" + ((JSObject)o).getId() + "]");
- return new String("\"" + escapeString(o.toString()) + "\"");
- }
- public Object call(String func, Object [] args) throws netscape.javascript.JSException {
- Main.info("JSObject.call: " + jsobject + "." + func);
- String script = new String("." + func + "(");
- for (int i = 0; args != null && i < args.length; i++)
- script += (i > 0 ? "," : "") + convertValueJ2JS(args[i]);
- script += ")";
- return evaluate(script, false);
- }
- public Object eval(String s) throws netscape.javascript.JSException {
- return evaluate(s, true);
- }
- public boolean equals(Object obj) {
- Main.info("JSObject.equals");
- return super.equals(obj);
- }
- public Object getMember(String name) throws netscape.javascript.JSException {
- Main.info("JSObject.getMember: " + jsobject + "." + name);
- return evaluate("." + name, false);
- }
- public void setMember(String name, java.lang.Object o) throws netscape.javascript.JSException {
- Main.info("JSObject.setMember: " + jsobject + "." + name);
- evaluate("." + name + "=" + convertValueJ2JS(o), false);
- }
- public void removeMember(String name) throws netscape.javascript.JSException {
- Main.info("JSObject.removeMember: " + jsobject + "." + name);
- evaluate("." + name + "=null", false);
- }
- /* get array element; JS: this[index] */
- public Object getSlot(int index)throws netscape.javascript.JSException {
- Main.info("JSObject.getSlot: " + jsobject + "[" + index + "]");
- return evaluate("[" + index + "]", false);
- }
- public void setSlot(int index, Object o) throws netscape.javascript.JSException {
- Main.info("JSObject.setSlot: " + jsobject + "[" + index + "]");
- evaluate("[" + index + "]=" + convertValueJ2JS(o), false);
- }
- public String toString(){
- Main.info("JSObject.toString: " + jsobject);
- return new String(jsobject);
- }
- public static JSObject getWindow(Applet a, int dummy) {
- Main.info("JSObject.getWindow");
- return new JSObject(a, "[WINDOW]", 0);
- }
-}