Package com.scratchdisk.script.rhino

Source Code of com.scratchdisk.script.rhino.ExtendedJavaTopPackage

/*
* Scriptographer
*
* This file is part of Scriptographer, a Scripting Plugin for Adobe Illustrator
* http://scriptographer.org/
*
* Copyright (c) 2002-2010, Juerg Lehni
* http://scratchdisk.com/
*
* All rights reserved. See LICENSE file for details.
*
* File created on Mar 31, 2007.
*/

package com.scratchdisk.script.rhino;

import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.ScriptableObject;
import org.mozilla.javascript.Wrapper;

/**
* @author lehni
*
*/
public class ExtendedJavaTopPackage extends ExtendedJavaPackage {

  public ExtendedJavaTopPackage(ClassLoader loader) {
    super("", loader);
  }

  public Object call(Context cx, Scriptable scope, Scriptable thisObj,
      Object[] args) {
    return construct(cx, scope, args);
  }

  public Scriptable construct(Context cx, Scriptable scope, Object[] args) {
    ClassLoader loader = null;
    if (args.length != 0) {
      Object arg = args[0];
      if (arg instanceof Wrapper)
        arg = ((Wrapper) arg).unwrap();
      if (arg instanceof ClassLoader)
        loader = (ClassLoader) arg;
    }
    return new ExtendedJavaPackage("", loader);
  }

  /*
   * This is needed for LazilyLoadedCtor, as it looks for the static init only
   * in the class itself, and fails if it is not there.
   * Also, we create the top ExtendedJavaTopPackage here.
   */
  public static void init(Context cx, Scriptable scope, boolean sealed) {
    ClassLoader loader = cx.getApplicationClassLoader();
    ExtendedJavaTopPackage top = new ExtendedJavaTopPackage(loader);
    top.setPrototype(getObjectPrototype(scope));
    top.setParentScope(scope);
    // It's safe to downcast here since initStandardObjects takes
    // a ScriptableObject.
    ScriptableObject global = (ScriptableObject) scope;
    global.defineProperty("Packages", top, ScriptableObject.DONTENUM);
    for (int i = 0; i != TopLevel.topPackages.length; i += 2) {
      String name = TopLevel.topPackages[i];
      if (!name.equals("Packages"))
        global.defineProperty(name, top.get(name, top), ScriptableObject.DONTENUM);
    }
  }
}
TOP

Related Classes of com.scratchdisk.script.rhino.ExtendedJavaTopPackage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.