blob: 2d2fdce387708d3861cfc90316fb6976242329be [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2007 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
*******************************************************************************/
package org.eclipse.dltk.utils;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.Writer;
public class CorePrinter extends PrintWriter {
private int fTabLevel = 0;
private boolean fAfterNewLine = false;
public CorePrinter(OutputStream out, boolean autoFlush) {
super(out, autoFlush);
}
public CorePrinter(OutputStream out) {
super(out);
}
public CorePrinter(Writer out, boolean autoFlush) {
super(out, autoFlush);
}
public CorePrinter(Writer out) {
super(out);
}
public void indent() {
this.print("{"); //$NON-NLS-1$
this.println(""); //$NON-NLS-1$
this.formatPrint(" "); //$NON-NLS-1$
fTabLevel += 1;
}
public void dedent() {
if (fTabLevel > 0) {
this.fTabLevel -= 1;
}
this.printTabs();
this.print("}"); //$NON-NLS-1$
this.fAfterNewLine = true;
}
private void printTabs() {
String tabs = ""; //$NON-NLS-1$
for (int i = 0; i < this.fTabLevel; ++i) {
tabs += "\t"; //$NON-NLS-1$
}
this.print(tabs);
}
public void formatPrintLn(String text) {
if (fAfterNewLine) {
fAfterNewLine = false;
this.printTabs();
}
this.print(text.replaceAll("\n", "/n")); //$NON-NLS-1$ //$NON-NLS-2$
}
public void formatPrint(String text) {
String strs[] = text.split("\n"); //$NON-NLS-1$
int count = 0;
for (int i = 0; i < strs.length; ++i) {
this.printTabs();
if (count != strs.length) {
this.println(strs[i]);
} else {
this.print(strs[i]);
}
count += 1;
}
fAfterNewLine = true;
}
}