public abstract class

AbstractWriter

extends Object
java.lang.Object
   ↳ javax.swing.text.AbstractWriter
Known Direct Subclasses

Class Overview

AbstractWriter is an abstract class that actually does the work of writing out the element tree including the attributes. In terms of how much is written out per line, the writer defaults to 100. But this value can be set by subclasses.

Summary

Constants
char NEWLINE How the text packages models newlines.
Protected Constructors
AbstractWriter(Writer w, Document doc)
Creates a new AbstractWriter.
AbstractWriter(Writer w, Document doc, int pos, int len)
Creates a new AbstractWriter.
AbstractWriter(Writer w, Element root)
Creates a new AbstractWriter.
AbstractWriter(Writer w, Element root, int pos, int len)
Creates a new AbstractWriter.
Public Methods
int getEndOffset()
Returns the last offset to be output.
String getLineSeparator()
Returns the string used to represent newlines.
int getStartOffset()
Returns the first offset to be output.
void setLineSeparator(String value)
Sets the String used to reprsent newlines.
Protected Methods
void decrIndent()
Decrements the indent level.
boolean getCanWrapLines()
Returns whether or not the lines can be wrapped.
int getCurrentLineLength()
Returns the current line length.
Document getDocument()
Fetches the document.
ElementIterator getElementIterator()
Fetches the ElementIterator.
int getIndentLevel()
Returns the current indentation level.
int getIndentSpace()
Returns the amount of space to indent.
int getLineLength()
Returns the maximum line length.
String getText(Element elem)
Returns the text associated with the element.
Writer getWriter()
Returns the Writer that is used to output the content.
boolean inRange(Element next)
This method determines whether the current element is in the range specified.
void incrIndent()
Increments the indent level.
void indent()
Does indentation.
boolean isLineEmpty()
Returns true if the current line should be considered empty.
void output(char[] content, int start, int length)
The last stop in writing out content.
void setCanWrapLines(boolean newValue)
Sets whether or not lines can be wrapped.
void setCurrentLineLength(int length)
Sets the current line length.
void setIndentSpace(int space)
Enables subclasses to specify how many spaces an indent maps to.
void setLineLength(int l)
Enables subclasses to set the number of characters they want written per line.
void text(Element elem)
Writes out text.
void write(char[] chars, int startIndex, int length)
All write methods call into this one.
abstract void write()
This abstract method needs to be implemented by subclasses.
void write(char ch)
Writes out a character.
void write(String content)
Writes out a string.
void writeAttributes(AttributeSet attr)
Writes out the set of attributes as " =" pairs.
void writeLineSeparator()
Writes the line separator.
[Expand]
Inherited Methods
From class java.lang.Object

Constants

protected static final char NEWLINE

How the text packages models newlines.

Constant Value: 10 (0x0000000a)

Protected Constructors

protected AbstractWriter (Writer w, Document doc)

Creates a new AbstractWriter. Initializes the ElementIterator with the default root of the document.

Parameters
w a Writer.
doc a Document

protected AbstractWriter (Writer w, Document doc, int pos, int len)

Creates a new AbstractWriter. Initializes the ElementIterator with the element passed in.

Parameters
w a Writer
doc an Element
pos The location in the document to fetch the content.
len The amount to write out.

protected AbstractWriter (Writer w, Element root)

Creates a new AbstractWriter. Initializes the ElementIterator with the element passed in.

Parameters
w a Writer
root an Element

protected AbstractWriter (Writer w, Element root, int pos, int len)

Creates a new AbstractWriter. Initializes the ElementIterator with the element passed in.

Parameters
w a Writer
root an Element
pos The location in the document to fetch the content.
len The amount to write out.

Public Methods

public int getEndOffset ()

Returns the last offset to be output.

public String getLineSeparator ()

Returns the string used to represent newlines.

public int getStartOffset ()

Returns the first offset to be output.

public void setLineSeparator (String value)

Sets the String used to reprsent newlines. This is initialized in the constructor from either the Document, or the System property line.separator.

Protected Methods

protected void decrIndent ()

Decrements the indent level.

protected boolean getCanWrapLines ()

