java.lang.Object
javax.swing.text.AbstractWriter
- Direct Known Subclasses:
HTMLWriter
,MinimalHTMLWriter
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.
-
Field Summary
Modifier and TypeFieldDescriptionprotected static final char
How the text packages models newlines. -
Constructor Summary
ModifierConstructorDescriptionprotected
AbstractWriter
(Writer w, Document doc) Creates a new AbstractWriter.protected
AbstractWriter
(Writer w, Document doc, int pos, int len) Creates a new AbstractWriter.protected
AbstractWriter
(Writer w, Element root) Creates a new AbstractWriter.protected
AbstractWriter
(Writer w, Element root, int pos, int len) Creates a new AbstractWriter. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
Decrements the indent level.protected boolean
Returns whether or not the lines can be wrapped.protected int
Returns the current line length.protected Document
Fetches the document.protected ElementIterator
Fetches the ElementIterator.int
Returns the last offset to be output.protected int
Returns the current indentation level.protected int
Returns the amount of space to indent.protected int
Returns the maximum line length.Returns the string used to represent newlines.int
Returns the first offset to be output.protected String
Returns the text associated with the element.protected Writer
Returns the Writer that is used to output the content.protected void
Increments the indent level.protected void
indent()
Does indentation.protected boolean
This method determines whether the current element is in the range specified.protected boolean
Returns true if the current line should be considered empty.protected void
output
(char[] content, int start, int length) The last stop in writing out content.protected void
setCanWrapLines
(boolean newValue) Sets whether or not lines can be wrapped.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.protected void
setLineLength
(int l) Enables subclasses to set the number of characters they want written per line.void
setLineSeparator
(String value) Sets the String used to represent newlines.protected void
Writes out text.protected abstract void
write()
This abstract method needs to be implemented by subclasses.protected void
write
(char ch) Writes out a character.protected void
write
(char[] chars, int startIndex, int length) All write methods call into this one.protected void
Writes out a string.protected void
writeAttributes
(AttributeSet attr) Writes out the set of attributes as " <name>=<value>" pairs.protected void
Writes the line separator.
-
Field Details
-
NEWLINE
protected static final char NEWLINEHow the text packages models newlines.- See Also:
-
-
Constructor Details
-
AbstractWriter
-
AbstractWriter
-
AbstractWriter
-
AbstractWriter
-
-
Method Details
-
getStartOffset
public int getStartOffset()Returns the first offset to be output.- Returns:
- the first offset to be output
- Since:
- 1.3
-
getEndOffset
public int getEndOffset()Returns the last offset to be output.- Returns:
- the last offset to be output
- Since:
- 1.3
-
getElementIterator
Fetches the ElementIterator.- Returns:
- the ElementIterator.
-
getWriter
Returns the Writer that is used to output the content.- Returns:
- the Writer that is used to output the content
- Since:
- 1.3
-
getDocument
-
inRange
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.
-
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.- Throws:
IOException
- if an I/O problem has occurredBadLocationException
- for an invalid location within the document
-
getText
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
- anElement
- Returns:
- the text as a
String
- Throws:
BadLocationException
- if pos represents an invalid location within the document
-
text
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 errorBadLocationException
- if pos represents an invalid location within the document.
-
setLineLength
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.
-
getLineLength
protected int getLineLength()Returns the maximum line length.- Returns:
- the maximum line length
- Since:
- 1.3
-
setCurrentLineLength
protected void setCurrentLineLength(int length) Sets the current line length.- Parameters:
length
- the new line length- Since:
- 1.3
-
getCurrentLineLength
protected int getCurrentLineLength()Returns the current line length.- Returns:
- the current line length
- Since:
- 1.3
-
isLineEmpty
protected boolean isLineEmpty()Returns true if the current line should be considered empty. This is true whengetCurrentLineLength
== 0 ||indent
has been invoked on an empty line.- Returns:
- true if the current line should be considered empty
- Since:
- 1.3
-
setCanWrapLines
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.- Parameters:
newValue
- new value for line wrapping- Since:
- 1.3
-
getCanWrapLines
protected boolean getCanWrapLines()Returns whether or not the lines can be wrapped. If this is false no lineSeparator's will be output.- Returns:
- whether or not the lines can be wrapped
- Since:
- 1.3
-
setIndentSpace
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.
-
getIndentSpace
protected int getIndentSpace()Returns the amount of space to indent.- Returns:
- the amount of space to indent
- Since:
- 1.3
-
setLineSeparator
Sets the String used to represent newlines. This is initialized in the constructor from either the Document, or the System property line.separator.- Parameters:
value
- the new line separator- Since:
- 1.3
-
getLineSeparator
Returns the string used to represent newlines.- Returns:
- the string used to represent newlines
- Since:
- 1.3
-
incrIndent
protected void incrIndent()Increments the indent level. If indenting would causegetIndentSpace()
*getIndentLevel()
to be > thangetLineLength()
this will not cause an indent. -
decrIndent
protected void decrIndent()Decrements the indent level. -
getIndentLevel
protected int getIndentLevel()Returns the current indentation level. That is, the number of timesincrIndent
has been invoked minus the number of timesdecrIndent
has been invoked.- Returns:
- the current indentation level
- Since:
- 1.3
-
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
-
write
Writes out a character. This is implemented to invoke thewrite
method that takes a char[].- Parameters:
ch
- a char.- Throws:
IOException
- on any I/O error
-
write
Writes out a string. This is implemented to invoke thewrite
method that takes a char[].- Parameters:
content
- a String.- Throws:
IOException
- on any I/O error
-
writeLineSeparator
Writes the line separator. This invokesoutput
directly as well as setting thelineLength
to 0.- Throws:
IOException
- on any I/O error- Since:
- 1.3
-
write
All write methods call into this one. IfgetCanWrapLines()
returns false, this will calloutput
with each sequence ofchars
that doesn't contain a NEWLINE, followed by a call towriteLineSeparator
. On the other hand, ifgetCanWrapLines()
returns true, this will split the string, as necessary, sogetLineLength
is honored. The only exception is if the current string contains no whitespace, and won't fit in which case the line length will exceedgetLineLength
.- Parameters:
chars
- characters to outputstartIndex
- starting indexlength
- length of output- Throws:
IOException
- on any I/O error- Since:
- 1.3
-
writeAttributes
Writes out the set of attributes as " <name>=<value>" pairs. It throws an IOException when encountered.- Parameters:
attr
- an AttributeSet.- Throws:
IOException
- on any I/O error
-
output
The last stop in writing out content. All the write methods eventually make it to this method, which invokeswrite
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. UsewriteLineSeparator
to write out a newline, which will property update the current line length.- Parameters:
content
- characters to outputstart
- starting indexlength
- length of output- Throws:
IOException
- on any I/O error- Since:
- 1.3
-