1 18 package org.apache.beehive.netui.tags.divpanel; 19 20 import org.apache.beehive.netui.pageflow.requeststate.NameService; 21 import org.apache.beehive.netui.script.ExpressionUpdateException; 22 import org.apache.beehive.netui.script.IllegalExpressionException; 23 import org.apache.beehive.netui.tags.AbstractClassicTag; 24 import org.apache.beehive.netui.tags.ExpressionHandling; 25 import org.apache.beehive.netui.tags.javascript.CoreScriptFeature; 26 import org.apache.beehive.netui.tags.javascript.IScriptReporter; 27 import org.apache.beehive.netui.tags.javascript.ScriptRequestState; 28 import org.apache.beehive.netui.tags.rendering.AbstractHtmlState; 29 import org.apache.beehive.netui.tags.rendering.DivTag; 30 import org.apache.beehive.netui.tags.rendering.TagRenderingBase; 31 import org.apache.beehive.netui.tags.rendering.WriteRenderAppender; 32 import org.apache.beehive.netui.util.Bundle; 33 34 import javax.servlet.ServletRequest ; 35 import javax.servlet.http.HttpServletRequest ; 36 import javax.servlet.jsp.JspException ; 37 38 45 public class DivPanel extends AbstractClassicTag 46 { 47 private String _tagId; 48 private String _firstPage; 49 private String _dataSource = null; private DivTag.State _divState = new DivTag.State(); 51 52 private final String JAVASCRIPT_CLASS = "NetUIDivPanel"; 53 54 public static final String DIVPANEL_JAVASCRIPT_ATTR = "netui-div-panel"; 55 public static final String DIVPANEL_FIRST_PAGE = "netui-div-panel-first"; 56 57 public static final String DIVPANEL_DIV_ID = "netui_divpanel_"; 58 59 public static String getCurrentPage(ServletRequest req, String tagId) 60 { 61 String reqId = DIVPANEL_DIV_ID + tagId; 62 String page = req.getParameter(reqId); 63 return page; 64 } 65 66 71 public String getTagName() 72 { 73 return "DivPanel"; 74 } 75 76 86 public void setDataSource(String dataSource) 87 { 88 _dataSource = dataSource; 89 } 90 91 100 public void setTagId(String tagId) 101 { 102 _tagId = tagId; 103 } 104 105 114 public void setFirstPage(String firstPage) 115 { 116 _firstPage = firstPage; 117 118 } 119 120 126 public int doStartTag() 127 throws JspException 128 { 129 HttpServletRequest req = (HttpServletRequest ) pageContext.getRequest(); 130 131 DivPanelState state = null; 135 if (_dataSource != null) { 136 ExpressionHandling _expr; 137 _expr = new ExpressionHandling(this); 138 try { 139 state = getState(_expr); 140 } 141 catch (IllegalExpressionException iee) { 142 String s = Bundle.getString("TreeRootError", new Object []{_dataSource, iee.getMessage()}); 143 registerTagError(s, null); 144 return SKIP_BODY; 145 } 146 if (hasErrors()) 147 reportAndExit(SKIP_BODY); 148 149 if (state == null) { 152 try { 153 state = new DivPanelState(); 154 String datasource = "{" + _dataSource + "}"; 155 _expr.updateExpression(datasource, state, pageContext); 156 } 157 catch (ExpressionUpdateException e) { 158 String s = Bundle.getString("Tags_UnableToWriteTree", new Object []{_dataSource, e.getMessage()}); 159 registerTagError(s, null); 160 reportErrors(); 161 return SKIP_BODY; 162 } 163 164 if (hasErrors()) 165 reportAndExit(SKIP_BODY); 166 167 NameService ns = NameService.instance(pageContext.getSession()); 169 ns.nameObject("DivPanel", state); 170 ns.put(state); 171 } 172 } 173 174 WriteRenderAppender writer = new WriteRenderAppender(pageContext); 175 176 IScriptReporter sr = getScriptReporter(); 178 ScriptRequestState srs = ScriptRequestState.getScriptRequestState(req); 179 if (!srs.isFeatureWritten(CoreScriptFeature.DYNAMIC_INIT)) { 180 String s = Bundle.getString("Tags_DivPanelHtmlRunAtClient", null); 181 registerTagError(s, null); 182 reportAndExit(SKIP_BODY); 183 } 184 srs.writeFeature(sr, writer, CoreScriptFeature.DIVPANEL_INIT, true, false, null); 185 186 String page = _firstPage; 188 if (state != null) { 189 String fp = state.getFirstPage(); 190 if (fp != null) 191 page = fp; 192 } 193 194 if (hasErrors()) 195 reportAndExit(EVAL_BODY_INCLUDE); 196 197 _divState.id = this.getIdForTagId(_tagId); 198 _divState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, DIVPANEL_JAVASCRIPT_ATTR, "true"); 199 if (page != null) 200 _divState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, DIVPANEL_FIRST_PAGE, page); 201 if (state != null) 202 _divState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, "netui:divName", state.getObjectName()); 203 204 TagRenderingBase divRenderer = TagRenderingBase.Factory.getRendering(TagRenderingBase.DIV_TAG, req); 205 divRenderer.doStartTag(writer, _divState); 206 return EVAL_BODY_INCLUDE; 207 } 208 209 217 public int doEndTag() 218 throws JspException 219 { 220 HttpServletRequest req = (HttpServletRequest ) pageContext.getRequest(); 221 if (!hasErrors()) { 222 WriteRenderAppender writer = new WriteRenderAppender(pageContext); 223 TagRenderingBase divRenderer = TagRenderingBase.Factory.getRendering(TagRenderingBase.DIV_TAG, req); 224 divRenderer.doEndTag(writer); 225 } 226 localRelease(); 227 return EVAL_PAGE; 228 } 229 230 protected void localRelease() 231 { 232 super.localRelease(); 233 _tagId = null; 234 _divState.clear(); 235 _firstPage = null; 236 _dataSource = null; 237 } 238 239 241 protected DivPanelState getState(ExpressionHandling expr) 242 throws JspException 243 { 244 String datasource = "{" + _dataSource + "}"; 245 Object state = expr.evaluateExpression(datasource, "dataSource", pageContext); 246 if (state == null || hasErrors()) { 247 return null; 248 } 249 250 if (!(state instanceof DivPanelState)) { 251 String s = Bundle.getString("Tags_DivPanelInvalidAttribute", _dataSource); 252 registerTagError(s, null); 253 return null; 254 } 255 return (DivPanelState) state; 256 } 257 } 258 | Popular Tags |