1 18 package org.apache.beehive.netui.databinding.datagrid.runtime.rendering.cell; 19 20 import java.net.URISyntaxException ; 21 import javax.servlet.http.HttpServletRequest ; 22 import javax.servlet.jsp.JspContext ; 23 24 import org.apache.beehive.netui.databinding.datagrid.api.rendering.DataGridTagModel; 25 import org.apache.beehive.netui.databinding.datagrid.runtime.model.cell.AnchorCellModel; 26 import org.apache.beehive.netui.databinding.datagrid.api.rendering.CellModel; 27 import org.apache.beehive.netui.databinding.datagrid.runtime.util.JspUtil; 28 import org.apache.beehive.netui.databinding.datagrid.api.exceptions.CellDecoratorException; 29 import org.apache.beehive.netui.databinding.datagrid.api.rendering.CellDecorator; 30 import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; 31 import org.apache.beehive.netui.tags.rendering.SpanTag; 32 import org.apache.beehive.netui.tags.rendering.AnchorTag; 33 import org.apache.beehive.netui.tags.rendering.TagRenderingBase; 34 import org.apache.beehive.netui.util.logging.Logger; 35 import org.apache.beehive.netui.util.Bundle; 36 37 40 public final class AnchorCellDecorator 41 extends CellDecorator { 42 43 private static final Logger LOGGER = Logger.getInstance(AnchorCellDecorator.class); 44 45 public void decorate(JspContext jspContext, AbstractRenderAppender appender, CellModel columnModel) 46 throws CellDecoratorException { 47 48 assert columnModel instanceof AnchorCellModel; 49 50 AnchorCellModel anchorCellModel = (AnchorCellModel)columnModel; 51 HttpServletRequest request = JspUtil.getRequest(jspContext); 52 53 SpanTag.State spanState = new SpanTag.State(); 54 AnchorTag.State anchorState = anchorCellModel.getAnchorState(); 55 56 DataGridTagModel dgm = columnModel.getDataGridTagModel(); 57 assert dgm != null; 58 59 String url = null; 60 try { 61 url = JspUtil.createURL(anchorCellModel.getHref(), 62 anchorCellModel.getAction(), 63 null, 64 anchorCellModel.getScopeId(), 65 anchorCellModel.getParams(), 66 jspContext); 67 } 68 catch(URISyntaxException use) { 69 String message = Bundle.getErrorString("Rendering_URLException", new Object []{anchorCellModel.getHref(), anchorCellModel.getAction()}); 70 LOGGER.error(message, use); 71 throw new CellDecoratorException(message, use); 72 } 73 74 anchorState.href = url; 75 76 TagRenderingBase anchorTag = TagRenderingBase.Factory.getRendering(TagRenderingBase.ANCHOR_TAG, request); 77 TagRenderingBase spanTag = TagRenderingBase.Factory.getRendering(TagRenderingBase.SPAN_TAG, request); 78 79 anchorTag.doStartTag(appender, anchorState); 80 spanTag.doStartTag(appender, spanState); 81 appender.append(anchorCellModel.getValue()); 82 spanTag.doEndTag(appender); 83 anchorTag.doEndTag(appender); 84 85 String javascript = anchorCellModel.getJavascript(); 86 if(javascript != null) 87 appender.append(javascript); 88 } 89 } 90 | Popular Tags |