diff options
author | alexanders@b2ef00c0-3703-41da-baef-cfe82387ac0c <none@none> | 2010-02-03 00:48:31 +0000 |
---|---|---|
committer | alexanders@b2ef00c0-3703-41da-baef-cfe82387ac0c <none@none> | 2010-02-03 00:48:31 +0000 |
commit | 1a5e3c2d64be1c05a422fd78b23a31de155eca64 (patch) | |
tree | 71b2236dd23d409b0ce8a9576758123922b57898 /trunk/infrastructure/rhino1_7R1/examples/Foo.java | |
parent | 4a9748e10084ca99fadec4f0fb1a3c22af7f3794 (diff) | |
download | etherpad-1a5e3c2d64be1c05a422fd78b23a31de155eca64.tar.gz etherpad-1a5e3c2d64be1c05a422fd78b23a31de155eca64.tar.xz etherpad-1a5e3c2d64be1c05a422fd78b23a31de155eca64.zip |
removed duplicate trunk directory
--HG--
extra : convert_revision : svn%3Ab2ef00c0-3703-41da-baef-cfe82387ac0c/trunk%404
Diffstat (limited to 'trunk/infrastructure/rhino1_7R1/examples/Foo.java')
-rw-r--r-- | trunk/infrastructure/rhino1_7R1/examples/Foo.java | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/trunk/infrastructure/rhino1_7R1/examples/Foo.java b/trunk/infrastructure/rhino1_7R1/examples/Foo.java new file mode 100644 index 0000000..bca1b79 --- /dev/null +++ b/trunk/infrastructure/rhino1_7R1/examples/Foo.java @@ -0,0 +1,169 @@ +/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Rhino code, released + * May 6, 1998. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1997-1999 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * the GNU General Public License Version 2 or later (the "GPL"), in which + * case the provisions of the GPL are applicable instead of those above. If + * you wish to allow use of your version of this file only under the terms of + * the GPL and not to allow others to use your version of this file under the + * MPL, indicate your decision by deleting the provisions above and replacing + * them with the notice and other provisions required by the GPL. If you do + * not delete the provisions above, a recipient may use your version of this + * file under either the MPL or the GPL. + * + * ***** END LICENSE BLOCK ***** */ + +import org.mozilla.javascript.*; + +/** + * An example host object class. + * + * Here's a shell session showing the Foo object in action: + * <pre> + * js> defineClass("Foo") + * js> foo = new Foo(); <i>A constructor call, see <a href="#Foo">Foo</a> below.</i> + * [object Foo] <i>The "Foo" here comes from <a href"#getClassName">getClassName</a>.</i> + * js> foo.counter; <i>The counter property is defined by the <code>defineProperty</code></i> + * 0 <i>call below and implemented by the <a href="#getCounter">getCounter</a></i> + * js> foo.counter; <i>method below.</i> + * 1 + * js> foo.counter; + * 2 + * js> foo.resetCounter(); <i>Results in a call to <a href="#resetCounter">resetCounter</a>.</i> + * js> foo.counter; <i>Now the counter has been reset.</i> + * 0 + * js> foo.counter; + * 1 + * js> bar = new Foo(37); <i>Create a new instance.</i> + * [object Foo] + * js> bar.counter; <i>This instance's counter is distinct from</i> + * 37 <i>the other instance's counter.</i> + * js> foo.varargs(3, "hi"); <i>Calls <a href="#varargs">varargs</a>.</i> + * this = [object Foo]; args = [3, hi] + * js> foo[7] = 34; <i>Since we extended ScriptableObject, we get</i> + * 34 <i>all the behavior of a JavaScript object</i> + * js> foo.a = 23; <i>for free.</i> + * 23 + * js> foo.a + foo[7]; + * 57 + * js> + * </pre> + * + * @see org.mozilla.javascript.Context + * @see org.mozilla.javascript.Scriptable + * @see org.mozilla.javascript.ScriptableObject + * + * @author Norris Boyd + */ + +public class Foo extends ScriptableObject { + + /** + * The zero-parameter constructor. + * + * When Context.defineClass is called with this class, it will + * construct Foo.prototype using this constructor. + */ + public Foo() { + } + + /** + * The Java method defining the JavaScript Foo constructor. + * + * Takes an initial value for the counter property. + * Note that in the example Shell session above, we didn't + * supply a argument to the Foo constructor. This means that + * the Undefined value is used as the value of the argument, + * and when the argument is converted to an integer, Undefined + * becomes 0. + */ + public Foo(int counterStart) { + counter = counterStart; + } + + /** + * Returns the name of this JavaScript class, "Foo". + */ + public String getClassName() { + return "Foo"; + } + + /** + * The Java method defining the JavaScript resetCounter function. + * + * Resets the counter to 0. + */ + public void jsFunction_resetCounter() { + counter = 0; + } + + /** + * The Java method implementing the getter for the counter property. + * <p> + * If "setCounter" had been defined in this class, the runtime would + * call the setter when the property is assigned to. + */ + public int jsGet_counter() { + return counter++; + } + + /** + * An example of a variable-arguments method. + * + * All variable arguments methods must have the same number and + * types of parameters, and must be static. <p> + * @param cx the Context of the current thread + * @param thisObj the JavaScript 'this' value. + * @param args the array of arguments for this call + * @param funObj the function object of the invoked JavaScript function + * This value is useful to compute a scope using + * Context.getTopLevelScope(). + * @return computes the string values and types of 'this' and + * of each of the supplied arguments and returns them in a string. + * + * @see org.mozilla.javascript.ScriptableObject#getTopLevelScope + */ + public static Object jsFunction_varargs(Context cx, Scriptable thisObj, + Object[] args, Function funObj) + { + StringBuffer buf = new StringBuffer(); + buf.append("this = "); + buf.append(Context.toString(thisObj)); + buf.append("; args = ["); + for (int i=0; i < args.length; i++) { + buf.append(Context.toString(args[i])); + if (i+1 != args.length) + buf.append(", "); + } + buf.append("]"); + return buf.toString(); + } + + /** + * A piece of private data for this class. + */ + private int counter; +} + |