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    }