4c3e3b8dff
X-SVN-Rev: 5642
126 lines
3.7 KiB
Java
126 lines
3.7 KiB
Java
/**
|
|
*******************************************************************************
|
|
* Copyright (C) 1996-2001, International Business Machines Corporation and *
|
|
* others. All Rights Reserved. *
|
|
*******************************************************************************
|
|
*
|
|
* $Source: /xsrl/Nsvn/icu/unicodetools/com/ibm/text/utility/IndentWriter.java,v $
|
|
* $Date: 2001/08/31 00:19:16 $
|
|
* $Revision: 1.2 $
|
|
*
|
|
*******************************************************************************
|
|
*/
|
|
|
|
package com.ibm.text.utility;
|
|
|
|
import java.io.*;
|
|
|
|
public class IndentWriter extends Writer {
|
|
public IndentWriter(Writer writer) {
|
|
this.writer = writer;
|
|
this.width = 30000;
|
|
this.separator = " ";
|
|
}
|
|
public IndentWriter(OutputStream writer, String encoding)
|
|
throws UnsupportedEncodingException{
|
|
this.writer = new OutputStreamWriter(writer, encoding);
|
|
this.width = 30000;
|
|
this.separator = " ";
|
|
}
|
|
public void setSeparator(String separator) {
|
|
this.separator = separator;
|
|
}
|
|
public String getSeparator() {
|
|
return separator;
|
|
}
|
|
public void setWidth(int width) {
|
|
this.width = width;
|
|
}
|
|
public int getWidth() {
|
|
return width;
|
|
}
|
|
public void indentBy(int indentDelta) throws IOException {
|
|
this.indent += indentDelta;
|
|
flush();
|
|
}
|
|
public void setIndent(int indent) {
|
|
this.indent = indent;
|
|
}
|
|
public int getIndent() {
|
|
return indent;
|
|
}
|
|
/*
|
|
public void write(String cbuf, int off, int len) throws IOException {
|
|
if (buffer.length() + len > width) {
|
|
flushLine();
|
|
buffer.append(" ".substring(0,indent));
|
|
buffer.append("(" + indent + ") ");
|
|
} else {
|
|
buffer.append(separator);
|
|
}
|
|
buffer.append(cbuf, off, len);
|
|
}
|
|
public void write(String string) throws IOException {
|
|
write(string,0,string.length());
|
|
}
|
|
*/
|
|
public void write(int indent, String string) throws IOException {
|
|
setIndent(indent);
|
|
write(string,0,string.length());
|
|
}
|
|
public void writeln(int indent, String string) throws IOException {
|
|
write(indent, string);
|
|
flushLine();
|
|
}
|
|
public void writeln(String string) throws IOException {
|
|
write(string);
|
|
flushLine();
|
|
}
|
|
public void writeln() throws IOException {
|
|
flushLine();
|
|
}
|
|
|
|
public void write(char cbuf[], int off, int len) throws IOException {
|
|
if (buffer.length() == 0) {
|
|
bufferIndent = indent;
|
|
} else if (bufferIndent + buffer.length() + separator.length() + len > width) {
|
|
flushLine();
|
|
} else {
|
|
buffer.append(separator);
|
|
}
|
|
buffer.append(cbuf, off, len);
|
|
}
|
|
|
|
public void flushLine() throws IOException {
|
|
if (buffer.length() != 0) { // indent
|
|
writer.write(" ",0,bufferIndent);
|
|
writer.write(buffer.toString());
|
|
writer.write(EOL);
|
|
buffer.setLength(0);
|
|
}
|
|
}
|
|
|
|
public void flush() throws IOException {
|
|
flushLine();
|
|
writer.flush();
|
|
}
|
|
|
|
public void close() throws IOException {
|
|
flush();
|
|
writer.close();
|
|
}
|
|
private Writer writer;
|
|
private StringBuffer buffer = new StringBuffer(200);
|
|
private int width;
|
|
private int indent;
|
|
private int bufferIndent;
|
|
private String separator;
|
|
private static String EOL;
|
|
static { // gets platform-specific eol
|
|
StringWriter foo = new StringWriter();
|
|
PrintWriter fii = new PrintWriter(foo);
|
|
fii.println();
|
|
fii.flush();
|
|
EOL = foo.toString();
|
|
}
|
|
} |