proyecto.editor
Class JavaTextPane.DocumentReader

java.lang.Object
  extended by java.io.Reader
      extended by proyecto.editor.JavaTextPane.DocumentReader
All Implemented Interfaces:
Closeable, Readable
Enclosing class:
JavaTextPane

 class JavaTextPane.DocumentReader
extends Reader

A reader interface for an abstract document. Since syntax highlighting packages only accept Stings and Readers, this must be used. Since close() method does nothing and a seek() method has been added, this allows us to get some performance improvements through reuse. It can be used even after lexer explicitly closes it by seeking to place that we want to read next, and reseting lexer.


Field Summary
 
Fields inherited from class java.io.Reader
lock
 
Constructor Summary
JavaTextPane.DocumentReader(AbstractDocument document)
          Construct a reader on given document.
 
Method Summary
 void close()
          Has no effect.
 void mark(int readAheadLimit)
          Save a position for reset.
 boolean markSupported()
          This reader support mark and reset.
 int read()
          Read a single character.
 int read(char[] cbuf)
          Read and fill buffer.
 int read(char[] cbuf, int off, int len)
          Read and fill buffer.
 boolean ready()
          Ready.
 void reset()
          Reset this reader to last mark, or beginning of document if a mark has not been set.
 void seek(long n)
          Seek to given position in document.
 long skip(long n)
          Skip characters of input.
 void update(int position, int adjustment)
          Modifying document while reader is working is like pulling rug out from under reader.
 
Methods inherited from class java.io.Reader
read
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JavaTextPane.DocumentReader

public JavaTextPane.DocumentReader(AbstractDocument document)
Construct a reader on given document.

Parameters:
document - document to be read.
Method Detail

update

public void update(int position,
                   int adjustment)
Modifying document while reader is working is like pulling rug out from under reader. Alerting reader with this method (in a nice thread safe way, this should not be called at the same time as a read) allows reader to compensate.

Parameters:
position - position
adjustment - adjustment

close

public void close()
Has no effect. This reader can be used even after it has been closed.

Specified by:
close in interface Closeable
Specified by:
close in class Reader

mark

public void mark(int readAheadLimit)
Save a position for reset.

Overrides:
mark in class Reader
Parameters:
readAheadLimit - ignored.

markSupported

public boolean markSupported()
This reader support mark and reset.

Overrides:
markSupported in class Reader
Returns:
true

read

public int read()
Read a single character.

Overrides:
read in class Reader
Returns:
character or -1 if end of document has been reached.

read

public int read(char[] cbuf)
Read and fill buffer. This method will always fill buffer unless end of document is reached.

Overrides:
read in class Reader
Parameters:
cbuf - buffer to fill.
Returns:
number of characters read or -1 if no more characters are available in document.

read

public int read(char[] cbuf,
                int off,
                int len)
Read and fill buffer. This method will always fill buffer unless end of document is reached.

Specified by:
read in class Reader
Parameters:
cbuf - buffer to fill.
off - offset into buffer to begin fill.
len - maximum number of characters to put in buffer.
Returns:
number of characters read or -1 if no more characters are available in document.

ready

public boolean ready()
Ready.

Overrides:
ready in class Reader
Returns:
true

reset

public void reset()
Reset this reader to last mark, or beginning of document if a mark has not been set.

Overrides:
reset in class Reader

skip

public long skip(long n)
Skip characters of input. This method will always skip maximum number of characters unless end of file is reached.

Overrides:
skip in class Reader
Parameters:
n - number of characters to skip.
Returns:
actual number of characters skipped.

seek

public void seek(long n)
Seek to given position in document.

Parameters:
n - offset to which to seek.