1 20 package org.enhydra.barracuda.contrib.sam.xmlform; 21 22 import java.io.*; 23 import java.util.*; 24 import javax.servlet.*; 25 import javax.servlet.http.*; 26 27 import org.w3c.dom.*; 28 import org.w3c.dom.html.*; 29 import org.enhydra.xml.xmlc.*; 30 31 import org.enhydra.barracuda.core.comp.*; 32 import org.enhydra.barracuda.core.util.dom.*; 33 import org.enhydra.barracuda.core.event.*; 34 import org.enhydra.barracuda.core.event.helper.*; 35 import org.enhydra.barracuda.core.helper.servlet.*; 36 import org.enhydra.barracuda.core.util.*; 37 import org.enhydra.barracuda.plankton.exceptions.*; 38 import org.enhydra.barracuda.core.view.*; 39 import org.enhydra.barracuda.core.util.http.*; 40 import org.enhydra.barracuda.core.comp.renderer.*; 41 import org.apache.log4j.*; 42 43 54 public abstract class ModifyDomViewHandler extends DefaultViewHandler { 55 56 protected static Logger logger = Logger.getLogger(ModifyDomViewHandler.class.getName()); 57 58 protected BTemplate templateComp = null; 59 60 66 public abstract Object getTemplateModels(ViewContext vc) throws EventException, ServletException, IOException; 67 68 69 public abstract Class getTemplateClass(ViewContext vc) throws EventException, ServletException, IOException; 70 71 74 public BTemplate getBTemplate() { 75 return templateComp; 76 } 77 78 83 protected void modifyDOM(Document page, ViewContext vc) throws EventException, ServletException, IOException { 84 } 85 86 89 public Document handleViewEvent(BComponent root) throws EventException, ServletException, IOException { 90 91 ViewContext vc = getViewContext(); 92 Document page = DefaultDOMLoader.getGlobalInstance().getDOM(getTemplateClass(vc), vc.getViewCapabilities().getClientLocale()); 93 modifyDOM(page, vc); 94 95 templateComp = new BTemplate(); 97 Object o = getTemplateModels(vc); 98 if (o instanceof TemplateModel) templateComp.addModel((TemplateModel) o); 99 else if (o instanceof List) templateComp.addModels((List) o); 100 else if (o == null) { } 101 else throw new RuntimeException ("Fatal err: Model must return either TemplateModel or List"); 102 templateComp.setView(new DefaultTemplateView(page.getDocumentElement())); 103 root.addChild(templateComp); 104 105 return page; 106 } 107 } 108 | Popular Tags |