Returns whether or not the lines can be wrapped. If this is false no lineSeparator's will be output.

protected int getCurrentLineLength ()

Returns the current line length.

protected Document getDocument ()

Fetches the document.

Returns
  • the Document.

protected ElementIterator getElementIterator ()

Fetches the ElementIterator.

Returns
  • the ElementIterator.

protected int getIndentLevel ()

Returns the current indentation level. That is, the number of times incrIndent has been invoked minus the number of times decrIndent has been invoked.

protected int getIndentSpace ()

Returns the amount of space to indent.

protected int getLineLength ()

Returns the maximum line length.

protected String getText (Element elem)

Returns the text associated with the element. The assumption here is that the element is a leaf element. Throws a BadLocationException when encountered.

Parameters
elem an Element
Returns
  • the text as a String
Throws
BadLocationException if pos represents an invalid location within the document

protected Writer getWriter ()

Returns the Writer that is used to output the content.

protected boolean inRange (Element next)

This method determines whether the current element is in the range specified. When no range is specified, the range is initialized to be the entire document. inRange() returns true if the range specified intersects with the element's range.

Parameters
next an Element.
Returns
  • boolean that indicates whether the element is in the range.

protected void incrIndent ()

Increments the indent level. If indenting would cause getIndentSpace() *getIndentLevel() to be > than getLineLength() this will not cause an indent.

protected void indent ()

Does indentation. The number of spaces written out is indent level times the space to map mapping. If the current line is empty, this will not make it so that the current line is still considered empty.

Throws
IOException on any I/O error

protected boolean isLineEmpty ()

Returns true if the current line should be considered empty. This is true when getCurrentLineLength == 0 || indent has been invoked on an empty line.

protected void output (char[] content, int start, int length)

The last stop in writing out content. All the write methods eventually make it to this method, which invokes write on the Writer.

This method also updates the line length based on length. If this is invoked to output a newline, the current line length will need to be reset as will no longer be valid. If it is up to the caller to do this. Use writeLineSeparator to write out a newline, which will property update the current line length.

Throws
IOException

protected void setCanWrapLines (boolean newValue)

Sets whether or not lines can be wrapped. This can be toggled during the writing of lines. For example, outputting HTML might set this to false when outputting a quoted string.

protected void setCurrentLineLength (int length)

Sets the current line length.

protected void setIndentSpace (int space)

Enables subclasses to specify how many spaces an indent maps to. When indentation takes place, the indent level is multiplied by this mapping. The default is 2.

Parameters
space an int representing the space to indent mapping.

protected void setLineLength (int l)

Enables subclasses to set the number of characters they want written per line. The default is 100.

Parameters
l the maximum line length.

protected void text (Element elem)

Writes out text. If a range is specified when the constructor is invoked, then only the appropriate range of text is written out.

Parameters
elem an Element.
Throws
IOException on any I/O error
BadLocationException if pos represents an invalid location within the document.

protected void write (char[] chars, int startIndex, int length)

All write methods call into this one. If getCanWrapLines() returns false, this will call output with each sequence of chars that doesn't contain a NEWLINE, followed by a call to writeLineSeparator. On the other hand, if getCanWrapLines() returns true, this will split the string, as necessary, so getLineLength is honored. The only exception is if the current string contains no whitespace, and won't fit in which case the line length will exceed getLineLength.

Throws
IOException

protected abstract void write ()

This abstract method needs to be implemented by subclasses. Its responsibility is to iterate over the elements and use the write() methods to generate output in the desired format.

protected void write (char ch)

Writes out a character. This is implemented to invoke the write method that takes a char[].

Parameters
ch a char.
Throws
IOException on any I/O error

protected void write (String content)

Writes out a string. This is implemented to invoke the write method that takes a char[].

Parameters
content a String.
Throws
IOException on any I/O error

protected void writeAttributes (AttributeSet attr)

Writes out the set of attributes as " =" pairs. It throws an IOException when encountered.

Parameters
attr an AttributeSet.
Throws
IOException on any I/O error

protected void writeLineSeparator ()

Writes the line separator. This invokes output directly as well as setting the lineLength to 0.

Throws
IOException