Extension SDK 10.1.2

oracle.javatools.editor.language
Class HistoryReadTextBuffer

java.lang.Object
  extended byoracle.javatools.editor.language.HistoryReadTextBuffer
All Implemented Interfaces:
ReadTextBuffer

public final class HistoryReadTextBuffer
extends java.lang.Object
implements ReadTextBuffer

The HistoryReadTextBuffer is a decorator around a ReadTextBuffer to aid in damage calculations by allowing a client to examine a single prior version of the ReadTextBuffer if the document event representating the change is available.

Note that certain methods have not been implemented, since they are not needed to work with a Lexer implementation.


Method Summary
static HistoryReadTextBuffer acquireReadTextBuffer(ReadTextBuffer buffer, BasicDocumentEvent event)
          Acquire a shared (reused) wrapper text buffer for use.
 char getChar(int offset)
          Fetches the character from the given offset.
 char[] getChars(int offset, int length)
          Fetches a number of characters from the indicated offset in the buffer.
 int getLength()
          Fetches the number of characters in this buffer.
 java.lang.String getString(int offset, int length)
          Fetches a number of characters from the indicated offset in the buffer and returns it as a String.
 void getText(int offset, int length, javax.swing.text.Segment segment)
          Fetches the text contained within the given section of the TextBuffer The Segment object is provided by the caller.
 void readLock()
          Attempts to acquire a read lock on this text buffer for the purposes of reading the buffer - this is a blocking call.
 void readUnlock()
          Releases a held read lock on this text buffer.
static void releaseReadTextBuffer(HistoryReadTextBuffer buffer)
          Release the wrapper text buffer so that it can be re-used.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

acquireReadTextBuffer

public static HistoryReadTextBuffer acquireReadTextBuffer(ReadTextBuffer buffer,
                                                          BasicDocumentEvent event)
Acquire a shared (reused) wrapper text buffer for use.

Parameters:
buffer - the buffer we want to read
event - the change that was applied to that buffer
Returns:
a wrapper text buffer for use

releaseReadTextBuffer

public static void releaseReadTextBuffer(HistoryReadTextBuffer buffer)
Release the wrapper text buffer so that it can be re-used.

Parameters:
buffer - the wrapper to release

getLength

public int getLength()
Fetches the number of characters in this buffer.

Specified by:
getLength in interface ReadTextBuffer
Returns:
length of buffer

getChar

public char getChar(int offset)
             throws java.lang.IndexOutOfBoundsException
Fetches the character from the given offset.

Specified by:
getChar in interface ReadTextBuffer
Parameters:
offset - the offset in the buffer to get the character from
Returns:
the character at the given offset
Throws:
java.lang.IndexOutOfBoundsException - if offset is invalid

getChars

public char[] getChars(int offset,
                       int length)
                throws java.lang.IndexOutOfBoundsException
Fetches a number of characters from the indicated offset in the buffer. If length is zero, a zero-length array will be returned. This is not currently implemented.

Specified by:
getChars in interface ReadTextBuffer
Parameters:
offset - the offset in the buffer to start from
length - number of characters to fetch
Returns:
an array containing the requested characters
Throws:
java.lang.IndexOutOfBoundsException - if offset or length are invalid

getString

public java.lang.String getString(int offset,
                                  int length)
                           throws java.lang.IndexOutOfBoundsException
Fetches a number of characters from the indicated offset in the buffer and returns it as a String. If the length is zero, a zero-length String will be returned. This is not currently implemented.

Specified by:
getString in interface ReadTextBuffer
Parameters:
offset - the offset in the buffer to start from
length - number of characters to fetch
Returns:
a String containing the requested characters
Throws:
java.lang.IndexOutOfBoundsException - if offset or length are invalid

getText

public void getText(int offset,
                    int length,
                    javax.swing.text.Segment segment)
             throws java.lang.IndexOutOfBoundsException
Fetches the text contained within the given section of the TextBuffer The Segment object is provided by the caller. This is not currently implemented.

Specified by:
getText in interface ReadTextBuffer
Parameters:
offset - the offset into the buffer representing the desired start of the data >= 0
length - the length of the desired data >= 0
segment - the caller's Segment object to return the data in
Throws:
java.lang.IndexOutOfBoundsException
See Also:
Document.getText(int, int)

readLock

public void readLock()
Attempts to acquire a read lock on this text buffer for the purposes of reading the buffer - this is a blocking call. Note that this is equivalent to a shared lock - multiple concurrent readers are allowed to acquire the read lock.

Note that for TextBuffer objects, a call to readLock() must be matched by a call to readUnlock() even if nested within a writeLock()/writeUnlock(). This is to help guarantee correctness.

Specified by:
readLock in interface ReadTextBuffer
See Also:
TextBuffer#getLineMap, TextBuffer#writeLock

readUnlock

public void readUnlock()
Releases a held read lock on this text buffer.

Specified by:
readUnlock in interface ReadTextBuffer

Extension SDK

 

Copyright © 1997, 2004, Oracle. All rights reserved.