718 lines
65 KiB
HTML
Executable File
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"> </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"> </div></li>
|
|
<li class="li2"><div class="de2"> </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">{</span></div></li>
|
|
<li class="li2"><div class="de2"> <span class="kw2">public</span> SimplePluglet<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--test.test()<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="coMULTI">/**</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> * Creates a new pluglet instance, based on a MIME type. This</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> * allows different impelementations to be created depending on</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> * the specified MIME type.</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> */</span></div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="kw2">public</span> Pluglet createPluglet<span class="br0">(</span><a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&bntl=1"><span class="kw3">String</span></a> mimeType<span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
<li class="li1"><div class="de1"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--test.createPlugletInstance<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="kw2">return</span> <span class="kw2">new</span> SimplePlugletInstance<span class="br0">(</span><span class="br0">)</span>;</div></li>
|
|
<li class="li1"><div class="de1"> <span class="br0">}</span></div></li>
|
|
<li class="li2"><div class="de2"> <span class="coMULTI">/**</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> * Initializes the pluglet and will be called before any new instances are</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> * created.</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> */</span></div></li>
|
|
<li class="li2"><div class="de2"> <span class="kw2">public</span> <span class="kw4">void</span> initialize<span class="br0">(</span><a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&bntl=1"><span class="kw3">String</span></a> plugletPath, PlugletManager manager<span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--test.initialize("</span> + </div></li>
|
|
<li class="li2"><div class="de2"> plugletPath + <span class="st0">")<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="br0">}</span></div></li>
|
|
<li class="li2"><div class="de2"> <span class="coMULTI">/**</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> * Called when the browser is done with the pluglet factory, or when</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> * the pluglet is disabled by the user.</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> */</span></div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="kw2">public</span> <span class="kw4">void</span> shutdown<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
<li class="li1"><div class="de1"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--test.shutdown<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="br0">}</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">{</span></div></li>
|
|
|
|
<li class="li2"><div class="de2"> <a href="http://www.google.com/search?q=allinurl%3APanel+java.sun.com&bntl=1"><span class="kw3">Panel</span></a> panel;</div></li>
|
|
<li class="li1"><div class="de1"> <a href="http://www.google.com/search?q=allinurl%3AButton+java.sun.com&bntl=1"><span class="kw3">Button</span></a> button;</div></li>
|
|
<li class="li2"><div class="de2"> <a href="http://www.google.com/search?q=allinurl%3AList+java.sun.com&bntl=1"><span class="kw3">List</span></a> list;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> PlugletPeer peer;</div></li>
|
|
<li class="li2"><div class="de2"> <span class="kw2">public</span> SimplePlugletInstance<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
<li class="li1"><div class="de1"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--SimplePlugletInstance.SimplePlugletInstance() <span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> panel = <span class="kw2">new</span> <a href="http://www.google.com/search?q=allinurl%3APanel+java.sun.com&bntl=1"><span class="kw3">Panel</span></a><span class="br0">(</span><span class="br0">)</span>;</div></li>
|
|
<li class="li1"><div class="de1"> button = <span class="kw2">new</span> <a href="http://www.google.com/search?q=allinurl%3AButton+java.sun.com&bntl=1"><span class="kw3">Button</span></a><span class="br0">(</span><span class="st0">"Press me :)"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> button.<span class="me1">addActionListener</span><span class="br0">(</span><span class="kw2">new</span> <a href="http://www.google.com/search?q=allinurl%3AActionListener+java.sun.com&bntl=1"><span class="kw3">ActionListener</span></a><span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
<li class="li1"><div class="de1"> <span class="kw2">public</span> <span class="kw4">void</span> actionPerformed<span class="br0">(</span><a href="http://www.google.com/search?q=allinurl%3AActionEvent+java.sun.com&bntl=1"><span class="kw3">ActionEvent</span></a> e<span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="kw4">int</span> t = list.<span class="me1">getSelectedIndex</span><span class="br0">(</span><span class="br0">)</span>;</div></li>
|
|
<li class="li1"><div class="de1"> t++; </div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="kw1">if</span> <span class="br0">(</span>t >= list.<span class="me1">getItemCount</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
<li class="li1"><div class="de1"> t = <span class="nu0">0</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
<li class="li1"><div class="de1"> list.<span class="me1">select</span><span class="br0">(</span>t<span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
<li class="li1"><div class="de1"> <span class="br0">}</span></div></li>
|
|
<li class="li2"><div class="de2"> <span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> panel.<span class="me1">add</span><span class="br0">(</span>button<span class="br0">)</span>;</div></li>
|
|
<li class="li2"><div class="de2"> list = <span class="kw2">new</span> <a href="http://www.google.com/search?q=allinurl%3AList+java.sun.com&bntl=1"><span class="kw3">List</span></a><span class="br0">(</span><span class="nu0">4</span>,<span class="kw2">false</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> list.<span class="me1">add</span><span class="br0">(</span><span class="st0">"Pluglet"</span><span class="br0">)</span>;</div></li>
|
|
<li class="li2"><div class="de2"> list.<span class="me1">add</span><span class="br0">(</span><span class="st0">"not"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> list.<span class="me1">add</span><span class="br0">(</span><span class="st0">"bad"</span><span class="br0">)</span>;</div></li>
|
|
<li class="li2"><div class="de2"> list.<span class="me1">select</span><span class="br0">(</span><span class="nu0">0</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> panel.<span class="me1">add</span><span class="br0">(</span>list<span class="br0">)</span>;</div></li>
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
<li class="li1"><div class="de1"> <span class="coMULTI">/**</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> * Initializes a newly created pluglet instance, passing to it the pluglet</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> * 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"> * </span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> * @param peer the corresponding pluglet instance peer</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> */</span></div></li>
|
|
<li class="li1"><div class="de1"> </div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="kw2">public</span> <span class="kw4">void</span> initialize<span class="br0">(</span>PlugletPeer peer<span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
<li class="li1"><div class="de1"> <span class="kw2">this</span>.<span class="me1">peer</span> = peer;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--SimplePlugletInstance.initialize<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
<li class="li1"><div class="de1"> peer.<span class="me1">showStatus</span><span class="br0">(</span><span class="st0">"Hello world"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--SimplePlugletInstance.initialize "</span>+peer.<span class="me1">getMIMEType</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="coMULTI">/*</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> try {</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> OutputStreamWriter out = new OutputStreamWriter(peer.newStream("text/plain","_new"));</span></div></li>
|
|
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> String msg = "Hello, world";</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> out.write(msg,0,msg.length());</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> out.flush();</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> out.close();</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> } catch (Exception e) {</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> ;</span></div></li>
|
|
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> }</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> */</span></div></li>
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
<li class="li1"><div class="de1"> <span class="coMULTI">/**</span></div></li>
|
|
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> * 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"> * 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"> * 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"> * to in the browser window's history.</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> */</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="kw2">public</span> <span class="kw4">void</span> start<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
<li class="li2"><div class="de2"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--SimplePlugletInstance.start<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="br0">}</span></div></li>
|
|
<li class="li2"><div class="de2"> <span class="coMULTI">/**</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> * Called to instruct the pluglet instance to stop, thereby suspending its state.</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> * 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"> * 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"> * list.</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> */</span></div></li>
|
|
<li class="li2"><div class="de2"> <span class="kw2">public</span> <span class="kw4">void</span> stop<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--SimplePlugletInstance.stop<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="coMULTI">/**</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> * 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"> * 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"> * 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"> * window containing this page in the history is being closed.</span></div></li>
|
|
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> */</span></div></li>
|
|
<li class="li1"><div class="de1"> <span class="kw2">public</span> <span class="kw4">void</span> destroy<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
<li class="li2"><div class="de2"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--SimplePlugletInstance.destroy<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="br0">}</span></div></li>
|
|
<li class="li2"><div class="de2"> <span class="coMULTI">/**</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> * Called to tell the pluglet that the initial src/data stream is</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> * ready. </span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> * </span></div></li>
|
|
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> * @result PlugletStreamListener</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> */</span></div></li>
|
|
<li class="li2"><div class="de2"> <span class="kw2">public</span> PlugletStreamListener newStream<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
<li class="li1"><div class="de1"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--SimplePlugletInstance.newStream<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="kw2">return</span> <span class="kw2">new</span> TestStreamListener<span class="br0">(</span><span class="br0">)</span>;</div></li>
|
|
<li class="li1"><div class="de1"> <span class="br0">}</span></div></li>
|
|
<li class="li2"><div class="de2"> <span class="coMULTI">/**</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> * Called when the window containing the pluglet instance changes.</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> *</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> * @param frame the pluglet panel</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> */</span></div></li>
|
|
<li class="li1"><div class="de1"> <span class="kw2">public</span> <span class="kw4">void</span> setWindow<span class="br0">(</span><a href="http://www.google.com/search?q=allinurl%3AFrame+java.sun.com&bntl=1"><span class="kw3">Frame</span></a> frame<span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
|
|
<li class="li2"><div class="de2"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--Test...SetWindow "</span>+frame+<span class="st0">"<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="kw1">if</span><span class="br0">(</span>frame == <span class="kw2">null</span><span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
<li class="li2"><div class="de2"> <span class="kw2">return</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="br0">}</span></div></li>
|
|
<li class="li2"><div class="de2"> PlugletTagInfo info = peer.<span class="me1">getTagInfo</span><span class="br0">(</span><span class="br0">)</span>;</div></li>
|
|
<li class="li1"><div class="de1"> <span class="kw1">if</span> <span class="br0">(</span>info <span class="kw2">instanceof</span> PlugletTagInfo2<span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
|
|
<li class="li2"><div class="de2"> PlugletTagInfo2 info2 = <span class="br0">(</span>PlugletTagInfo2<span class="br0">)</span>info;</div></li>
|
|
<li class="li1"><div class="de1"> frame.<span class="me1">setSize</span><span class="br0">(</span>info2.<span class="me1">getWidth</span><span class="br0">(</span><span class="br0">)</span>,info2.<span class="me1">getHeight</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--SimplePlugletInstance.SetWindow width "</span>+info2.<span class="me1">getWidth</span><span class="br0">(</span><span class="br0">)</span>+ <span class="st0">" height "</span>+info2.<span class="me1">getHeight</span><span class="br0">(</span><span class="br0">)</span>+<span class="st0">"<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--Test...SetWindow "</span>+frame+<span class="st0">"<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
<li class="li1"><div class="de1"> frame.<span class="me1">add</span><span class="br0">(</span>panel<span class="br0">)</span>;</div></li>
|
|
<li class="li2"><div class="de2"> frame.<span class="me1">pack</span><span class="br0">(</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> frame.<span class="me1">show</span><span class="br0">(</span><span class="br0">)</span>;</div></li>
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
<li class="li1"><div class="de1"> <span class="coMULTI">/**</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> * Called to instruct the pluglet instance to print itself to a printer.</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> *</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> * @param print printer information.</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> */</span> </div></li>
|
|
<li class="li2"><div class="de2"> <span class="kw2">public</span> <span class="kw4">void</span> print<span class="br0">(</span><a href="http://www.google.com/search?q=allinurl%3APrinterJob+java.sun.com&bntl=1"><span class="kw3">PrinterJob</span></a> printerJob<span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="br0">}</span></div></li>
|
|
<li class="li2"><div class="de2"> </div></li>
|
|
<li class="li1"><div class="de1"> <span class="kw2">protected</span> <span class="kw4">void</span> finalize<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
<li class="li2"><div class="de2"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--SimplePlugletInstance.finalize()<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="br0">}</span></div></li>
|
|
<li class="li2"><div class="de2"> </div></li>
|
|
<li class="li1"><div class="de1"> </div></li>
|
|
<li class="li2"><div class="de2"><span class="br0">}</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">{</span></div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="kw2">public</span> TestStreamListener<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
<li class="li1"><div class="de1"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--TestStreamListener.TestStreamListener()<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
<li class="li1"><div class="de1"> <span class="coMULTI">/**</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> * Notify the observer that the URL has started to load. This method is</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> * called only once, at the beginning of a URL load.<BR><BR></span></div></li>
|
|
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> */</span></div></li>
|
|
<li class="li1"><div class="de1"> <span class="kw2">public</span> <span class="kw4">void</span> onStartBinding<span class="br0">(</span>PlugletStreamInfo streamInfo<span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
<li class="li2"><div class="de2"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--TestStreamListener.onStartBinding "</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"length "</span>+streamInfo.<span class="me1">getLength</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">" contenet type "</span>+ streamInfo.<span class="me1">getContentType</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">" url "</span>+ streamInfo.<span class="me1">getURL</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">" seekable "</span>+ streamInfo.<span class="me1">isSeekable</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> </div></li>
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
<li class="li1"><div class="de1"> <span class="coMULTI">/**</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> * Notify the client that data is available in the input stream. This</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> * 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"> * networking library...<BR><BR></span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> * </span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> * @param input The input stream containing the data. This stream can</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> * be either a blocking or non-blocking stream.</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> * @param length The amount of data that was just pushed into the stream.</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> */</span></div></li>
|
|
<li class="li2"><div class="de2"> <span class="kw2">public</span> <span class="kw4">void</span> onDataAvailable<span class="br0">(</span>PlugletStreamInfo plugletInfo, <a href="http://www.google.com/search?q=allinurl%3AInputStream+java.sun.com&bntl=1"><span class="kw3">InputStream</span></a> input,<span class="kw4">int</span> length<span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="kw2">try</span><span class="br0">{</span></div></li>
|
|
<li class="li2"><div class="de2"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--TestStreamListener.onDataAvailable "</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--length "</span>+input.<span class="me1">available</span><span class="br0">(</span><span class="br0">)</span>+<span class="st0">"<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&bntl=1"><span class="kw3">String</span></a> cur = <span class="kw2">null</span>;</div></li>
|
|
<li class="li1"><div class="de1"> <a href="http://www.google.com/search?q=allinurl%3ABufferedReader+java.sun.com&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&bntl=1"><span class="kw3">BufferedReader</span></a><span class="br0">(</span><span class="kw2">new</span> <a href="http://www.google.com/search?q=allinurl%3AInputStreamReader+java.sun.com&bntl=1"><span class="kw3">InputStreamReader</span></a><span class="br0">(</span>input<span class="br0">)</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="kw1">while</span> <span class="br0">(</span><span class="kw2">null</span> != <span class="br0">(</span>cur = bufferedReader.<span class="me1">readLine</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
<li class="li1"><div class="de1"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span>cur<span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
<li class="li1"><div class="de1"> <span class="br0">}</span> <span class="kw2">catch</span><span class="br0">(</span><a href="http://www.google.com/search?q=allinurl%3AException+java.sun.com&bntl=1"><span class="kw3">Exception</span></a> e<span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
|
|
<li class="li2"><div class="de2"> ;</div></li>
|
|
<li class="li1"><div class="de1"> <span class="br0">}</span></div></li>
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
<li class="li1"><div class="de1"> <span class="kw2">public</span> <span class="kw4">void</span> onFileAvailable<span class="br0">(</span>PlugletStreamInfo plugletInfo, <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&bntl=1"><span class="kw3">String</span></a> fileName<span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
|
|
<li class="li2"><div class="de2"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--TestStreamListener.onFileAvailable<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
<li class="li1"><div class="de1"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">" fileName"</span> + fileName<span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
<li class="li1"><div class="de1"> <span class="coMULTI">/**</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="coMULTI"> * Notify the observer that the URL has finished loading. </span></div></li>
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> */</span></div></li>
|
|
<li class="li2"><div class="de2"> <span class="kw2">public</span> <span class="kw4">void</span> onStopBinding<span class="br0">(</span>PlugletStreamInfo plugletInfo,<span class="kw4">int</span> status<span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--TestStreamListener.onStopBinding<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="kw2">public</span> <span class="kw4">int</span> getStreamType<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
<li class="li2"><div class="de2"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"--TestStreamListener.getStreamType<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="kw2">return</span> <span class="nu0">1</span>; <span class="co1">//:)</span></div></li>
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="br0">}</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"> </div></li>
|
|
<li class="li2"><div class="de2"><span class="sc2"><EMBED <span class="kw3">type</span>=<span class="st0">"application/x-simple-pluglet"</span> <span class="kw3">name</span>=<span class="st0">"test"</span> </div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="kw3">src</span>=<span class="st0">"index.html"</span> <span class="kw3">width</span>=<span class="nu0">400</span> <span class="kw3">height</span>=<span class="nu0">200</span>></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">[</span><span class="nu0">0</span><span class="br0">]</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> </div></li>
|
|
<li class="li1"><div class="de1"><span class="kw2">function</span> callPluglet0<span class="br0">(</span><span class="br0">)</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="br0">{</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="kw2">var</span> strs2 = <span class="br0">{</span></div></li>
|
|
<li class="li2"><div class="de2"> value : <span class="br0">[</span><span class="br0">]</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="br0">}</span>;</div></li>
|
|
<li class="li2"><div class="de2"> </div></li>
|
|
|
|
<li class="li1"><div class="de1"><span class="kw2">var</span> strslen2 = <span class="br0">{</span></div></li>
|
|
<li class="li2"><div class="de2"> value : strs2.<span class="me1">value</span>.<span class="me1">length</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="br0">}</span>;</div></li>
|
|
<li class="li2"><div class="de2"> </div></li>
|
|
<li class="li1"><div class="de1"> embed.<span class="me1">callPlugletMethod</span><span class="br0">(</span><span class="st0">"calledFromJavaScript0"</span>, strslen2, strs2<span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="kw3">alert</span><span class="br0">(</span><span class="st0">"Pluglet returned "</span> + strs2.<span class="me1">value</span><span class="br0">)</span>;</div></li>
|
|
<li class="li1"><div class="de1"><span class="br0">}</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="kw2">function</span> callPluglet1<span class="br0">(</span><span class="br0">)</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="br0">{</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="kw2">var</span> strs2 = <span class="br0">{</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"> value : <span class="br0">[</span> <span class="st0">"arg0"</span> <span class="br0">]</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="br0">}</span>;</div></li>
|
|
<li class="li1"><div class="de1"> </div></li>
|
|
<li class="li2"><div class="de2"><span class="kw2">var</span> strslen2 = <span class="br0">{</span></div></li>
|
|
<li class="li1"><div class="de1"> value : strs2.<span class="me1">value</span>.<span class="me1">length</span></div></li>
|
|
|
|
<li class="li2"><div class="de2"><span class="br0">}</span>;</div></li>
|
|
<li class="li1"><div class="de1"> </div></li>
|
|
<li class="li2"><div class="de2"> embed.<span class="me1">callPlugletMethod</span><span class="br0">(</span><span class="st0">"calledFromJavaScript1"</span>, strslen2, strs2<span class="br0">)</span>;</div></li>
|
|
<li class="li1"><div class="de1"> <span class="kw3">alert</span><span class="br0">(</span><span class="st0">"Pluglet returned "</span> + strs2.<span class="me1">value</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"><span class="br0">}</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="kw2">function</span> callPluglet2<span class="br0">(</span><span class="br0">)</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="br0">{</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="kw2">var</span> strs2 = <span class="br0">{</span></div></li>
|
|
<li class="li2"><div class="de2"> value : <span class="br0">[</span> <span class="st0">"arg0"</span>, <span class="st0">"arg1"</span> <span class="br0">]</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"><span class="br0">}</span>;</div></li>
|
|
<li class="li2"><div class="de2"> </div></li>
|
|
<li class="li1"><div class="de1"><span class="kw2">var</span> strslen2 = <span class="br0">{</span></div></li>
|
|
<li class="li2"><div class="de2"> value : strs2.<span class="me1">value</span>.<span class="me1">length</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="br0">}</span>;</div></li>
|
|
<li class="li2"><div class="de2"> </div></li>
|
|
|
|
<li class="li1"><div class="de1"> embed.<span class="me1">callPlugletMethod</span><span class="br0">(</span><span class="st0">"calledFromJavaScript2"</span>, strslen2, strs2<span class="br0">)</span>;</div></li>
|
|
<li class="li2"><div class="de2"> <span class="kw3">alert</span><span class="br0">(</span><span class="st0">"Pluglet returned "</span> + strs2.<span class="me1">value</span><span class="br0">)</span>;</div></li>
|
|
<li class="li1"><div class="de1"><span class="br0">}</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="kw2">function</span> callPluglet3<span class="br0">(</span><span class="br0">)</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"><span class="br0">{</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="kw2">var</span> strs2 = <span class="br0">{</span></div></li>
|
|
<li class="li1"><div class="de1"> value : <span class="br0">[</span> <span class="st0">"arg0"</span>, <span class="st0">"arg1"</span>, <span class="st0">"arg2"</span> <span class="br0">]</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="br0">}</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> </div></li>
|
|
<li class="li2"><div class="de2"><span class="kw2">var</span> strslen2 = <span class="br0">{</span></div></li>
|
|
<li class="li1"><div class="de1"> value : strs2.<span class="me1">value</span>.<span class="me1">length</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="br0">}</span>;</div></li>
|
|
<li class="li1"><div class="de1"> </div></li>
|
|
<li class="li2"><div class="de2"> embed.<span class="me1">callPlugletMethod</span><span class="br0">(</span><span class="st0">"calledFromJavaScript3"</span>, strslen2, strs2<span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="kw3">alert</span><span class="br0">(</span><span class="st0">"Pluglet returned "</span> + strs2.<span class="me1">value</span><span class="br0">)</span>;</div></li>
|
|
<li class="li2"><div class="de2"><span class="br0">}</span> </div></li></ol></div></div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<p>Line 1 is standard JavaScript to get the 0th
|
|
<code><EMBED></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"> * an entry named 'value', whose value is a JavaScript String that is</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"><span class="coMULTI"> * 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"> */</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="kw2">function</span> callPlugletMethod<span class="br0">(</span><<span class="st0">name of a conforming method implemented on Pluglet Class</span>>,</div></li>
|
|
<li class="li2"><div class="de2"> <<span class="st0">JavaScript associative array containing an</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"><span class="st0"> entry named 'value', whose value is</span></div></li>
|
|
<li class="li2"><div class="de2"><span class="st0"> JavaScript array (of length zero thru ten) of</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"><span class="st0"> JavaScript strings. Each element in the</span></div></li>
|
|
|
|
<li class="li2"><div class="de2"><span class="st0"> array will be passed to the corresponding</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="st0"> String argument in the conforming method.</span>>,</div></li>
|
|
|
|
<li class="li2"><div class="de2"> <<span class="st0">JavaScript associative array containing an</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="st0"> entry named 'value', whose value is a</span></div></li>
|
|
|
|
<li class="li2"><div class="de2"><span class="st0"> JavaScript number representing the length of</span></div></li>
|
|
<li class="li1"><div class="de1"><span class="st0"> the array.</span>><span class="br0">)</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"> <span class="kw2">public</span> <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&bntl=1"><span class="kw3">String</span></a> calledFromJavaScript3<span class="br0">(</span><a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&bntl=1"><span class="kw3">String</span></a> arg0, <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&bntl=1"><span class="kw3">String</span></a> arg1, <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&bntl=1"><span class="kw3">String</span></a> arg2<span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
|
|
<li class="li2"><div class="de2"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"calledFromJavaScript2<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
<li class="li1"><div class="de1"> <span class="kw2">return</span> <span class="st0">"3 args. arg0: "</span> + arg0 + <span class="st0">" arg1: "</span> + arg1 + <span class="st0">" arg2: "</span> + arg2 + <span class="st0">""</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
<li class="li1"><div class="de1"> </div></li>
|
|
<li class="li2"><div class="de2"> <span class="kw2">public</span> <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&bntl=1"><span class="kw3">String</span></a> calledFromJavaScript2<span class="br0">(</span><a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&bntl=1"><span class="kw3">String</span></a> arg0, <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&bntl=1"><span class="kw3">String</span></a> arg1<span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
|
|
<li class="li1"><div class="de1"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"calledFromJavaScript2<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
<li class="li2"><div class="de2"> <span class="kw2">return</span> <span class="st0">"2 args. arg0: "</span> + arg0 + <span class="st0">" arg1: "</span> + arg1 + <span class="st0">""</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="br0">}</span></div></li>
|
|
<li class="li2"><div class="de2"> </div></li>
|
|
<li class="li1"><div class="de1"> <span class="kw2">public</span> <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&bntl=1"><span class="kw3">String</span></a> calledFromJavaScript1<span class="br0">(</span><a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&bntl=1"><span class="kw3">String</span></a> arg0<span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
<li class="li2"><div class="de2"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"calledFromJavaScript1<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li1"><div class="de1"> <span class="kw2">return</span> <span class="st0">"1 args. arg0: "</span> + arg0 + <span class="st0">""</span>;</div></li>
|
|
<li class="li2"><div class="de2"> <span class="br0">}</span></div></li>
|
|
<li class="li1"><div class="de1"> </div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="kw2">public</span> <a href="http://www.google.com/search?q=allinurl%3AString+java.sun.com&bntl=1"><span class="kw3">String</span></a> calledFromJavaScript0<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span></div></li>
|
|
<li class="li1"><div class="de1"> org.<span class="me1">mozilla</span>.<span class="me1">util</span>.<span class="me1">DebugPluglet</span>.<span class="me1">print</span><span class="br0">(</span><span class="st0">"calledFromJavaScript0<span class="es0">\n</span>"</span><span class="br0">)</span>;</div></li>
|
|
|
|
<li class="li2"><div class="de2"> <span class="kw2">return</span> <span class="st0">"0 arg hard coded result"</span>;</div></li>
|
|
<li class="li1"><div class="de1"> <span class="br0">}</span></div></li>
|
|
<li class="li2"><div class="de2"> </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; "> </div>
|
|
|
|
</body>
|
|
</html>
|