KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > beehive > netui > databinding > datagrid > runtime > rendering > cell > ImageAnchorCellDecorator


1 /*
2  * Copyright 2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  * $Header:$
17  */

18 package org.apache.beehive.netui.databinding.datagrid.runtime.rendering.cell;
19
20 import java.net.URISyntaxException JavaDoc;
21 import javax.servlet.jsp.JspContext JavaDoc;
22 import javax.servlet.http.HttpServletRequest JavaDoc;
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 /**
38  */

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 JavaDoc jspContext, AbstractRenderAppender appender, CellModel cellModel)
45             throws CellDecoratorException {
46         HttpServletRequest JavaDoc 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 JavaDoc 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 JavaDoc use) {
67             String JavaDoc message = Bundle.getErrorString("Rendering_URLException", new Object JavaDoc[]{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 JavaDoc script = imageAnchorCellModel.getJavascript();
83         if(script != null)
84             appender.append(script);
85     }
86 }
87
Popular Tags