javax.swing.text
Class AbstractWriter

java.lang.Object
  extended by javax.swing.text.AbstractWriter
Direct Known Subclasses:
HTMLWriter, MinimalHTMLWriter

public abstract class AbstractWriter
extends Object

This is an abstract base class for writing Document instances to a Writer. A concrete subclass must implement a method to iterate over the Elements of the Document and correctly format them.


Field Summary
protected static char NEWLINE
          The default line separator character.
 
Constructor Summary
protected AbstractWriter(Writer writer, Document doc)
          Create a new AbstractWriter with the indicated Writer and Document.
protected AbstractWriter(Writer writer, Document doc, int pos, int len)
          Create a new AbstractWriter with the indicated Writer and Document.
protected AbstractWriter(Writer writer, Element elt)
          Create a new AbstractWriter with the indicated Writer and Element.
protected AbstractWriter(Writer writer, Element elt, int pos, int len)
          Create a new AbstractWriter with the indicated Writer and Element.
 
Method Summary
protected  void decrIndent()
          Decrement the indent level.
protected  boolean getCanWrapLines()
          Return true if lines printed via write() will wrap, false otherwise.
protected  int getCurrentLineLength()
          Return the current line length.
protected  Document getDocument()
          Return this writer's Document.
protected  ElementIterator getElementIterator()
          Return the ElementIterator for this writer.
 int getEndOffset()
          Return the index of the Document at which output ends.
protected  int getIndentLevel()
          Return the current indent level.
protected  int getIndentSpace()
          Return the number of spaces per indent level.
protected  int getLineLength()
          Return the maximum line length.
 String getLineSeparator()
          Return the current line separator.
 int getStartOffset()
          Return the index of the Document at which output starts.
protected  String getText(Element elt)
          Return the text of the Document that is associated with the given Element.
protected  Writer getWriter()
          Return the Writer to which we are writing.
protected  void incrIndent()
          Increment the indent level.
protected  void indent()
          Indent this line by emitting spaces, according to the current indent level and the current number of spaces per indent.
protected  boolean inRange(Element elt)
          Return true if the Element's range overlaps our desired output range; false otherwise.
protected  boolean isLineEmpty()
          Return true if the line is empty, false otherwise.
protected  void output(char[] data, int start, int len)
          This method calls Writer.write on the indicated data, and updates the current line length.
protected  void setCanWrapLines(boolean canWrapLines)
          Set the flag indicating whether lines will wrap.
protected  void setCurrentLineLength(int lineLength)
          Set the current line length.
protected  void setIndentSpace(int indentSpace)
          Set the number of spaces per indent level.
protected  void setLineLength(int maxLineLength)
          Set the maximum line length.
 void setLineSeparator(String lineSeparator)
          Set the current line separator.
protected  void text(Element elt)
          Output the text of the indicated Element, properly clipping it to the range of the Document specified when the AbstractWriter was created.
protected abstract  void write()
          This method must be overridden by a concrete subclass.
protected  void write(char ch)
          Write a single character.
protected  void write(char[] data, int start, int len)
          Write a character array to the output Writer, properly handling newlines and, if needed, wrapping lines as they are output.
protected  void write(String s)
          Write a String.
protected  void writeAttributes(AttributeSet attrs)
          Print the given AttributeSet as a sequence of assignment-like strings, e.g.
protected  void writeLineSeparator()
          Write a line separator using the output method, and then reset the current line length.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NEWLINE

protected static final char NEWLINE
The default line separator character.

See Also:
Constant Field Values
Constructor Detail

AbstractWriter

protected AbstractWriter(Writer writer,
                         Document doc)
Create a new AbstractWriter with the indicated Writer and Document. The full range of the Document will be used. The internal ElementIterator will be initialized with the Document's root node.


AbstractWriter

protected AbstractWriter(Writer writer,
                         Document doc,
                         int pos,
                         int len)
Create a new AbstractWriter with the indicated Writer and Document. The full range of the Document will be used. The internal ElementIterator will be initialized with the Document's root node.


AbstractWriter

protected AbstractWriter(Writer writer,
                         Element elt)
Create a new AbstractWriter with the indicated Writer and Element. The full range of the Element will be used.


AbstractWriter

