1 package fr.improve.struts.taglib.layout.renderer; 2 3 import javax.servlet.http.HttpServletRequest ; 4 import javax.servlet.jsp.JspException ; 5 import javax.servlet.jsp.PageContext ; 6 7 import fr.improve.struts.taglib.layout.crumb.Crumb; 8 import fr.improve.struts.taglib.layout.crumb.CrumbsTag; 9 import fr.improve.struts.taglib.layout.skin.Skin; 10 import fr.improve.struts.taglib.layout.util.ICrumbRenderer; 11 import fr.improve.struts.taglib.layout.util.LayoutUtils; 12 import fr.improve.struts.taglib.layout.util.PanelInterface; 13 import fr.improve.struts.taglib.layout.util.TagUtils; 14 15 public class BasicCrumbRenderer implements ICrumbRenderer { 16 19 private static final String PANEL_KEY = "fr.improve.struts.taglib.layout.renderer.BasicCrumbRenderer.PANEL"; 20 21 24 public void doStartCrumbs(PageContext pageContext, CrumbsTag crumbs) throws JspException { 25 String align = crumbs.getAlign(); 26 String width = crumbs.getWidth(); 27 String styleClass = crumbs.getStyleClass(); 28 String key = crumbs.getKey(); 29 String bundle = crumbs.getBundle(); 30 StringBuffer buffer = new StringBuffer (); 31 32 Skin skin = LayoutUtils.getSkin(pageContext.getSession()); 33 Class panelClass = skin.getPanelClass(null); 34 PanelInterface panel = null; 35 try { 36 panel = (PanelInterface) panelClass.newInstance(); 37 } catch (Exception e) { 38 TagUtils.saveException(pageContext, e); 39 throw new JspException ("Could not create panel renderer instance"); 40 } 41 42 pageContext.setAttribute(PANEL_KEY, panel); 43 44 panel.init(pageContext, styleClass, crumbs); 45 panel.doStartPanel(buffer, align, width); 46 panel.doPrintTitle(buffer, LayoutUtils.getLabel(pageContext, bundle, key, null, false)); 47 panel.doBeforeBody(buffer, align); 48 49 buffer.append("<tr><td>"); 51 TagUtils.write(pageContext, buffer.toString()); 52 } 53 54 57 public void doEndCrumbs(PageContext in_pageContext, CrumbsTag crumbs) throws JspException { 58 PanelInterface panel = (PanelInterface) in_pageContext.getAttribute(PANEL_KEY); 59 60 TagUtils.write(in_pageContext, "</td></tr>"); 62 63 StringBuffer buffer = new StringBuffer (); 64 panel.doAfterBody(buffer); 65 panel.doEndPanel(buffer); 66 TagUtils.write(in_pageContext, buffer.toString()); 67 68 in_pageContext.removeAttribute(PANEL_KEY); 69 } 70 71 74 public void doRenderCrumb(PageContext in_pageContext, CrumbsTag in_crumbsTag, Crumb in_crumb) throws JspException { 75 if (in_crumbsTag.needSeparator()) { 76 TagUtils.write(in_pageContext, " "); 77 TagUtils.write(in_pageContext, in_crumbsTag.getSeparator()); 78 TagUtils.write(in_pageContext, " "); 79 } 80 81 String lc_styleClass = in_crumbsTag.getStyleClass(); 82 if (lc_styleClass!=null) lc_styleClass += in_crumbsTag.getLevel(); 83 84 TagUtils.write(in_pageContext, "<a"); 85 String lc_link = in_crumb.getLink(); 86 if (lc_link!=null) { 87 TagUtils.write(in_pageContext," HREF=\""); 88 if (!lc_link.startsWith("javascript:") 89 && !lc_link.startsWith("http:") 90 && !lc_link.startsWith("https:") 91 && !lc_link.startsWith("mailto:") 92 && !lc_link.startsWith("ftp:")) { 93 TagUtils.write(in_pageContext, ((HttpServletRequest )in_pageContext.getRequest()).getContextPath()); 94 } 95 TagUtils.write(in_pageContext, lc_link); 96 TagUtils.write(in_pageContext, "\""); 97 if (in_crumb.getTarget()!=null) { 98 TagUtils.write(in_pageContext, " target=\""); 99 TagUtils.write(in_pageContext, in_crumb.getTarget()); 100 TagUtils.write(in_pageContext, "\""); 101 } 102 } 103 if (lc_styleClass!=null) { 104 TagUtils.write(in_pageContext, " class=\""); 105 TagUtils.write(in_pageContext, lc_styleClass); 106 TagUtils.write(in_pageContext, "\""); 107 } 108 TagUtils.write(in_pageContext, ">"); 109 110 String lc_bundle = in_crumb.getBundle(); 111 if (lc_bundle==null) { 112 lc_bundle = in_crumbsTag.getBundle(); 113 } 114 TagUtils.write(in_pageContext,LayoutUtils.getLabel(in_pageContext, lc_bundle, in_crumb.getKey(), null, false)); 115 TagUtils.write(in_pageContext,"</a>"); 116 } 117 118 119 120 } 121 | Popular Tags |