KickJava   Java API By Example, From Geeks To Geeks.

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


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 HelloWorld2 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(HelloWorld2HTML.class);
33

34         //load the localized DOM template
35
Document page = DefaultDOMLoader.getGlobalInstance().getDOM(HelloWorld2HTML.class, vc.getViewCapabilities().getClientLocale());
36         Node node = page.getElementById("HelloWorld");
37
38         //create the component and bind it to the view
39
BTemplate templateComp = new BTemplate();
40         templateComp.setView(new DefaultTemplateView(node));
41
42         //now specify the models
43
templateComp.addModel(new HelloWorldModel());
44         String JavaDoc[] items = new String JavaDoc[] {"Cabbage", "Carrots", "Pickles", "Sugar", "Wheaties", "Flour", "Potatoes"};
45         String JavaDoc[] qtys = new String JavaDoc[] {"3 heads", "1 bag", "1 jar", "5 lbs", "3 bxs", "50 lbs", "25 lbs"};
46         templateComp.addModel(new GroceriesModel(items, qtys));
47         
48         //add the component to the root
49
root.addChild(templateComp);
50     
51         //return the page
52
return page;
53     }
54
55     //--------------- GroceriesModel -------------------------
56
/**
57      * Groceries Model
58      */

59     class GroceriesModel extends AbstractTemplateModel implements IterativeModel {
60
61         String JavaDoc[] items = null;
62         String JavaDoc[] qtys = null;
63         int cntr = -1;
64
65         //constructor
66
public GroceriesModel(String JavaDoc[] iitems, String JavaDoc[] iqtys) {
67             items = iitems;
68             qtys = iqtys;
69         }
70
71         //register the model by name
72
public String JavaDoc getName() {return "Groceries";}
73
74         //provide items by key
75
public Object JavaDoc getItem(String JavaDoc key) {
76             if (key.equals("Item")) return items[cntr];
77             else if (key.equals("Qty")) return qtys[cntr];
78             else return super.getItem(key);
79         }
80
81         //prepare for iteration
82
public void preIterate() {
83             cntr = -1;
84         }
85         
86         //return true if there are more rows in the data model
87
public boolean hasNext() {
88             return (cntr<(items.length-1));
89         }
90         
91         //load the next row in the model
92
public void loadNext() {
93             cntr++;
94         }
95
96         //cleanup after iteration
97
public void postIterate() {}
98     }
99
100     //--------------- HelloWorldModel ------------------------
101
/**
102      * HelloWorldModel
103      */

104     class HelloWorldModel extends AbstractTemplateModel {
105     
106         //register the model by name
107
public String JavaDoc getName() {
108             return "HelloWorld";
109         }
110         
111         //provide items by key
112
public Object JavaDoc getItem(String JavaDoc key) {
113             ViewContext vc = getViewContext();
114             if (key.equals("Title")) return "Hello World 2 example";
115             else if (key.equals("Descr")) return "This example illustrates how we can use directives in the template to iterate over data structures to form structures like lists and tables.";
116             else if (key.equals("Hello")) return "Hello World! Hi Ma! Hi Pa!";
117             else if (key.equals("Footer")) return HelloWorld2Footer.getNode(vc);
118             else return super.getItem(key);
119         }
120     }
121 }
122
Popular Tags