protected AbstractWriter(Writer writer,
                         Element elt,
                         int pos,
                         int len)
Create a new AbstractWriter with the indicated Writer and Element. The full range of the Element will be used. The range will be limited to the indicated range of the Document.

Method Detail

getElementIterator

protected ElementIterator getElementIterator()
Return the ElementIterator for this writer.


getWriter

protected Writer getWriter()
Return the Writer to which we are writing.

Since:
1.3

getDocument

protected Document getDocument()
Return this writer's Document.


write

protected abstract void write()
                       throws IOException,
                              BadLocationException
This method must be overridden by a concrete subclass. It is responsible for iterating over the Elements of the Document and writing them out.

Throws:
IOException
BadLocationException

getText

protected String getText(Element elt)
                  throws BadLocationException
Return the text of the Document that is associated with the given Element. If the Element is not a leaf Element, this will throw BadLocationException.

Throws:
BadLocationException - if the element is not a leaf

output

protected void output(char[] data,
                      int start,
                      int len)
               throws IOException
This method calls Writer.write on the indicated data, and updates the current line length. This method does not look for newlines in the written data; the caller is responsible for that.

Throws:
IOException
Since:
1.3

writeLineSeparator

protected void writeLineSeparator()
                           throws IOException
Write a line separator using the output method, and then reset the current line length.

Throws:
IOException
Since:
1.3

write

protected void write(char ch)
              throws IOException
Write a single character.

Throws:
IOException

write

protected void write(String s)
              throws IOException
Write a String.

Throws:
IOException

write

protected void write(char[] data,
                     int start,
                     int len)
              throws IOException
Write a character array to the output Writer, properly handling newlines and, if needed, wrapping lines as they are output.

Throws:
IOException
Since:
1.3

indent

protected void indent()
               throws IOException
Indent this line by emitting spaces, according to the current indent level and the current number of spaces per indent. After this method is called, the current line is no longer considered to be empty, even if no spaces are actually written.

Throws:
IOException

getStartOffset

public int getStartOffset()
Return the index of the Document at which output starts.

Since:
1.3

getEndOffset

public int getEndOffset()
Return the index of the Document at which output ends.

Since:
1.3

inRange

protected boolean inRange(Element elt)
Return true if the Element's range overlaps our desired output range; false otherwise.


text

protected void text(Element elt)
             throws BadLocationException,
                    IOException
Output the text of the indicated Element, properly clipping it to the range of the Document specified when the AbstractWriter was created.

Throws:
BadLocationException
IOException

setLineLength

protected void setLineLength(int maxLineLength)
Set the maximum line length.


getLineLength

protected int getLineLength()
Return the maximum line length.

Since:
1.3

setCurrentLineLength

protected void setCurrentLineLength(int lineLength)
Set the current line length.

Since:
1.3

getCurrentLineLength

protected int getCurrentLineLength()
Return the current line length.

Since:
1.3

isLineEmpty

protected boolean isLineEmpty()
Return true if the line is empty, false otherwise. The line is empty if nothing has been written since the last newline, and indent has not been invoked.


setCanWrapLines

protected void setCanWrapLines(boolean canWrapLines)
Set the flag indicating whether lines will wrap. This affects the behavior of write().

Since:
1.3

getCanWrapLines

protected boolean getCanWrapLines()
Return true if lines printed via write() will wrap, false otherwise.

Since:
1.3

setIndentSpace

protected void setIndentSpace(int indentSpace)
Set the number of spaces per indent level.

Since:
1.3

getIndentSpace

protected int getIndentSpace()
Return the number of spaces per indent level.

Since:
1.3

setLineSeparator

public void setLineSeparator(String lineSeparator)
Set the current line separator.

Since:
1.3

getLineSeparator

public String getLineSeparator()
Return the current line separator.

Since:
1.3

incrIndent

protected void incrIndent()
Increment the indent level.


decrIndent

protected void decrIndent()
Decrement the indent level.


getIndentLevel

protected int getIndentLevel()
Return the current indent level.

Since:
1.3

writeAttributes

protected void writeAttributes(AttributeSet attrs)
                        throws IOException
Print the given AttributeSet as a sequence of assignment-like strings, e.g. "key=value".

Throws:
IOException