edburns%acm.org 115d1ad948 new_style_document_xpconnect_usage
git-svn-id: svn://10.0.0.236/trunk@242112 18797224-902f-48f8-a5cc-f745e15eee43
2007-12-27 05:27:37 +00:00

718 lines
65 KiB
HTML
Executable File

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Simple Pluglet</title>
<link href="../../../../style/screen.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../../../../style/prototype.js"></script>
<script type="text/javascript" src="../../../../style/effects.js"></script>
<script type="text/javascript" src="../../../../style/dragdrop.js"></script>
<script type="text/javascript" src="../../../../style/controls.js"></script>
</head>
<body>
<div id="nav">
<ul class="menubar">
</ul>
</div>
<div id="page">
<div class="wrapper">
<div id="logo"><img src="../../../../style/java_get_powered.png" /> <h1>Simple Pluglet</h1></div>
<div id="content">
<p>This example illustrates how to create a pluglet and package it into
a jar which you simply place in the browser's "plugins" directory.
Before we get started, let's see it run!</p>
<br />
<div id="example">
<div class="wrapper">
<EMBED type="application/x-simple-pluglet" name="test"
src="index.html" width=400 height=200>
<script>
var embed = document.embeds[0];
function callPluglet0()
{
var strs2 = {
value : []
};
var strslen2 = {
value : strs2.value.length
};
embed.callPlugletMethod("calledFromJavaScript0", strslen2, strs2);
alert("Pluglet returned " + strs2.value);
}
function callPluglet1()
{
var strs2 = {
value : [ "arg0" ]
};
var strslen2 = {
value : strs2.value.length
};
embed.callPlugletMethod("calledFromJavaScript1", strslen2, strs2);
alert("Pluglet returned " + strs2.value);
}
function callPluglet2()
{
var strs2 = {
value : [ "arg0", "arg1" ]
};
var strslen2 = {
value : strs2.value.length
};
embed.callPlugletMethod("calledFromJavaScript2", strslen2, strs2);
alert("Pluglet returned " + strs2.value);
}
function callPluglet3()
{
var strs2 = {
value : [ "arg0", "arg1", "arg2" ]
};
var strslen2 = {
value : strs2.value.length
};
embed.callPlugletMethod("calledFromJavaScript3", strslen2, strs2);
alert("Pluglet returned " + strs2.value);
}
</script>
<form name="formname">
<input type=button value="Call Pluglet 0 arg" onclick='callPluglet0()'> </input>
<input type=button value="Call Pluglet 1 arg" onclick='callPluglet1()'> </input>
<input type=button value="Call Pluglet 2 arg" onclick='callPluglet2()'> </input>
<input type=button value="Call Pluglet 3 arg" onclick='callPluglet3()'> </input>
</form>
</div>
</div>
<div id="exampleFooter">
<div class="wrapper">
</div>
</div>
<br />
<h2>Required Code Artifacts</h2>
<p>Creating a pluglet requires creating several code arifacts:</p>
<ol>
<li><p>A Java class that implements <a
href="http://www.mozilla.org/projects/blackwood/java-plugins/api/org/mozilla/pluglet/PlugletFactory.html">PlugletFactory</a>.
</p>
<div class="source"><a href="#" onclick="if (Element.visible('src1')) { new Effect.SlideUp('src1'); $('src1_btn').src = '../../../../style/page_white_code.gif'; } else { new Effect.SlideDown('src1'); $('src1_btn').src = '../../../../style/page_white_code_red.gif'; } return false;">Details <img id="src1_btn" src="../../../../style/page_white_code.gif" /></a>
<div id="src1" class="code" style="display: none; ">
<div class="syntax"><div class="java" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="kw2">package</span> simple;</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="co2">import java.awt.Button;</span></div></li>
<li class="li2"><div class="de2"><span class="co2">import java.awt.Frame;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">import java.awt.List;</span></div></li>
<li class="li2"><div class="de2"><span class="co2">import java.awt.Panel;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">import java.awt.event.ActionEvent;</span></div></li>
<li class="li2"><div class="de2"><span class="co2">import java.awt.event.ActionListener;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">import java.awt.print.PrinterJob;</span></div></li>
<li class="li2"><div class="de2"><span class="co2">import java.io.BufferedReader;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">import java.io.InputStream;</span></div></li>
<li class="li2"><div class="de2"><span class="co2">import java.io.InputStreamReader;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">import org.mozilla.pluglet.Pluglet;</span></div></li>
<li class="li2"><div class="de2"><span class="co2">import org.mozilla.pluglet.PlugletFactory;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">import org.mozilla.pluglet.PlugletStreamListener;</span></div></li>
<li class="li2"><div class="de2"><span class="co2">import org.mozilla.pluglet.mozilla.PlugletManager;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">import org.mozilla.pluglet.mozilla.PlugletPeer;</span></div></li>
<li class="li2"><div class="de2"><span class="co2">import org.mozilla.pluglet.mozilla.PlugletStreamInfo;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">import org.mozilla.pluglet.mozilla.PlugletTagInfo;</span></div></li>
<li class="li2"><div class="de2"><span class="co2">import org.mozilla.pluglet.mozilla.PlugletTagInfo2;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw2">public</span> <span class="kw2">class</span> SimplePluglet <span class="kw2">implements</span> PlugletFactory <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw2">public</span> SimplePluglet<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--test.test()<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="coMULTI">/**</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* Creates a new pluglet instance, based on a MIME type. This</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* allows different impelementations to be created depending on</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* the specified MIME type.</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*/</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw2">public</span> Pluglet createPluglet<span class="br0">&#40;</span><a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span class="kw3">String</span></a> mimeType<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--test.createPlugletInstance<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw2">return</span> <span class="kw2">new</span> SimplePlugletInstance<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="coMULTI">/**</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* Initializes the pluglet and will be called before any new instances are</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* created.</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*/</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> initialize<span class="br0">&#40;</span><a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span class="kw3">String</span></a> plugletPath, PlugletManager manager<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--test.initialize(&quot;</span> + </div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;plugletPath + <span class="st0">&quot;)<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="coMULTI">/**</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* Called when the browser is done with the pluglet factory, or when</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* the pluglet is disabled by the user.</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*/</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> shutdown<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--test.shutdown<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span> </div></li></ol></div></div>
</div></div>
</li>
<li><p>A Java class that implements <a
href="http://www.mozilla.org/projects/blackwood/java-plugins/api/org/mozilla/pluglet/Pluglet.html">Pluglet</a>,
instances of which are created and returned by the
PlugletFactory. </p>
<div class="source"><a href="#" onclick="if (Element.visible('src2')) { new Effect.SlideUp('src2'); $('src2_btn').src = '../../../../style/page_white_code.gif'; } else { new Effect.SlideDown('src2'); $('src2_btn').src = '../../../../style/page_white_code_red.gif'; } return false;">Details <img id="src2_btn" src="../../../../style/page_white_code.gif" /></a>
<div id="src2" class="code" style="display: none; ">
<div class="syntax"><div class="java" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="kw2">class</span> SimplePlugletInstance <span class="kw2">implements</span> Pluglet <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <a href="http://www.google.com/search?q=allinurl%3APanel+java.sun.com&amp;bntl=1"><span class="kw3">Panel</span></a> panel;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <a href="http://www.google.com/search?q=allinurl%3AButton+java.sun.com&amp;bntl=1"><span class="kw3">Button</span></a> button;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <a href="http://www.google.com/search?q=allinurl%3AList+java.sun.com&amp;bntl=1"><span class="kw3">List</span></a> list;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; PlugletPeer peer;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw2">public</span> SimplePlugletInstance<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--SimplePlugletInstance.SimplePlugletInstance() <span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; panel = <span class="kw2">new</span> <a href="http://www.google.com/search?q=allinurl%3APanel+java.sun.com&amp;bntl=1"><span class="kw3">Panel</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; button = <span class="kw2">new</span> <a href="http://www.google.com/search?q=allinurl%3AButton+java.sun.com&amp;bntl=1"><span class="kw3">Button</span></a><span class="br0">&#40;</span><span class="st0">&quot;Press me :)&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; button.<span class="me1">addActionListener</span><span class="br0">&#40;</span><span class="kw2">new</span> <a href="http://www.google.com/search?q=allinurl%3AActionListener+java.sun.com&amp;bntl=1"><span class="kw3">ActionListener</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> actionPerformed<span class="br0">&#40;</span><a href="http://www.google.com/search?q=allinurl%3AActionEvent+java.sun.com&amp;bntl=1"><span class="kw3">ActionEvent</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span class="kw4">int</span> t = list.<span class="me1">getSelectedIndex</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;t++; </div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span>t &gt;= list.<span class="me1">getItemCount</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; t = <span class="nu0">0</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;list.<span class="me1">select</span><span class="br0">&#40;</span>t<span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; panel.<span class="me1">add</span><span class="br0">&#40;</span>button<span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; list = <span class="kw2">new</span> <a href="http://www.google.com/search?q=allinurl%3AList+java.sun.com&amp;bntl=1"><span class="kw3">List</span></a><span class="br0">&#40;</span><span class="nu0">4</span>,<span class="kw2">false</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; list.<span class="me1">add</span><span class="br0">&#40;</span><span class="st0">&quot;Pluglet&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; list.<span class="me1">add</span><span class="br0">&#40;</span><span class="st0">&quot;not&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; list.<span class="me1">add</span><span class="br0">&#40;</span><span class="st0">&quot;bad&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; list.<span class="me1">select</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; panel.<span class="me1">add</span><span class="br0">&#40;</span>list<span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="coMULTI">/**</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* Initializes a newly created pluglet instance, passing to it the pluglet</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* instance peer which it should use for all communication back to the browser.</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* </span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param peer the corresponding pluglet instance peer</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*/</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> initialize<span class="br0">&#40;</span>PlugletPeer peer<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">this</span>.<span class="me1">peer</span> = peer;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--SimplePlugletInstance.initialize<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; peer.<span class="me1">showStatus</span><span class="br0">&#40;</span><span class="st0">&quot;Hello world&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--SimplePlugletInstance.initialize&nbsp; &quot;</span>+peer.<span class="me1">getMIMEType</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; try {</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;OutputStreamWriter out = new OutputStreamWriter(peer.newStream(&quot;text/plain&quot;,&quot;_new&quot;));</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;String msg = &quot;Hello, world&quot;;</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;out.write(msg,0,msg.length());</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;out.flush();</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;out.close();</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; } catch (Exception e) {</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;;</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; }</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp; &nbsp; */</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="coMULTI">/**</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* Called to instruct the pluglet instance to start. This will be called after</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* the pluglet is first created and initialized, and may be called after the</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* pluglet is stopped (via the Stop method) if the pluglet instance is returned</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* to in the browser window's history.</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*/</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> start<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--SimplePlugletInstance.start<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="coMULTI">/**</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* Called to instruct the pluglet instance to stop, thereby suspending its state.</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* This method will be called whenever the browser window goes on to display</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* another page and the page containing the pluglet goes into the window's history</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* list.</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*/</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> stop<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--SimplePlugletInstance.stop<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="coMULTI">/**</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* Called to instruct the pluglet instance to destroy itself. This is called when</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* it become no longer possible to return to the pluglet instance, either because </span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* the browser window's history list of pages is being trimmed, or because the</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* window containing this page in the history is being closed.</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*/</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> destroy<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp;org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--SimplePlugletInstance.destroy<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="coMULTI">/**</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* Called to tell the pluglet that the initial src/data stream is</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* ready. </span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* </span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* @result PlugletStreamListener</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*/</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw2">public</span> PlugletStreamListener newStream<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--SimplePlugletInstance.newStream<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">return</span> <span class="kw2">new</span> TestStreamListener<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="coMULTI">/**</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* Called when the window containing the pluglet instance changes.</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param frame the pluglet panel</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*/</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> setWindow<span class="br0">&#40;</span><a href="http://www.google.com/search?q=allinurl%3AFrame+java.sun.com&amp;bntl=1"><span class="kw3">Frame</span></a> frame<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--Test...SetWindow &quot;</span>+frame+<span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>frame == <span class="kw2">null</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;<span class="kw2">return</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; PlugletTagInfo info = peer.<span class="me1">getTagInfo</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>info <span class="kw2">instanceof</span> PlugletTagInfo2<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;PlugletTagInfo2 info2 = <span class="br0">&#40;</span>PlugletTagInfo2<span class="br0">&#41;</span>info;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;frame.<span class="me1">setSize</span><span class="br0">&#40;</span>info2.<span class="me1">getWidth</span><span class="br0">&#40;</span><span class="br0">&#41;</span>,info2.<span class="me1">getHeight</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--SimplePlugletInstance.SetWindow width &quot;</span>+info2.<span class="me1">getWidth</span><span class="br0">&#40;</span><span class="br0">&#41;</span>+ <span class="st0">&quot; height &quot;</span>+info2.<span class="me1">getHeight</span><span class="br0">&#40;</span><span class="br0">&#41;</span>+<span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--Test...SetWindow &quot;</span>+frame+<span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; frame.<span class="me1">add</span><span class="br0">&#40;</span>panel<span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; frame.<span class="me1">pack</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; frame.<span class="me1">show</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;<span class="coMULTI">/**</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* Called to instruct the pluglet instance to print itself to a printer.</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param print printer information.</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*/</span> </div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> print<span class="br0">&#40;</span><a href="http://www.google.com/search?q=allinurl%3APrinterJob+java.sun.com&amp;bntl=1"><span class="kw3">PrinterJob</span></a> printerJob<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; </div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">protected</span> <span class="kw4">void</span> finalize<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--SimplePlugletInstance.finalize()<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2"><span class="br0">&#125;</span> </div></li></ol></div></div>
</div></div>
</li>
<li><p>A Java class that implements <a
href="http://www.mozilla.org/projects/blackwood/java-plugins/api/org/mozilla/pluglet/PlugletStreamListener.html">PlugletStreamListener</a>,
if the Pluglet uses the getURL() or postURL() methods on the
<a
href="http://www.mozilla.org/projects/blackwood/java-plugins/api/org/mozilla/pluglet/mozilla/PlugletManager.html">PlugletManager</a>
passed to plugletFactory.initialize().
<div class="source"><a href="#" onclick="if (Element.visible('src3')) { new Effect.SlideUp('src3'); $('src3_btn').src = '../../../../style/page_white_code.gif'; } else { new Effect.SlideDown('src3'); $('src3_btn').src = '../../../../style/page_white_code_red.gif'; } return false;">Details <img id="src3_btn" src="../../../../style/page_white_code.gif" /></a>
<div id="src3" class="code" style="display: none; ">
<div class="syntax"><div class="java" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="kw2">class</span> TestStreamListener <span class="kw2">implements</span> PlugletStreamListener <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw2">public</span> TestStreamListener<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--TestStreamListener.TestStreamListener()<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="coMULTI">/**</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* Notify the observer that the URL has started to load.&nbsp; This method is</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* called only once, at the beginning of a URL load.&lt;BR&gt;&lt;BR&gt;</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*/</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> onStartBinding<span class="br0">&#40;</span>PlugletStreamInfo streamInfo<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--TestStreamListener.onStartBinding &quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;length &quot;</span>+streamInfo.<span class="me1">getLength</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot; contenet type &quot;</span>+ streamInfo.<span class="me1">getContentType</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot; url &quot;</span>+ streamInfo.<span class="me1">getURL</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot; seekable &quot;</span>+ streamInfo.<span class="me1">isSeekable</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="coMULTI">/**</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* Notify the client that data is available in the input stream.&nbsp; This</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* method is called whenver data is written into the input stream by the</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* networking library...&lt;BR&gt;&lt;BR&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* </span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param input&nbsp; The input stream containing the data.&nbsp; This stream can</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* be either a blocking or non-blocking stream.</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* @param length&nbsp; &nbsp; The amount of data that was just pushed into the stream.</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*/</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> onDataAvailable<span class="br0">&#40;</span>PlugletStreamInfo plugletInfo, <a href="http://www.google.com/search?q=allinurl%3AInputStream+java.sun.com&amp;bntl=1"><span class="kw3">InputStream</span></a> input,<span class="kw4">int</span>&nbsp; length<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">try</span><span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--TestStreamListener.onDataAvailable &quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--length &quot;</span>+input.<span class="me1">available</span><span class="br0">&#40;</span><span class="br0">&#41;</span>+<span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span class="kw3">String</span></a> cur = <span class="kw2">null</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?q=allinurl%3ABufferedReader+java.sun.com&amp;bntl=1"><span class="kw3">BufferedReader</span></a> bufferedReader = <span class="kw2">new</span> <a href="http://www.google.com/search?q=allinurl%3ABufferedReader+java.sun.com&amp;bntl=1"><span class="kw3">BufferedReader</span></a><span class="br0">&#40;</span><span class="kw2">new</span> <a href="http://www.google.com/search?q=allinurl%3AInputStreamReader+java.sun.com&amp;bntl=1"><span class="kw3">InputStreamReader</span></a><span class="br0">&#40;</span>input<span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">while</span> <span class="br0">&#40;</span><span class="kw2">null</span> != <span class="br0">&#40;</span>cur = bufferedReader.<span class="me1">readLine</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span>cur<span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw2">catch</span><span class="br0">&#40;</span><a href="http://www.google.com/search?q=allinurl%3AException+java.sun.com&amp;bntl=1"><span class="kw3">Exception</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> onFileAvailable<span class="br0">&#40;</span>PlugletStreamInfo plugletInfo, <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span class="kw3">String</span></a> fileName<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--TestStreamListener.onFileAvailable<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot; fileName&quot;</span> + fileName<span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="coMULTI">/**</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* Notify the observer that the URL has finished loading. </span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*/</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> onStopBinding<span class="br0">&#40;</span>PlugletStreamInfo plugletInfo,<span class="kw4">int</span> status<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--TestStreamListener.onStopBinding<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">int</span>&nbsp; getStreamType<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;--TestStreamListener.getStreamType<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">return</span> <span class="nu0">1</span>; <span class="co1">//:)</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span> </div></li></ol></div></div>
</div></div>
</p></li>
<li><p>A Java JAR file containing the .class files compiled from the
above Java files. The manifest for the JAR must contain the following entries:</p>
<table border="1">
<thead>
<tr>
<th>Manifest attribute name</th>
<th>Explanation</th>
<th>Value for this example</th>
</tr>
</thead>
<tbody>
<tr>
<td>MIMEDescription
</td>
<td>The mime-type to be handled by this pluglet.
</td>
<td>application/x-simple-pluglet
</td>
</tr>
<tr>
<td>Pluglet-Class
</td>
<td>The fully qualified class name of the Java class implementing PlugletFactory.
</td>
<td>simple.SimplePluglet
</td>
</tr>
</tbody>
</table>
</li>
<li><p>Some HTML markup that includes the pluglet. Note: this
step is exactly the same as for any other native plugin.
<div class="source"><a href="#" onclick="if (Element.visible('src0')) { new Effect.SlideUp('src0'); $('src0_btn').src = '../../../../style/page_white_code.gif'; } else { new Effect.SlideDown('src0'); $('src0_btn').src = '../../../../style/page_white_code_red.gif'; } return false;">Details <img id="src0_btn" src="../../../../style/page_white_code.gif" /></a>
<div id="src0" class="code" style="display: none; ">
<div class="syntax"><div class="html4strict" style="font-family: monospace;"><ol><li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2"><span class="sc2">&lt;EMBED <span class="kw3">type</span>=<span class="st0">&quot;application/x-simple-pluglet&quot;</span> <span class="kw3">name</span>=<span class="st0">&quot;test&quot;</span> </div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw3">src</span>=<span class="st0">&quot;index.html&quot;</span> <span class="kw3">width</span>=<span class="nu0">400</span> <span class="kw3">height</span>=<span class="nu0">200</span>&gt;</span> </div></li></ol></div></div>
</div>
</p></li>
</ol>
<h2>Calling a Pluglet from JavaScript</h2>
<p>This release of pluglets allows a limited degree of communication
between JavaScript and the Pluglet class. Through the magic of
Netscape's XPConnect code, it is possible to invoke, from JavaScript in
the page in which the pluglet is embedded, an arbitrary method <u><i>on
the pluglet</i></u>, provided the method returns String, and takes
anywhere between zero and ten String arguments. <i>Such a method is
called a "<u>conforming method</u>" for the rest of this
discussion</i>.</p>
<p>In the above example, the four plain ole' HTML buttons labeled "Call
Pluglet N arg" (where N is a number between 0 and 3) call a Java method
on the pluglet. Click the Details button on the right to see the
JavaScript code.</p>
<div class="source"><a href="#" onclick="if (Element.visible('src4')) { new Effect.SlideUp('src4'); $('src4_btn').src = '../../../../style/page_white_code.gif'; } else { new Effect.SlideDown('src4'); $('src4_btn').src = '../../../../style/page_white_code_red.gif'; } return false;">Details <img id="src4_btn" src="../../../../style/page_white_code.gif" /></a>
<div id="src4" class="code" style="display: none; ">
<div class="syntax"><div class="javascript" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="kw2">var</span> embed = document.<span class="me1">embeds</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw2">function</span> callPluglet0<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1"><span class="kw2">var</span> strs2 = <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; value : <span class="br0">&#91;</span><span class="br0">&#93;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw2">var</span> strslen2 = <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; value : strs2.<span class="me1">value</span>.<span class="me1">length</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; embed.<span class="me1">callPlugletMethod</span><span class="br0">&#40;</span><span class="st0">&quot;calledFromJavaScript0&quot;</span>, strslen2, strs2<span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&quot;Pluglet returned &quot;</span> + strs2.<span class="me1">value</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2"><span class="kw2">function</span> callPluglet1<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2"><span class="kw2">var</span> strs2 = <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; value : <span class="br0">&#91;</span> <span class="st0">&quot;arg0&quot;</span> <span class="br0">&#93;</span></div></li>
<li class="li2"><div class="de2"><span class="br0">&#125;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2"><span class="kw2">var</span> strslen2 = <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; value : strs2.<span class="me1">value</span>.<span class="me1">length</span></div></li>
<li class="li2"><div class="de2"><span class="br0">&#125;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; embed.<span class="me1">callPlugletMethod</span><span class="br0">&#40;</span><span class="st0">&quot;calledFromJavaScript1&quot;</span>, strslen2, strs2<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&quot;Pluglet returned &quot;</span> + strs2.<span class="me1">value</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1"><span class="kw2">function</span> callPluglet2<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1"><span class="kw2">var</span> strs2 = <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; value : <span class="br0">&#91;</span> <span class="st0">&quot;arg0&quot;</span>, <span class="st0">&quot;arg1&quot;</span> <span class="br0">&#93;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw2">var</span> strslen2 = <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; value : strs2.<span class="me1">value</span>.<span class="me1">length</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; embed.<span class="me1">callPlugletMethod</span><span class="br0">&#40;</span><span class="st0">&quot;calledFromJavaScript2&quot;</span>, strslen2, strs2<span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&quot;Pluglet returned &quot;</span> + strs2.<span class="me1">value</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2"><span class="kw2">function</span> callPluglet3<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2"><span class="kw2">var</span> strs2 = <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; value : <span class="br0">&#91;</span> <span class="st0">&quot;arg0&quot;</span>, <span class="st0">&quot;arg1&quot;</span>, <span class="st0">&quot;arg2&quot;</span> <span class="br0">&#93;</span></div></li>
<li class="li2"><div class="de2"><span class="br0">&#125;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2"><span class="kw2">var</span> strslen2 = <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; value : strs2.<span class="me1">value</span>.<span class="me1">length</span></div></li>
<li class="li2"><div class="de2"><span class="br0">&#125;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; embed.<span class="me1">callPlugletMethod</span><span class="br0">&#40;</span><span class="st0">&quot;calledFromJavaScript3&quot;</span>, strslen2, strs2<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&quot;Pluglet returned &quot;</span> + strs2.<span class="me1">value</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2"><span class="br0">&#125;</span> </div></li></ol></div></div>
</div>
</div>
<p>Line 1 is standard JavaScript to get the 0th
<code>&lt;EMBED&gt;</code> element in the page, which happens to be our
pluglet. The functions <code>callPluglet0</code>,
<code>callPluglet1</code>, <code>callPluglet2</code> and
<code>callPluglet3</code>, declared on lines 3, 16, 29, and 42,
respectively, are called from the <code>onclick</code> handler of the
HTML buttons in the page. Each of these functions calls a Java method
implemented on the pluglet using the special
<code>callPlugletMethod</code> JavaScript function defined on the
XPConnect API for pluglet. The general form of this JavaScript method is:</p>
<br />
<div class="syntax"><div class="javascript" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="coMULTI">/** The return value of this function is a JavaScript associative array containing</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; * an entry named 'value', whose value is a JavaScript String that is</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; * the Java String returned by the <u>conforming method</u> named in the first argument.</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; */</span></div></li>
<li class="li1"><div class="de1"><span class="kw2">function</span> callPlugletMethod<span class="br0">&#40;</span>&lt;<span class="st0">name of a conforming method implemented on Pluglet Class</span>&gt;,</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;<span class="st0">JavaScript associative array containing an</span></div></li>
<li class="li1"><div class="de1"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;entry named 'value', whose value is</span></div></li>
<li class="li2"><div class="de2"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;JavaScript array (of length zero thru ten) of</span></div></li>
<li class="li1"><div class="de1"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;JavaScript strings.&nbsp; Each element in the</span></div></li>
<li class="li2"><div class="de2"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;array will be passed to the corresponding</span></div></li>
<li class="li1"><div class="de1"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String argument in the conforming method.</span>&gt;,</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;<span class="st0">JavaScript associative array containing an</span></div></li>
<li class="li1"><div class="de1"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;entry named 'value', whose value is a</span></div></li>
<li class="li2"><div class="de2"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;JavaScript number representing the length of</span></div></li>
<li class="li1"><div class="de1"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;the array.</span>&gt;<span class="br0">&#41;</span>; </div></li></ol></div></div>
<p>The Java code for the methods <code>calledFromJavaScriptN</code>
(where N is a number between 0 and 3) can be seen by expanding the
Details button on the right. These methods are defined on the class
<code>SimplePlugletInstance</code>.</p>
<div class="source"><a href="#" onclick="if (Element.visible('src5')) { new Effect.SlideUp('src5'); $('src5_btn').src = '../../../../style/page_white_code.gif'; } else { new Effect.SlideDown('src5'); $('src5_btn').src = '../../../../style/page_white_code_red.gif'; } return false;">Details <img id="src5_btn" src="../../../../style/page_white_code.gif" /></a>
<div id="src5" class="code" style="display: none; ">
<div class="java" style="font-family: monospace;"><ol><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span class="kw3">String</span></a> calledFromJavaScript3<span class="br0">&#40;</span><a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span class="kw3">String</span></a> arg0, <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span class="kw3">String</span></a> arg1, <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span class="kw3">String</span></a> arg2<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;calledFromJavaScript2<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">return</span> <span class="st0">&quot;3 args.&nbsp; arg0: &quot;</span> + arg0 + <span class="st0">&quot; arg1: &quot;</span> + arg1 + <span class="st0">&quot; arg2: &quot;</span> + arg2 + <span class="st0">&quot;&quot;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw2">public</span> <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span class="kw3">String</span></a> calledFromJavaScript2<span class="br0">&#40;</span><a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span class="kw3">String</span></a> arg0, <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span class="kw3">String</span></a> arg1<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;calledFromJavaScript2<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">return</span> <span class="st0">&quot;2 args.&nbsp; arg0: &quot;</span> + arg0 + <span class="st0">&quot; arg1: &quot;</span> + arg1 + <span class="st0">&quot;&quot;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span class="kw3">String</span></a> calledFromJavaScript1<span class="br0">&#40;</span><a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span class="kw3">String</span></a> arg0<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;calledFromJavaScript1<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">return</span> <span class="st0">&quot;1 args.&nbsp; arg0: &quot;</span> + arg0 + <span class="st0">&quot;&quot;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw2">public</span> <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&amp;bntl=1"><span class="kw3">String</span></a> calledFromJavaScript0<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">&#40;</span><span class="st0">&quot;calledFromJavaScript0<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">return</span> <span class="st0">&quot;0 arg hard coded result&quot;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
</div>
</div></div>
<p>NOTE: One convenient interchange format would be to return <a
href="http://json.org/">JSON strings</a> from your <u>conforming methods</u>.</p>
</div> <!-- content -->
</div>
</div>
<div id="footer">
<div class="wrapper">
<a href="../../../../index.html">Back</a>
</div>
</div>
<div style="float: left; width: 100%; height: 20px; ">&nbsp;</div>
</body>
</html>