| /******************************************************************************* |
| * 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; |
| } |
| } |