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 HelloWorld1b 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(HelloWorld1bHTML.class, vc.getViewCapabilities().getClientLocale()); 36 Node node = page.getElementById("HelloWorld"); 37 38 BTemplate templateComp = new BTemplate(new HelloWorldModel()); 40 templateComp.setView(new DefaultTemplateView(node)); 41 42 root.addChild(templateComp); 44 45 return page; 47 } 48 49 53 class HelloWorldModel extends AbstractTemplateModel { 54 public String getName() { 56 return "HelloWorld"; 57 } 58 59 public Object getItem(String 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 Document footer = null; 69 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 |