KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > enhydra > barracuda > tutorials > comp > HelloWorld1b


1 package org.enhydra.barracuda.tutorials.comp;
2
3 import java.io.*;
4 import java.util.*;
5 import javax.servlet.*;
6 import javax.servlet.http.*;
7
8 import org.w3c.dom.*;
9 import org.enhydra.xml.xmlc.*;
10
11 import org.enhydra.barracuda.core.comp.*;
12 import org.enhydra.barracuda.core.comp.helper.*;
13 import org.enhydra.barracuda.core.util.dom.*;
14 import org.enhydra.barracuda.tutorials.xmlc.*;
15
16 /**
17  * Here's an example of HelloWorld using the BTemplate
18  * component
19  */

20 public class HelloWorld1b extends ComponentGateway {
21
22     //xmlc factory (ok as static because its threadsafe)
23
// private static XMLCFactory xmlcFactory = null;
24

25     //-------------------- ComponentGateway ----------------------
26
/**
27      * Handle the default HttpRequest.
28      */

29     public Document handleDefault (BComponent root, ViewContext vc, HttpServletRequest req, HttpServletResponse resp) throws IOException {
30         //load the DOM object
31
// if (xmlcFactory==null) xmlcFactory = new XMLCStdFactory(this.getClass().getClassLoader(), new StreamXMLCLogger());
32
// XMLObject page = xmlcFactory.create(HelloWorld1bHTML.class);
33

34         //load the localized DOM template
35
Document page = DefaultDOMLoader.getGlobalInstance().getDOM(HelloWorld1bHTML.class, vc.getViewCapabilities().getClientLocale());
36         Node node = page.getElementById("HelloWorld");
37
38         //create the component and bind it to the view and the model
39
BTemplate templateComp = new BTemplate(new HelloWorldModel());
40         templateComp.setView(new DefaultTemplateView(node));
41
42         //add the component to the root
43
root.addChild(templateComp);
44     
45         //return the page
46
return page;
47     }
48
49     //--------------- HelloWorldModel ------------------------
50
/**
51      * HelloWorldModel
52      */

53     class HelloWorldModel extends AbstractTemplateModel {
54         //register the model by name
55
public String JavaDoc getName() {
56             return "HelloWorld";
57         }
58         
59         //provide items by key
60
public Object JavaDoc getItem(String JavaDoc key) {
61             ViewContext vc = getViewContext();
62             if (key.equals("Title")) return "Hello World 1 example";
63             else if (key.equals("Header")) return new BLink("Email Christian", "mailto:christian.cryder@lutris.com");
64             else if (key.equals("Descr")) return "This example illustrates how we can use models that return more than just Strings. Specifically, the model that backs the BTemplate component is returning a complex header and footer. For the header we are returning a BLink object that renders to the email address in the upper right hand corner. For the footer we are importing the HTML snippet that can be seen at the bottom of the page.";
65             else if (key.equals("Hello")) return "Hello World! Hi Ma! Hi Pa!";
66             else if (key.equals("Footer")) {
67 // XMLObject footer = xmlcFactory.create(HelloWorld1b_footerHTML.class);
68
Document footer = null;
69                 //load the localized DOM template
70
try {footer = DefaultDOMLoader.getGlobalInstance().getDOM(HelloWorld1b_footerHTML.class, vc.getViewCapabilities().getClientLocale());}
71                 catch (IOException ioe) {logger.fatal ("Fatal Error loading DOM template:", ioe);}
72                 Node footerNode = ((HelloWorld1b_footerHTML)footer).getElementFooter();
73                 return vc.getElementFactory().getDocument().importNode(footerNode, true);
74             }
75             else return super.getItem(key);
76         }
77     }
78 }
79
Popular Tags