javax.swing.text
Class AbstractWriter
java.lang.Object
|
+--javax.swing.text.AbstractWriter
- public abstract class AbstractWriter
- extends Object
Safe: 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.
- Version:
- 1.16, 12/03/01
- Author:
- Sunita Mani
Field Summary
private boolean
canWrapLines
True indicates that when writing, the line can be split, false
indicates that even if the line is> than max line length it should
not be split.
private boolean
isLineEmpty
True while the current line is empty.
protected static char
NEWLINE
How the text packages models newlines.
private char[]
newlineChars
This is used in
writeLineSeparator instead of
tempChars.
private char[]
tempChars
Used when writing out a string.
Constructor Summary
Method Summary
protected void
decrIndent()
Decrements the indent level.
protected boolean
getCanWrapLines()
Returns whether or not the lines can be wrapped.
int
getEndOffset()
Enabled: Returns the last offset to be output.
protected Writer
getWriter()
Returns the Writer that is used to output the content.
protected void
incrIndent()
Increments the indent level.
protected void
indent()
Does indentation.
private int
indexOf(char[] chars,
char sChar,
int startIndex,
int endIndex)
Support method to locate an occurence of a particular character.
protected boolean
inRange(Element next)
This method determines whether the current element
is in the range specified.
protected boolean
isLineEmpty()
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
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.
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
write(String content)
Writes out a string.
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Field Detail
it
private ElementIterator it
out
private Writer out
indentLevel
private int indentLevel
indentSpace
private int indentSpace
doc
private Document doc
maxLineLength
private int maxLineLength
currLength
private int currLength
startOffset
private int startOffset
endOffset
private int endOffset
offsetIndent
private int offsetIndent
lineSeparator
private String lineSeparator
- String used for end of line. If the Document has the property
EndOfLineStringProperty, it will be used for newlines. Otherwise
the System property line.separator will be used. The line separator
can also be set.
canWrapLines
private boolean canWrapLines
- True indicates that when writing, the line can be split, false
indicates that even if the line is> than max line length it should
not be split.
isLineEmpty
private boolean isLineEmpty
- True while the current line is empty. This will remain true after
indenting.
indentChars
private char[] indentChars
- Used when indenting. Will contain the spaces.
tempChars
private char[] tempChars
- Used when writing out a string.
newlineChars
private char[] newlineChars
- This is used in
writeLineSeparator instead of
tempChars. If tempChars were used it would mean write couldn't invoke
writeLineSeparator as it might have been passed
tempChars.
segment
private Segment segment
- Used for writing text.
NEWLINE
protected static final char NEWLINE
- How the text packages models newlines.
- See Also:
getLineSeparator()
Constructor Detail
AbstractWriter
protected AbstractWriter(Writer w,
Document doc)
- Creates a new AbstractWriter.
Initializes the ElementIterator with the default
root of the document.
AbstractWriter
protected AbstractWriter(Writer w,
Document doc,
int pos,
int len)
- Creates a new AbstractWriter.
Initializes the ElementIterator with the
element passed in.
- Parameters:
pos - The location in the document to fetch the
content.len - The amount to write out.
AbstractWriter
protected AbstractWriter(Writer w,
Element root)
- Creates a new AbstractWriter.
Initializes the ElementIterator with the
element passed in.
AbstractWriter
protected AbstractWriter(Writer w,
Element root,
int pos,
int len)
- Creates a new AbstractWriter.
Initializes the ElementIterator with the
element passed in.
- Parameters:
pos - The location in the document to fetch the
content.len - The amount to write out.
Method Detail
getStartOffset
public int getStartOffset()
- Enabled: Returns the first offset to be output.
- Since:
- 1.3
getEndOffset
public int getEndOffset()
- Enabled: Returns the last offset to be output.
- Since:
- 1.3
getElementIterator
protected ElementIterator getElementIterator()
- Fetches the ElementIterator.
- Returns:
- the ElementIterator.
getWriter
protected Writer getWriter()
- Returns the Writer that is used to output the content.
- Since:
- 1.3
getDocument
protected Document getDocument()
- Fetches the document.
- Returns:
- the Document.
inRange
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.
- Returns:
- boolean that indicates whether the element
is in the range.
write
protected abstract void write()
throws IOException,
BadLocationException
- 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.
IOException
BadLocationException
getText
protected String getText(Element elem)
throws BadLocationException
- Returns the text associated with the element.
The assumption here is that the element is a
leaf element. Throws a BadLocationException
when encountered.
- Returns:
- the text as a
String
BadLocationException
text
protected void text(Element elem)
throws BadLocationException,
IOException
- Writes out text. If a range is specified when the constructor
is invoked, then only the appropriate range of text is written
out.
BadLocationException
IOException
setLineLength
protected void setLineLength(int l)
- Enables subclasses to set the number of characters they
want written per line. The default is 100.
-
getLineLength
protected int getLineLength()
- Returns the maximum line length.
- Since:
- 1.3
setCurrentLineLength
protected void setCurrentLineLength(int length)
- Sets the current line length.
- Since:
- 1.3.
getCurrentLineLength
protected int getCurrentLineLength()
- 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 when
getCurrentLineLength == 0 ||
indent has been invoked on an empty line.
- 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.
- 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.
- 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.
-
getIndentSpace
protected int getIndentSpace()
- Returns the amount of space to indent.
- Since:
- 1.3
setLineSeparator
public void setLineSeparator(String value)
- Enabled: Sets the String used to reprsent newlines. This is initialized
in the constructor from either the Document, or the System property
line.separator.
- Since:
- 1.3
getLineSeparator
public String getLineSeparator()
- Enabled: Returns the string used to represent newlines.
- Since:
- 1.3
incrIndent
protected void incrIndent()
- Increments the indent level. If indenting would cause
getIndentSpace() *getIndentLevel() to be>
than getLineLength() 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 times
incrIndent has been invoked minus the number of times
decrIndent has been invoked.
- Since:
- 1.3
indent
protected void indent()
throws IOException
- 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.
IOException
write
protected void write(char ch)
throws IOException
- Writes out a character. This is implemented to invoke
the
write method that takes a char[].
IOException
write
protected void write(String content)
throws IOException
- Writes out a string. This is implemented to invoke the
write method that takes a char[].
IOException
writeLineSeparator
protected void writeLineSeparator()
throws IOException
- Writes the line separator. This invokes
output directly
as well as setting the lineLength to 0.
IOException- Since:
- 1.3
write
protected void write(char[] chars,
int startIndex,
int length)
throws IOException
- 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.
IOException- Since:
- 1.3
writeAttributes
protected void writeAttributes(AttributeSet attr)
throws IOException
- Writes out the set of attributes as " ="
pairs. It throws an IOException when encountered.
IOException
output
protected void output(char[] content,
int start,
int length)
throws IOException
- 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.
IOException- Since:
- 1.3
indexOf
private int indexOf(char[] chars,
char sChar,
int startIndex,
int endIndex)
- Support method to locate an occurence of a particular character.
-