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;
21 import org.eclipse.ui.IWorkbenchWindow;
22 import org.eclipse.ui.PlatformUI;
26 * Provides a set of convenience methods for creating HTML pages.
28 public class HTMLPrinter {
30 private HTMLPrinter() {
33 private static String replace(String text, char c, String s) {
36 int current= text.indexOf(c, previous);
41 StringBuffer buffer= new StringBuffer();
42 while (current > -1) {
43 buffer.append(text.substring(previous, current));
45 previous= current + 1;
46 current= text.indexOf(c, previous);
48 buffer.append(text.substring(previous));
50 return buffer.toString();
53 public static String convertToHTMLContent(String content) {
54 content= replace(content, '<', "<"); //$NON-NLS-1$
55 return replace(content, '>', ">"); //$NON-NLS-1$
58 public static String read(Reader rd) {
60 StringBuffer buffer= new StringBuffer();
61 char[] readBuffer= new char[2048];
64 int n= rd.read(readBuffer);
66 buffer.append(readBuffer, 0, n);
67 n= rd.read(readBuffer);
69 return buffer.toString();
70 } catch (IOException x) {
76 public static void insertPageProlog(StringBuffer buffer, int position, RGB bgRGB) {
78 insertPageProlog(buffer, position);
80 StringBuffer pageProlog= new StringBuffer(60);
81 pageProlog.append("<html><body text=\"#000000\" bgcolor=\""); //$NON-NLS-1$
82 appendColor(pageProlog, bgRGB);
83 pageProlog.append("\"><font size=-1>"); //$NON-NLS-1$
84 buffer.insert(position, pageProlog.toString());
88 private static void appendColor(StringBuffer buffer, RGB rgb) {
90 buffer.append(Integer.toHexString(rgb.red));
91 buffer.append(Integer.toHexString(rgb.green));
92 buffer.append(Integer.toHexString(rgb.blue));
95 public static void insertPageProlog(StringBuffer buffer, int position) {
97 IWorkbenchWindow window= PlatformUI.getWorkbench().getActiveWorkbenchWindow();
99 Display display= window.getShell().getDisplay();
100 if (display != null && !display.isDisposed())
101 bgColor= display.getSystemColor(SWT.COLOR_INFO_BACKGROUND).getRGB();
104 bgColor= new RGB(255,255, 225); // RGB value of info bg color on WindowsXP
106 insertPageProlog(buffer, position, bgColor); //$NON-NLS-1$
109 public static void addPageProlog(StringBuffer buffer) {
110 insertPageProlog(buffer, buffer.length());
113 public static void addPageEpilog(StringBuffer buffer) {
114 buffer.append("</font></body></html>"); //$NON-NLS-1$
117 public static void startBulletList(StringBuffer buffer) {
118 buffer.append("<ul>"); //$NON-NLS-1$
121 public static void endBulletList(StringBuffer buffer) {
122 buffer.append("</ul>"); //$NON-NLS-1$
125 public static void addBullet(StringBuffer buffer, String bullet) {
126 if (bullet != null) {
127 buffer.append("<li>"); //$NON-NLS-1$
128 buffer.append(bullet);
129 buffer.append("</li>"); //$NON-NLS-1$
133 public static void addSmallHeader(StringBuffer buffer, String header) {
134 if (header != null) {
135 buffer.append("<h5>"); //$NON-NLS-1$
136 buffer.append(header);
137 buffer.append("</h5>"); //$NON-NLS-1$
141 public static void addParagraph(StringBuffer buffer, String paragraph) {
142 if (paragraph != null) {
143 buffer.append("<p>"); //$NON-NLS-1$
144 buffer.append(paragraph);
148 public static void addParagraph(StringBuffer buffer, Reader paragraphReader) {
149 if (paragraphReader != null)
150 addParagraph(buffer, read(paragraphReader));