In some instances you want to have the robots and gadgets to interact. A scenario where it could make sense is, when the user wants information about a site. The page which could be showed could be the sales report of the customer or some other information which is of interest to the participants.
This tutorial has basis in the Creating A Simple Inline Gadget To Show External Web Applications, which shows how to inline a page into the a wave using a gadget. There is a robot which creates a form for entering the url of the page. When the user press submit the robot adds a gadget which inline the specified url.
First the robot which inserts the gadget.
public final String URLFIELD = "URL_FIELD";
@Override
public void processEvents(RobotMessageBundle bundle) {
Wavelet wavelet = bundle.getWavelet();
String creator = wavelet.getCreator();
if (bundle.wasSelfAdded()) {
Blip blip = wavelet.appendBlip();
TextView textView = blip.getDocument();
textView.appendMarkup("<p><b>Inline the url</b></p>\n");
FormView form = textView.getFormView();
form.append(new FormElement(ElementType.INPUT, URLFIELD,"http://"));
form.append(new FormElement(ElementType.BUTTON, "submit", "INSERT"));
}
for (Event e : bundle.getEvents()) {
if (e.getType() == EventType.FORM_BUTTON_CLICKED) {
Blip blip = e.getBlip();
FormView form = blip.getDocument().getFormView();
FormElement urlElement = form.getFormElement(URLFIELD);
GadgetView gadgetView= blip.getDocument().getGadgetView();
gadgetView.append(new Gadget("http://pollenvarsel.appspot.com/gadget?url="+urlElement.getValue()));
}
}
}
}
The robots listens for two event. First the SELF_ADDED which creates the URL form with a text box and a submit button. When the button is pressed a gadget is inserted in to the Blip, with the url of the gadget + the target URL. Probably something should be performed to ensure that the submitted URL is valid and can be sent as a query parameter. Probably a URL encoding should be performed or save the data in the datastorage.
throws IOException {
resp.setContentType("application/xml");
PrintWriter out= resp.getWriter();
out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+"<Module>"
+"<ModulePrefs title=\"inline_external_page\" height=\"400\" width=\"800\"/>"
+"<Content type=\"html\">"
+"<![CDATA[ "
+" <div id=\"main\"><!--Main container for the iframe-->"
+" <iframe name=\"check\" id=\"check\" height=\"100%\" src =\""+(String)req.getParameter("url")+"\" width=\"100%\" frameborder=\"0\">"
+"<p>Your browser does not support iframes .</p>"
+"</iframe> <!-- this is where contents of the links are displayed -->"
+"</div>"
+"]]></Content>"
+"</Module>");
}
The code is the same in the original blog it has just been placed into a servlet, to make it possible to have parameters inside. It just inserts the query parameter into the gadget XML.
The code can be found at code.google.com.
Related posts:
- Google Wave Robot and gadget interaction With the new Robot API version 2 is it possible...
- WordPress publisher bot Inspired by offlineblog’s blog about Live blogging and the WordPress...
- Wave robots using the Grails Wave plugin I had when I first got access to Wave, I...
- Simple Form Gadget Creating my first form gadget, I call it “form gadget”...
- 5 Easy Steps To Create A Google Wave Gadget Using Flex Hi Everyone! We’re presenting you a simple 5-part video tutorial...
Related posts brought to you by Yet Another Related Posts Plugin.
1 comment so far ↓
[...] AdSense into the pages. It could be possible to insert AdSense into gadgets like showed in the blog Gadget and Robots interaction. AdSense is just a Javascript, which should be inserted on a page and then it will show the ads. [...]
Leave a Comment