KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > fr > improve > struts > taglib > layout > renderer > BasicCrumbRenderer


1 package fr.improve.struts.taglib.layout.renderer;
2
3 import javax.servlet.http.HttpServletRequest JavaDoc;
4 import javax.servlet.jsp.JspException JavaDoc;
5 import javax.servlet.jsp.PageContext JavaDoc;
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     /**
17      * pageContext renderer key.
18      */

19     private static final String JavaDoc PANEL_KEY = "fr.improve.struts.taglib.layout.renderer.BasicCrumbRenderer.PANEL";
20
21     /**
22      * Start crumbs renderering.
23      */

24     public void doStartCrumbs(PageContext JavaDoc pageContext, CrumbsTag crumbs) throws JspException JavaDoc {
25         String JavaDoc align = crumbs.getAlign();
26         String JavaDoc width = crumbs.getWidth();
27         String JavaDoc styleClass = crumbs.getStyleClass();
28         String JavaDoc key = crumbs.getKey();
29         String JavaDoc bundle = crumbs.getBundle();
30         StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
31         
32         Skin skin = LayoutUtils.getSkin(pageContext.getSession());
33         Class JavaDoc panelClass = skin.getPanelClass(null);
34         PanelInterface panel = null;
35         try {
36             panel = (PanelInterface) panelClass.newInstance();
37         } catch (Exception JavaDoc e) {
38             TagUtils.saveException(pageContext, e);
39             throw new JspException JavaDoc("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         // Old call to CrumbsTag.doStartLayoutTag
50
buffer.append("<tr><td>");
51         TagUtils.write(pageContext, buffer.toString());
52     }
53     
54     /**
55      * End crumbs rendering.
56      */

57     public void doEndCrumbs(PageContext JavaDoc in_pageContext, CrumbsTag crumbs) throws JspException JavaDoc {
58         PanelInterface panel = (PanelInterface) in_pageContext.getAttribute(PANEL_KEY);
59
60         // Old CrumbsTag.doEndLayoutTag code
61
TagUtils.write(in_pageContext, "</td></tr>");
62         
63         StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
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     /**
72      * Render a crumb.
73      */

74     public void doRenderCrumb(PageContext JavaDoc in_pageContext, CrumbsTag in_crumbsTag, Crumb in_crumb) throws JspException JavaDoc {
75         if (in_crumbsTag.needSeparator()) {
76             TagUtils.write(in_pageContext, "&nbsp;");
77             TagUtils.write(in_pageContext, in_crumbsTag.getSeparator());
78             TagUtils.write(in_pageContext, "&nbsp;");
79         }
80         
81         String JavaDoc lc_styleClass = in_crumbsTag.getStyleClass();
82         if (lc_styleClass!=null) lc_styleClass += in_crumbsTag.getLevel();
83
84         TagUtils.write(in_pageContext, "<a");
85         String JavaDoc 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 JavaDoc)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 JavaDoc 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