001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: *
017: * $Header:$
018: */
019: package org.apache.beehive.netui.databinding.datagrid.runtime.rendering.table;
020:
021: import javax.servlet.http.HttpServletRequest;
022:
023: import org.apache.beehive.netui.tags.rendering.TableTag;
024: import org.apache.beehive.netui.tags.rendering.TagRenderingBase;
025: import org.apache.beehive.netui.tags.rendering.TrTag;
026: import org.apache.beehive.netui.tags.rendering.TdTag;
027: import org.apache.beehive.netui.tags.rendering.ThTag;
028: import org.apache.beehive.netui.tags.rendering.CaptionTag;
029: import org.apache.beehive.netui.tags.rendering.THeadTag;
030: import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender;
031: import org.apache.beehive.netui.tags.rendering.TFootTag;
032: import org.apache.beehive.netui.tags.rendering.TBodyTag;
033:
034: /**
035: *
036: */
037: public final class TableRenderer {
038:
039: private static final String LINE_BREAK = "\n";
040:
041: private static final TableTag.State TABLE_STATE = new TableTag.State();
042: private static final CaptionTag.State CAPTION_STATE = new CaptionTag.State();
043: private static final THeadTag.State THEAD_STATE = new THeadTag.State();
044: private static final TBodyTag.State TBODY_STATE = new TBodyTag.State();
045: private static final TFootTag.State TFOOT_STATE = new TFootTag.State();
046: private static final TrTag.State TR_STATE = new TrTag.State();
047:
048: private final HttpServletRequest _request;
049:
050: private TagRenderingBase _tableRenderer = null;
051: private TagRenderingBase _captionRenderer = null;
052:
053: private TagRenderingBase _theadRenderer = null;
054: private TagRenderingBase _tbodyRenderer = null;
055: private TagRenderingBase _tfootRenderer = null;
056:
057: private TagRenderingBase _trRenderer = null;
058: private TagRenderingBase _tdRenderer = null;
059: private TagRenderingBase _thRenderer = null;
060:
061: public TableRenderer(HttpServletRequest request) {
062: super ();
063:
064: _request = request;
065: _tableRenderer = TagRenderingBase.Factory.getRendering(
066: TagRenderingBase.TABLE_TAG, _request);
067:
068: _thRenderer = TagRenderingBase.Factory.getRendering(
069: TagRenderingBase.TH_TAG, _request);
070: _trRenderer = TagRenderingBase.Factory.getRendering(
071: TagRenderingBase.TR_TAG, _request);
072: _tdRenderer = TagRenderingBase.Factory.getRendering(
073: TagRenderingBase.TD_TAG, _request);
074: }
075:
076: /* -------------------------------------------------------------
077:
078: Table Rendering
079:
080: ------------------------------------------------------------- */
081:
082: public void openTable(TableTag.State state,
083: AbstractRenderAppender appender) {
084: if (state == null)
085: state = TABLE_STATE;
086:
087: appender.append(LINE_BREAK);
088: _tableRenderer.doStartTag(appender, state);
089: appender.append(LINE_BREAK);
090: }
091:
092: public void closeTable(AbstractRenderAppender appender) {
093: _tableRenderer.doEndTag(appender);
094: appender.append(LINE_BREAK);
095: appender.append(LINE_BREAK);
096: }
097:
098: public void openCaption(CaptionTag.State state,
099: AbstractRenderAppender appender) {
100: if (state == null)
101: state = CAPTION_STATE;
102:
103: appender.append(LINE_BREAK);
104:
105: if (_captionRenderer == null)
106: _captionRenderer = TagRenderingBase.Factory.getRendering(
107: TagRenderingBase.CAPTION_TAG, _request);
108:
109: _captionRenderer.doStartTag(appender, state);
110: }
111:
112: public void closeCaption(AbstractRenderAppender appender) {
113: assert _captionRenderer != null : "Encountered a null THeadTag renderer. Was openCaption called?";
114:
115: _captionRenderer.doEndTag(appender);
116: appender.append(LINE_BREAK);
117: }
118:
119: /* -------------------------------------------------------------
120:
121: Table Row Group Rendering
122:
123: ------------------------------------------------------------- */
124:
125: public final void openTableHead(THeadTag.State state,
126: AbstractRenderAppender appender) {
127: if (state == null)
128: state = THEAD_STATE;
129:
130: if (_theadRenderer == null)
131: _theadRenderer = TagRenderingBase.Factory.getRendering(
132: TagRenderingBase.THEAD_TAG, _request);
133:
134: appender.append(LINE_BREAK);
135: _theadRenderer.doStartTag(appender, state);
136: }
137:
138: public void closeTableHead(AbstractRenderAppender appender) {
139: assert _theadRenderer != null : "Encountered a null THeadTag renderer. Was openTableHead called?";
140:
141: appender.append(LINE_BREAK);
142: _theadRenderer.doEndTag(appender);
143: appender.append(LINE_BREAK);
144: }
145:
146: public void openTableBody(TBodyTag.State state,
147: AbstractRenderAppender appender) {
148: if (state == null)
149: state = TBODY_STATE;
150:
151: if (_tbodyRenderer == null)
152: _tbodyRenderer = TagRenderingBase.Factory.getRendering(
153: TagRenderingBase.TBODY_TAG, _request);
154:
155: appender.append(LINE_BREAK);
156: _tbodyRenderer.doStartTag(appender, state);
157: }
158:
159: public void closeTableBody(AbstractRenderAppender appender) {
160: assert _tbodyRenderer != null : "Encountered a null TBodyTag renderer. Was openTableBody called?";
161:
162: appender.append(LINE_BREAK);
163: _tbodyRenderer.doEndTag(appender);
164: }
165:
166: public void openTableFoot(TFootTag.State state,
167: AbstractRenderAppender appender) {
168: if (state == null)
169: state = TFOOT_STATE;
170:
171: if (_tfootRenderer == null)
172: _tfootRenderer = TagRenderingBase.Factory.getRendering(
173: TagRenderingBase.TFOOT_TAG, _request);
174:
175: appender.append(LINE_BREAK);
176: _tfootRenderer.doStartTag(appender, state);
177: appender.append(LINE_BREAK);
178: }
179:
180: public void closeTableFoot(AbstractRenderAppender appender) {
181: assert _tfootRenderer != null : "Encountered a null TFootTag renderer. Was openTableFoot called?";
182:
183: appender.append(LINE_BREAK);
184: _tfootRenderer.doEndTag(appender);
185: appender.append(LINE_BREAK);
186: }
187:
188: /* -------------------------------------------------------------
189:
190: Table Row Rendering
191:
192: ------------------------------------------------------------- */
193:
194: public final void openHeaderRow(TrTag.State state,
195: AbstractRenderAppender appender) {
196: if (state == null)
197: state = TR_STATE;
198:
199: appender.append(LINE_BREAK);
200: _trRenderer.doStartTag(appender, state);
201: }
202:
203: public void closeHeaderRow(AbstractRenderAppender appender) {
204: appender.append(LINE_BREAK);
205: _trRenderer.doEndTag(appender);
206: }
207:
208: public void openTableRow(TrTag.State state,
209: AbstractRenderAppender appender) {
210: appender.append(LINE_BREAK);
211: _trRenderer.doStartTag(appender, state);
212: }
213:
214: public void closeTableRow(AbstractRenderAppender appender) {
215: appender.append(LINE_BREAK);
216: _trRenderer.doEndTag(appender);
217: }
218:
219: public void openFooterRow(TrTag.State state,
220: AbstractRenderAppender appender) {
221: if (state == null)
222: state = TR_STATE;
223:
224: appender.append(LINE_BREAK);
225: _trRenderer.doStartTag(appender, state);
226: }
227:
228: public void closeFooterRow(AbstractRenderAppender appender) {
229: appender.append(LINE_BREAK);
230: _trRenderer.doEndTag(appender);
231: }
232:
233: /* -------------------------------------------------------------
234:
235: Table Cell Rendering
236:
237: ------------------------------------------------------------- */
238:
239: public void openHeaderCell(ThTag.State state,
240: AbstractRenderAppender appender) {
241: _thRenderer.doStartTag(appender, state);
242: }
243:
244: public void closeHeaderCell(AbstractRenderAppender appender) {
245: _thRenderer.doEndTag(appender);
246: appender.append(LINE_BREAK);
247: }
248:
249: public void openTableCell(TdTag.State state,
250: AbstractRenderAppender appender) {
251: _tdRenderer.doStartTag(appender, state);
252: }
253:
254: public void closeTableCell(AbstractRenderAppender appender) {
255: _tdRenderer.doEndTag(appender);
256: }
257: }
|