Subversion Repositories Applications.papyrus

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
        Copyright (c) 2004-2006, The Dojo Foundation
        All Rights Reserved.

        Licensed under the Academic Free License version 2.1 or above OR the
        modified BSD license. For more information on Dojo licensing, see:

                http://dojotoolkit.org/community/licensing.shtml
*/

dojo.hostenv.println = function (line) {
        if (arguments.length > 0) {
                print(arguments[0]);
                for (var i = 1; i < arguments.length; i++) {
                        var valid = false;
                        for (var p in arguments[i]) {
                                valid = true;
                                break;
                        }
                        if (valid) {
                                dojo.debugShallow(arguments[i]);
                        }
                }
        } else {
                print(line);
        }
};
dojo.locale = dojo.locale || java.util.Locale.getDefault().toString().replace("_", "-").toLowerCase();
dojo.render.name = dojo.hostenv.name_ = "rhino";
dojo.hostenv.getVersion = function () {
        return version();
};
if (dj_undef("byId")) {
        dojo.byId = function (id, doc) {
                if (id && (typeof id == "string" || id instanceof String)) {
                        if (!doc) {
                                doc = document;
                        }
                        return doc.getElementById(id);
                }
                return id;
        };
}
dojo.hostenv.loadUri = function (uri, cb) {
        try {
                var local = (new java.io.File(uri)).exists();
                if (!local) {
                        try {
                                var stream = (new java.net.URL(uri)).openStream();
                                stream.close();
                        }
                        catch (e) {
                                return false;
                        }
                }
                if (cb) {
                        var contents = (local ? readText : readUri)(uri, "UTF-8");
                        cb(eval("(" + contents + ")"));
                } else {
                        load(uri);
                }
                return true;
        }
        catch (e) {
                dojo.debug("rhino load('" + uri + "') failed. Exception: " + e);
                return false;
        }
};
dojo.hostenv.exit = function (exitcode) {
        quit(exitcode);
};
function dj_rhino_current_script_via_java(depth) {
        var optLevel = Packages.org.mozilla.javascript.Context.getCurrentContext().getOptimizationLevel();
        var caw = new java.io.CharArrayWriter();
        var pw = new java.io.PrintWriter(caw);
        var exc = new java.lang.Exception();
        var s = caw.toString();
        var matches = s.match(/[^\(]*\.js\)/gi);
        if (!matches) {
                throw Error("cannot parse printStackTrace output: " + s);
        }
        var fname = ((typeof depth != "undefined") && (depth)) ? matches[depth + 1] : matches[matches.length - 1];
        var fname = matches[3];
        if (!fname) {
                fname = matches[1];
        }
        if (!fname) {
                throw Error("could not find js file in printStackTrace output: " + s);
        }
        return fname;
}
function readText(path, encoding) {
        encoding = encoding || "utf-8";
        var jf = new java.io.File(path);
        var is = new java.io.FileInputStream(jf);
        return dj_readInputStream(is, encoding);
}
function readUri(uri, encoding) {
        var conn = (new java.net.URL(uri)).openConnection();
        encoding = encoding || conn.getContentEncoding() || "utf-8";
        var is = conn.getInputStream();
        return dj_readInputStream(is, encoding);
}
function dj_readInputStream(is, encoding) {
        var input = new java.io.BufferedReader(new java.io.InputStreamReader(is, encoding));
        try {
                var sb = new java.lang.StringBuffer();
                var line = "";
                while ((line = input.readLine()) !== null) {
                        sb.append(line);
                        sb.append(java.lang.System.getProperty("line.separator"));
                }
                return sb.toString();
        }
        finally {
                input.close();
        }
}
if (!djConfig.libraryScriptUri.length) {
        try {
                djConfig.libraryScriptUri = dj_rhino_current_script_via_java(1);
        }
        catch (e) {
                if (djConfig["isDebug"]) {
                        print("\n");
                        print("we have no idea where Dojo is located.");
                        print("Please try loading rhino in a non-interpreted mode or set a");
                        print("\n\tdjConfig.libraryScriptUri\n");
                        print("Setting the dojo path to './'");
                        print("This is probably wrong!");
                        print("\n");
                        print("Dojo will try to load anyway");
                }
                djConfig.libraryScriptUri = "./";
        }
}
dojo.doc = function () {
        return document;
};
dojo.body = function () {
        return document.body;
};
function setTimeout(func, delay) {
        var def = {sleepTime:delay, hasSlept:false, run:function () {
                if (!this.hasSlept) {
                        this.hasSlept = true;
                        java.lang.Thread.currentThread().sleep(this.sleepTime);
                }
                try {
                        func();
                }
                catch (e) {
                        dojo.debug("Error running setTimeout thread:" + e);
                }
        }};
        var runnable = new java.lang.Runnable(def);
        var thread = new java.lang.Thread(runnable);
        thread.start();
}
dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug");