1 package org.roller.presentation.tags.menu; 2 3 import java.io.StringWriter ; 4 5 import javax.servlet.http.HttpServletRequest ; 6 import javax.servlet.http.HttpServletResponse ; 7 import javax.servlet.jsp.JspException ; 8 import javax.servlet.jsp.tagext.TagSupport ; 9 10 import org.apache.commons.logging.Log; 11 import org.apache.commons.logging.LogFactory; 12 import org.apache.velocity.Template; 13 import org.apache.velocity.VelocityContext; 14 import org.apache.velocity.app.Velocity; 15 import org.roller.RollerException; 16 import org.roller.presentation.RollerContext; 17 import org.roller.presentation.RollerRequest; 18 import org.roller.presentation.velocity.ContextLoader; 19 import org.roller.presentation.velocity.PageModel; 20 21 31 public class NavigationBarTag extends MenuTag 32 { 33 private static Log mLogger = 34 LogFactory.getFactory().getInstance(RollerRequest.class); 35 36 private boolean mVertical = false; 37 private String mDelimiter = "|"; 38 39 40 public boolean getVertical() 41 { 42 return mVertical; 43 } 44 45 public void setVertical(boolean v) 46 { 47 mVertical = v; 48 } 49 50 51 public String getDelimiter() 52 { 53 return mDelimiter; 54 } 55 56 public void setDelimiter(String v) 57 { 58 mDelimiter = v; 59 } 60 61 66 public String getView() { return super.getView(); } 67 public void setView( String v ) 68 { 69 super.setView(v); 70 } 71 72 76 public String getModel() { return super.getModel(); } 77 public void setModel( String v ) { super.setModel(v); } 78 79 public String view(boolean isVertical) 81 { 82 mVertical = isVertical; 83 84 return emit(); 85 } 86 87 public void prepareContext( VelocityContext ctx ) 88 { 89 HttpServletRequest req = (HttpServletRequest )pageContext.getRequest(); 90 HttpServletResponse res = (HttpServletResponse )pageContext.getResponse(); 91 92 RollerRequest rreq = RollerRequest.getRollerRequest(req); 93 rreq.setPageContext(pageContext); 94 RollerContext rollerCtx = RollerContext.getRollerContext(req); 95 try 96 { 97 ContextLoader.setupContext( ctx, rreq, res ); 98 PageModel pageModel = (PageModel)ctx.get("pageModel"); 99 ctx.put("model", pageModel); 100 ctx.put("pages", pageModel.getPages()); 101 ctx.put("req", req); 102 ctx.put("res", res); 103 ctx.put("vertical", Boolean.valueOf(getVertical())); 104 ctx.put("delimiter", getDelimiter()); 105 ctx.put("editorui", Boolean.TRUE); 106 } 107 catch (Exception e) 108 { 109 mLogger.error(e); 111 } 112 } 113 114 116 122 public int doStartTag(java.io.PrintWriter pw) 123 throws JspException 124 { 125 return TagSupport.EVAL_BODY_INCLUDE; 126 } 127 128 132 public int doEndTag(java.io.PrintWriter pw) throws JspException 133 { 134 try 135 { 136 if (getView() != null) 138 { 139 Template template = Velocity.getTemplate( 140 getVelocityClasspathResource( getTemplateClasspath() ) ); 141 VelocityContext context = getVelocityContext(); 142 prepareContext( context ); 143 template.merge(context, pw); 144 return EVAL_PAGE; 145 } 146 else 147 { 148 151 String myResource= getVelocityClasspathResource("/navbar.vm"); 152 153 VelocityContext myVelocityContext = getVelocityContext(); 154 155 prepareContext( myVelocityContext ); 157 if (myVelocityContext.get("pageHelper") == null) 158 throw new RollerException("Failure initializing ContextLoader."); 159 160 StringWriter myStringWriter = new StringWriter (); 161 162 String [] vars = {"vertical", "delimiter" }; 163 Velocity.invokeVelocimacro("showNavBar", "NavigationBar", vars, 164 myVelocityContext, myStringWriter); 165 166 pw.println(myStringWriter); 167 168 return EVAL_PAGE; 169 170 } 171 } 172 catch (Exception e) 173 { 174 mLogger.error("EditorNavigationBarTag exception",e); 175 throw new JspException (e); 176 } 177 } 178 } | Popular Tags |