001 package edu.rice.cs.javalanglevels.tree;
002
003 /**
004 * An extension of PrintWriter to support indenting levels.
005 */
006 public class TabPrintWriter extends java.io.PrintWriter {
007 private final int _tabSize;
008 private final java.lang.String _tabString;
009 private int _numIndents = 0;
010
011 public TabPrintWriter(java.io.Writer writer, int tabSize) {
012 super(writer);
013 char[] c = new char[tabSize];
014 for(int i = 0; i < tabSize; i++) {
015 c[i] = ' ';
016 }
017 _tabString = new java.lang.String(c);
018 _tabSize = tabSize;
019 }
020
021 /** ups indent for any future new lines. */
022 public void indent() { _numIndents++; }
023 public void unindent() { _numIndents--; }
024
025 public void startLine(java.lang.Object s) {
026 startLine();
027 print(s);
028 }
029
030 public void startLine() {
031 println();
032 for (int i = 0; i < _numIndents; i++) {
033 print(_tabString);
034 }
035 }
036 }