KickJava   Java API By Example, From Geeks To Geeks.

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


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.http.HttpServletRequest JavaDoc;
22 import javax.servlet.jsp.JspContext JavaDoc;
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 /**
38  *
39  */

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 JavaDoc jspContext, AbstractRenderAppender appender, CellModel columnModel)
46             throws CellDecoratorException {
47
48         assert columnModel instanceof AnchorCellModel;
49
50         AnchorCellModel anchorCellModel = (AnchorCellModel)columnModel;
51         HttpServletRequest JavaDoc 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 JavaDoc 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 JavaDoc use) {
69             String JavaDoc message = Bundle.getErrorString("Rendering_URLException", new Object JavaDoc[]{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 JavaDoc javascript = anchorCellModel.getJavascript();
86         if(javascript != null)
87             appender.append(javascript);
88     }
89 }
90
Popular Tags