package jpaoletti.jpm.struts.tags; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspTagException; import jpaoletti.jpm.core.EntityContainer; import jpaoletti.jpm.core.NavigationList; import jpaoletti.jpm.struts.PMEntitySupport; import jpaoletti.jpm.struts.PMStrutsContext; /** * Navigation list tag * * @author jpaoletti */ public class NavigationTag extends PMTags { private EntityContainer container; @Override public int doStartTag() throws JspException { try { pageContext.getOut().print(getNavigationList(getContainer())); } catch (Exception ex) { throw new JspTagException("NavigationTag: " + ex.getMessage()); } return SKIP_BODY; } @Override public int doEndTag() { return EVAL_PAGE; } public String getNavigationList(final EntityContainer c) { final StringBuilder sb = new StringBuilder("<ul class=\"breadcrumb\">"); final PMStrutsContext ctx = (PMStrutsContext) pageContext.getRequest().getAttribute("ctx"); for (int i = 0; i < ctx.getPmsession().getNavigationList().size(); i++) { final NavigationList.NavigationListItem item = ctx.getPmsession().getNavigationList().get(i); if (i == ctx.getPmsession().getNavigationList().size() - 1) { sb.append("<li class='active'>"); sb.append(item.getTitle()); } else { sb.append("<li>"); final String url = PMTags.url(ctx.getPmsession(), "/" + item.getOperation().getId() + ".do?" + "pmid=" + item.getEntityContainer().getId() + ((item.getSelectedId() != null) ? "&item=" + item.getSelectedId().getValue() : "")); sb.append("<a href=\"").append(url).append("\">"); sb.append(PMEntitySupport.toHtml(item.getTitle())); sb.append("</a><span class='divider'>/</span>"); } sb.append("</li>"); } sb.append("</ul>"); return sb.toString(); } public EntityContainer getContainer() { return container; } public void setContainer(EntityContainer container) { this.container = container; } }