package jas.util;
import java.io.PrintWriter;
import java.io.Writer;
/**
* A PrintWriter that keeps track of an indentation level
* and indents the output appropriately.
*
* Warning: Only print and println methods taking strings have been overriden,
* print, println methods taking other arguments may not be indented properly.
*/
public class IndentPrintWriter extends PrintWriter
{
public IndentPrintWriter(Writer w)
{
super(w);
}
public void println(String s)
{
if (!indented) doIndent();
super.println(s);
indented = false;
}
public void print(String s)
{
if (!indented) doIndent();
super.print(s);
}
public void println()
{
super.println();
indented = false;
}
private void doIndent()
{
for (int i=0; i<indent; i++) super.print(indentString);
indented = true;
}
/**
* Increase the indentation
*/
public void indent() { indent++; }
/**
* Decrease the indentation
*/
public void outdent() { indent--; }
/**
* Return the current indent count
*/
public int getIndent() { return indent; }
/**
* Set the current indent count
*/
public void setIndent(int level) { indent = level; }
/**
* Return the current indentString
* @see #setIndentString(String)
*/
public String getIndentString()
{
return indentString;
}
/**
* Set the current indentString. Default is a single tab per indent level.
* @param indentString The characters to prefix each line with (repeated for each indent level)
*/
public void setIndentString(String indentString)
{
this.indentString = indentString;
}
private int indent = 0;
private boolean indented = false;
private String indentString;
}