package hep.aida.web.taglib.jsp20; import hep.aida.web.taglib.PlotSetBarTag; import hep.aida.web.taglib.PlotSetBarTagSupport; import hep.aida.web.taglib.PlotSetStatus; import hep.aida.web.taglib.util.AidaTLDUtils; import java.io.IOException; import javax.servlet.jsp.JspContext; import javax.servlet.jsp.JspException; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.JspFragment; import javax.servlet.jsp.tagext.JspTag; import javax.servlet.jsp.tagext.SimpleTagSupport; /** * This tag is nested in the plotSet tag and servs two goals: * 1. Make sure that the body of this tag is processed only once per request. * 2. Generate the default Navigation Bar if no body is defined * * @author The AIDA Team @ SLAC */ public class PlotSetBarTagImpl extends SimpleTagSupport implements PlotSetBarTag { private PlotSetBarTagSupport plotSetBarTagSupport = new PlotSetBarTagSupport(); public void doTag() throws JspException, IOException { // If parent tag is PlotSetTag, evaluate this only once JspTag parent = this.getParent(); System.out.println("PlotSetBarTagImpl.doTag :: parent="+parent); if (parent instanceof PlotSetTagImpl) { String statusVar = ((PlotSetTagImpl) parent).getStatusvar(); PlotSetStatus status = (PlotSetStatus) AidaTLDUtils.findObject(statusVar, (PageContext) getJspContext()); if (status.getIndex() > status.getStartindex()) return; PageContext pageContext = (PageContext) getJspContext(); // Format the links and create the PlotSetBarStatus object // with information about links plotSetBarTagSupport.doStartTag(pageContext, status); // Evaluate any nested tags JspFragment jspBody = getJspBody(); if (jspBody != null) { jspBody.invoke(pageContext.getOut()); } else { // Generate default Navigation Bar plotSetBarTagSupport.doTag(pageContext, status); } } else { throw new JspException( "a <plotSetBar> tag must be nested in a <plotSet> tag"); } } public void setUrl(String url) { plotSetBarTagSupport.setUrl(url); } public void setVar(String var) { plotSetBarTagSupport.setVar(var); } }