1 /*******************************************************************************
2 * Copyright (c) 2000, 2003 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Common Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/cpl-v10.html
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11 package net.sourceforge.phpdt.internal.ui.text;
14 import java.io.IOException;
15 import java.io.Reader;
17 import org.eclipse.swt.SWT;
18 import org.eclipse.swt.graphics.RGB;
19 import org.eclipse.swt.widgets.Display;
20 import org.eclipse.ui.IWorkbenchWindow;
21 import org.eclipse.ui.PlatformUI;
25 * Provides a set of convenience methods for creating HTML pages.
27 public class HTMLPrinter {
29 private HTMLPrinter() {
32 private static String replace(String text, char c, String s) {
35 int current= text.indexOf(c, previous);
40 StringBuffer buffer= new StringBuffer();
41 while (current > -1) {
42 buffer.append(text.substring(previous, current));
44 previous= current + 1;
45 current= text.indexOf(c, previous);
47 buffer.append(text.substring(previous));
49 return buffer.toString();
52 public static String convertToHTMLContent(String content) {
53 content= replace(content, '<', "<"); //$NON-NLS-1$
54 return replace(content, '>', ">"); //$NON-NLS-1$
57 public static String read(Reader rd) {
59 StringBuffer buffer= new StringBuffer();
60 char[] readBuffer= new char[2048];
63 int n= rd.read(readBuffer);
65 buffer.append(readBuffer, 0, n);
66 n= rd.read(readBuffer);
68 return buffer.toString();
69 } catch (IOException x) {
75 public static void insertPageProlog(StringBuffer buffer, int position, RGB bgRGB) {
77 insertPageProlog(buffer, position);
79 StringBuffer pageProlog= new StringBuffer(60);
80 pageProlog.append("<html><body text=\"#000000\" bgcolor=\""); //$NON-NLS-1$
81 appendColor(pageProlog, bgRGB);
82 pageProlog.append("\"><font size=-1>"); //$NON-NLS-1$
83 buffer.insert(position, pageProlog.toString());
87 private static void appendColor(StringBuffer buffer, RGB rgb) {
89 buffer.append(Integer.toHexString(rgb.red));
90 buffer.append(Integer.toHexString(rgb.green));
91 buffer.append(Integer.toHexString(rgb.blue));
94 public static void insertPageProlog(StringBuffer buffer, int position) {
96 IWorkbenchWindow window= PlatformUI.getWorkbench().getActiveWorkbenchWindow();
98 Display display= window.getShell().getDisplay();
99 if (display != null && !display.isDisposed())
100 bgColor= display.getSystemColor(SWT.COLOR_INFO_BACKGROUND).getRGB();
103 bgColor= new RGB(255,255, 225); // RGB value of info bg color on WindowsXP
105 insertPageProlog(buffer, position, bgColor); //$NON-NLS-1$
108 public static void addPageProlog(StringBuffer buffer) {
109 insertPageProlog(buffer, buffer.length());
112 public static void addPageEpilog(StringBuffer buffer) {
113 buffer.append("</font></body></html>"); //$NON-NLS-1$
116 public static void startBulletList(StringBuffer buffer) {
117 buffer.append("<ul>"); //$NON-NLS-1$
120 public static void endBulletList(StringBuffer buffer) {
121 buffer.append("</ul>"); //$NON-NLS-1$
124 public static void addBullet(StringBuffer buffer, String bullet) {
125 if (bullet != null) {
126 buffer.append("<li>"); //$NON-NLS-1$
127 buffer.append(bullet);
128 buffer.append("</li>"); //$NON-NLS-1$
132 public static void addSmallHeader(StringBuffer buffer, String header) {
133 if (header != null) {
134 buffer.append("<h5>"); //$NON-NLS-1$
135 buffer.append(header);
136 buffer.append("</h5>"); //$NON-NLS-1$
140 public static void addParagraph(StringBuffer buffer, String paragraph) {
141 if (paragraph != null) {
142 buffer.append("<p>"); //$NON-NLS-1$
143 buffer.append(paragraph);
147 public static void addParagraph(StringBuffer buffer, Reader paragraphReader) {
148 if (paragraphReader != null)
149 addParagraph(buffer, read(paragraphReader));