KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jivesoftware > smackx > XHTMLText


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

20
21 package org.jivesoftware.smackx;
22
23 import org.jivesoftware.smack.util.StringUtils;
24
25 /**
26  * An XHTMLText represents formatted text. This class also helps to build valid
27  * XHTML tags.
28  *
29  * @author Gaston Dombiak
30  */

31 public class XHTMLText {
32
33     private StringBuffer JavaDoc text = new StringBuffer JavaDoc(30);
34
35     /**
36      * Creates a new XHTMLText with body tag params.
37      *
38      * @param style the XHTML style of the body
39      * @param lang the language of the body
40      */

41     public XHTMLText(String JavaDoc style, String JavaDoc lang) {
42         appendOpenBodyTag(style, lang);
43     }
44
45     /**
46      * Appends a tag that indicates that an anchor section begins.
47      *
48      * @param href indicates the URL being linked to
49      * @param style the XHTML style of the anchor
50      */

51     public void appendOpenAnchorTag(String JavaDoc href, String JavaDoc style) {
52         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("<a");
53         if (href != null) {
54             sb.append(" HREF=\"");
55             sb.append(href);
56             sb.append("\"");
57         }
58         if (style != null) {
59             sb.append(" style=\"");
60             sb.append(style);
61             sb.append("\"");
62         }
63         sb.append(">");
64         text.append(sb.toString());
65     }
66
67     /**
68      * Appends a tag that indicates that an anchor section ends.
69      *
70      */

71     public void appendCloseAnchorTag() {
72         text.append("</a>");
73     }
74
75     /**
76      * Appends a tag that indicates that a blockquote section begins.
77      *
78      * @param style the XHTML style of the blockquote
79      */

80     public void appendOpenBlockQuoteTag(String JavaDoc style) {
81         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("<blockquote");
82         if (style != null) {
83             sb.append(" style=\"");
84             sb.append(style);
85             sb.append("\"");
86         }
87         sb.append(">");
88         text.append(sb.toString());
89     }
90
91     /**
92      * Appends a tag that indicates that a blockquote section ends.
93      *
94      */

95     public void appendCloseBlockQuoteTag() {
96         text.append("</blockquote>");
97     }
98
99     /**
100      * Appends a tag that indicates that a body section begins.
101      *
102      * @param style the XHTML style of the body
103      * @param lang the language of the body
104      */

105     private void appendOpenBodyTag(String JavaDoc style, String JavaDoc lang) {
106         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("<body");
107         if (style != null) {
108             sb.append(" style=\"");
109             sb.append(style);
110             sb.append("\"");
111         }
112         if (lang != null) {
113             sb.append(" xml:lang=\"");
114             sb.append(lang);
115             sb.append("\"");
116         }
117         sb.append(">");
118         text.append(sb.toString());
119     }
120
121     /**
122      * Appends a tag that indicates that a body section ends.
123      *
124      */

125     private String JavaDoc closeBodyTag() {
126         return "</body>";
127     }
128
129     /**
130      * Appends a tag that inserts a single carriage return.
131      *
132      */

133     public void appendBrTag() {
134         text.append("<br>");
135     }
136
137     /**
138      * Appends a tag that indicates a reference to work, such as a book, report or web site.
139      *
140      */

141     public void appendOpenCiteTag() {
142         text.append("<cite>");
143     }
144
145     /**
146      * Appends a tag that indicates text that is the code for a program.
147      *
148      */

149     public void appendOpenCodeTag() {
150         text.append("<code>");
151     }
152
153     /**
154      * Appends a tag that indicates end of text that is the code for a program.
155      *
156      */

157     public void appendCloseCodeTag() {
158         text.append("</code>");
159     }
160
161     /**
162      * Appends a tag that indicates emphasis.
163      *
164      */

165     public void appendOpenEmTag() {
166         text.append("<em>");
167     }
168
169     /**
170      * Appends a tag that indicates end of emphasis.
171      *
172      */

173     public void appendCloseEmTag() {
174         text.append("</em>");
175     }
176
177     /**
178      * Appends a tag that indicates a header, a title of a section of the message.
179      *
180      * @param level the level of the Header. It should be a value between 1 and 3
181      * @param style the XHTML style of the blockquote
182      */

183     public void appendOpenHeaderTag(int level, String JavaDoc style) {
184         if (level > 3 || level < 1) {
185             return;
186         }
187         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("<h");
188         sb.append(level);
189         if (style != null) {
190             sb.append(" style=\"");
191             sb.append(style);
192             sb.append("\"");
193         }
194         sb.append(">");
195         text.append(sb.toString());
196     }
197
198     /**
199      * Appends a tag that indicates that a header section ends.
200      *
201      * @param level the level of the Header. It should be a value between 1 and 3
202      */

203     public void appendCloseHeaderTag(int level) {
204         if (level > 3 || level < 1) {
205             return;
206         }
207         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("</h");
208         sb.append(level);
209         sb.append(">");
210         text.append(sb.toString());
211     }
212
213     /**
214      * Appends a tag that indicates an image.
215      *
216      * @param align how text should flow around the picture
217      * @param alt the text to show if you don't show the picture
218      * @param height how tall is the picture
219      * @param src where to get the picture
220      * @param width how wide is the picture
221      */

222     public void appendImageTag(String JavaDoc align, String JavaDoc alt, String JavaDoc height, String JavaDoc src, String JavaDoc width) {
223         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("<img");
224         if (align != null) {
225             sb.append(" align=\"");
226             sb.append(align);
227             sb.append("\"");
228         }
229         if (alt != null) {
230             sb.append(" alt=\"");
231             sb.append(alt);
232             sb.append("\"");
233         }
234         if (height != null) {
235             sb.append(" height=\"");
236             sb.append(height);
237             sb.append("\"");
238         }
239         if (src != null) {
240             sb.append(" SRC=\"");
241             sb.append(src);
242             sb.append("\"");
243         }
244         if (width != null) {
245             sb.append(" width=\"");
246             sb.append(width);
247             sb.append("\"");
248         }
249         sb.append(">");
250         text.append(sb.toString());
251     }
252
253     /**
254      * Appends a tag that indicates the start of a new line item within a list.
255      *
256      * @param style the style of the line item
257      */

258     public void appendLineItemTag(String JavaDoc style) {
259         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("<li");
260         if (style != null) {
261             sb.append(" style=\"");
262             sb.append(style);
263             sb.append("\"");
264         }
265         sb.append(">");
266         text.append(sb.toString());
267     }
268
269     /**
270      * Appends a tag that creates an ordered list. "Ordered" means that the order of the items
271      * in the list is important. To show this, browsers automatically number the list.
272      *
273      * @param style the style of the ordered list
274      */

275     public void appendOpenOrderedListTag(String JavaDoc style) {
276         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("<ol");
277         if (style != null) {
278             sb.append(" style=\"");
279             sb.append(style);
280             sb.append("\"");
281         }
282         sb.append(">");
283         text.append(sb.toString());
284     }
285
286     /**
287      * Appends a tag that indicates that an ordered list section ends.
288      *
289      */

290     public void appendCloseOrderedListTag() {
291         text.append("</ol>");
292     }
293
294     /**
295      * Appends a tag that creates an unordered list. The unordered part means that the items
296      * in the list are not in any particular order.
297      *
298      * @param style the style of the unordered list
299      */

300     public void appendOpenUnorderedListTag(String JavaDoc style) {
301         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("<ul");
302         if (style != null) {
303             sb.append(" style=\"");
304             sb.append(style);
305             sb.append("\"");
306         }
307         sb.append(">");
308         text.append(sb.toString());
309     }
310
311     /**
312      * Appends a tag that indicates that an unordered list section ends.
313      *
314      */

315     public void appendCloseUnorderedListTag() {
316         text.append("</ul>");
317     }
318
319     /**
320      * Appends a tag that indicates the start of a new paragraph. This is usually rendered
321      * with two carriage returns, producing a single blank line in between the two paragraphs.
322      *
323      * @param style the style of the paragraph
324      */

325     public void appendOpenParagraphTag(String JavaDoc style) {
326         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("<p");
327         if (style != null) {
328             sb.append(" style=\"");
329             sb.append(style);
330             sb.append("\"");
331         }
332         sb.append(">");
333         text.append(sb.toString());
334     }
335
336     /**
337      * Appends a tag that indicates the end of a new paragraph. This is usually rendered
338      * with two carriage returns, producing a single blank line in between the two paragraphs.
339      *
340      */

341     public void appendCloseParagraphTag() {
342         text.append("</p>");
343     }
344
345     /**
346      * Appends a tag that indicates that an inlined quote section begins.
347      *
348      * @param style the style of the inlined quote
349      */

350     public void appendOpenInlinedQuoteTag(String JavaDoc style) {
351         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("<q");
352         if (style != null) {
353             sb.append(" style=\"");
354             sb.append(style);
355             sb.append("\"");
356         }
357         sb.append(">");
358         text.append(sb.toString());
359     }
360
361     /**
362      * Appends a tag that indicates that an inlined quote section ends.
363      *
364      */

365     public void appendCloseInlinedQuoteTag() {
366         text.append("</q>");
367     }
368
369     /**
370      * Appends a tag that allows to set the fonts for a span of text.
371      *
372      * @param style the style for a span of text
373      */

374     public void appendOpenSpanTag(String JavaDoc style) {
375         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("<span");
376         if (style != null) {
377             sb.append(" style=\"");
378             sb.append(style);
379             sb.append("\"");
380         }
381         sb.append(">");
382         text.append(sb.toString());
383     }
384
385     /**
386      * Appends a tag that indicates that a span section ends.
387      *
388      */

389     public void appendCloseSpanTag() {
390         text.append("</span>");
391     }
392
393     /**
394      * Appends a tag that indicates text which should be more forceful than surrounding text.
395      *
396      */

397     public void appendOpenStrongTag() {
398         text.append("<strong>");
399     }
400
401     /**
402      * Appends a tag that indicates that a strong section ends.
403      *
404      */

405     public void appendCloseStrongTag() {
406         text.append("</strong>");
407     }
408
409     /**
410      * Appends a given text to the XHTMLText.
411      *
412      * @param textToAppend the text to append
413      */

414     public void append(String JavaDoc textToAppend) {
415         text.append(StringUtils.escapeForXML(textToAppend));
416     }
417
418     /**
419      * Returns the text of the XHTMLText.
420      *
421      * Note: Automatically adds the closing body tag.
422      *
423      * @return the text of the XHTMLText
424      */

425     public String JavaDoc toString() {
426         return text.toString().concat(closeBodyTag());
427     }
428
429 }
430
Popular Tags