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 20 public class HelloWorld2 extends ComponentGateway { 21 22 25 29 public Document handleDefault (BComponent root, ViewContext vc, HttpServletRequest req, HttpServletResponse resp) throws IOException { 30 34 Document page = DefaultDOMLoader.getGlobalInstance().getDOM(HelloWorld2HTML.class, vc.getViewCapabilities().getClientLocale()); 36 Node node = page.getElementById("HelloWorld"); 37 38 BTemplate templateComp = new BTemplate(); 40 templateComp.setView(new DefaultTemplateView(node)); 41 42 templateComp.addModel(new HelloWorldModel()); 44 String [] items = new String [] {"Cabbage", "Carrots", "Pickles", "Sugar", "Wheaties", "Flour", "Potatoes"}; 45 String [] qtys = new String [] {"3 heads", "1 bag", "1 jar", "5 lbs", "3 bxs", "50 lbs", "25 lbs"}; 46 templateComp.addModel(new GroceriesModel(items, qtys)); 47 48 root.addChild(templateComp); 50 51 return page; 53 } 54 55 59 class GroceriesModel extends AbstractTemplateModel implements IterativeModel { 60 61 String [] items = null; 62 String [] qtys = null; 63 int cntr = -1; 64 65 public GroceriesModel(String [] iitems, String [] iqtys) { 67 items = iitems; 68 qtys = iqtys; 69 } 70 71 public String getName() {return "Groceries";} 73 74 public Object getItem(String 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 public void preIterate() { 83 cntr = -1; 84 } 85 86 public boolean hasNext() { 88 return (cntr<(items.length-1)); 89 } 90 91 public void loadNext() { 93 cntr++; 94 } 95 96 public void postIterate() {} 98 } 99 100 104 class HelloWorldModel extends AbstractTemplateModel { 105 106 public String getName() { 108 return "HelloWorld"; 109 } 110 111 public Object getItem(String 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 |