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