001: /*
002: * JOnAS: Java(TM) Open Application Server
003: * Copyright (C) 1999 Bull S.A.
004: * Contact: jonas-team@objectweb.org
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2.1 of the License, or any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
019: * USA
020: *
021: * Initial developer(s): Michel-Ange ANTON
022: * --------------------------------------------------------------------------
023: * $Id: GridBaseTag.java 4501 2004-03-26 16:16:12Z benoitf $
024: * --------------------------------------------------------------------------
025: */
026:
027: package org.objectweb.jonas.webapp.taglib;
028:
029: import java.io.IOException;
030:
031: import javax.servlet.jsp.JspException;
032: import javax.servlet.jsp.JspWriter;
033:
034: import org.apache.struts.taglib.html.BaseHandlerTag;
035:
036: abstract public class GridBaseTag extends BaseHandlerTag {
037:
038: // ----------------------------------------------------- Protected Constants
039:
040: protected final static String QUOTE = "\"";
041:
042: // ----------------------------------------------------- Instance Variables
043:
044: protected String ms_BodyText = null;
045:
046: // ----------------------------------------------------- Public Methods
047:
048: /**
049: * Start of Tag processing
050: *
051: * @exception JspException if a JSP exception occurs
052: */
053: public int doStartTag() throws JspException {
054: ms_BodyText = null;
055: // Continue processing this page
056: return (EVAL_BODY_BUFFERED);
057: }
058:
059: public int doAfterBody() throws JspException {
060: if (bodyContent != null) {
061: String value = bodyContent.getString().trim();
062: if (value.length() > 0) {
063: ms_BodyText = value;
064: }
065: }
066: return (SKIP_BODY);
067: }
068:
069: /**
070: * End of Tag Processing
071: *
072: * @exception JspException if a JSP exception occurs
073: */
074: public int doEndTag() throws JspException {
075: StringBuffer sb = new StringBuffer();
076: // Before Tag option
077: sb.append(prepareBeforeTag());
078:
079: // Create a ELEMENT element based on the parameters
080: sb.append("<");
081: sb.append(getHtmlElement());
082: // Prepare this HTML elements attributes
083: sb.append(prepareAttributes());
084: sb.append(">");
085:
086: // Before Body Content option
087: sb.append(prepareBeforeBody());
088: // Add Body Content
089: if (ms_BodyText != null) {
090: sb.append(ms_BodyText);
091: } else {
092: sb.append(getDefaultBody());
093: }
094: // Before After Content option
095: sb.append(prepareAfterBody());
096: // End Tag
097: sb.append("</");
098: sb.append(getHtmlElement());
099: sb.append(">");
100:
101: // After Tag option
102: sb.append(prepareAfterTag());
103:
104: // Render this element to our writer
105: JspWriter out = pageContext.getOut();
106: try {
107: out.print(sb.toString());
108: } catch (IOException e) {
109: throw new JspException("Exception in "
110: + getClass().getName() + " doEndTag():"
111: + e.toString());
112: }
113: return EVAL_PAGE;
114: }
115:
116: /**
117: * Prepare the attributes of the HTML element
118: */
119: protected String prepareAttributes() throws JspException {
120: StringBuffer sb = new StringBuffer();
121:
122: // Append Event Handler details
123: sb.append(prepareEventHandlers());
124: // Append Style details
125: sb.append(prepareStyles());
126:
127: return sb.toString();
128: }
129:
130: /**
131: * Format attribute="value" from the specified attribute & value
132: */
133: protected String prepareAttribute(String attribute, String value) {
134: return value == null ? "" : " " + attribute + "=" + QUOTE
135: + value + QUOTE;
136: }
137:
138: /**
139: * Format attribute="value" from the specified attribute & value
140: */
141:
142: protected String prepareAttribute(String attribute, int value) {
143: return value == -1 ? "" : " " + attribute + "=" + QUOTE + value
144: + QUOTE;
145: }
146:
147: /**
148: * Release resources after Tag processing has finished.
149: */
150: public void release() {
151: super .release();
152: ms_BodyText = null;
153: }
154:
155: // ----------------------------------------------------- Protected Methods
156:
157: abstract protected String getHtmlElement();
158:
159: protected String prepareBeforeTag() {
160: return "";
161: }
162:
163: protected String prepareAfterTag() {
164: return "";
165: }
166:
167: protected String prepareBeforeBody() {
168: return "";
169: }
170:
171: protected String prepareAfterBody() {
172: return "";
173: }
174:
175: protected String getDefaultBody() {
176: return "";
177: }
178: }
|