Java Platform 1.2
Beta 4

Class com.sun.java.swing.text.GapContent

java.lang.Object
  |
  +--com.sun.java.swing.text.GapContent

public class GapContent
extends Object
implements AbstractDocument.Content, Serializable
An implementation of the AbstractDocument.Content interface implemented using a gapped buffer similar to that used by emacs. The underlying storage is a array of unicode characters with a gap somewhere. The gap is moved to the location of changes to take advantage of common behavior where most changes are in the same location. Changes that occur at a gap boundry are generally cheap and moving the gap is generally cheaper than moving the array contents directly to accomodate the change.

The positions tracking change are also generally cheap to maintain. The Position implementations (marks) store the array index and can easily calculate the sequential position from the current gap location. Changes only require update to the the marks between the old and new gap boundries when the gap is moved, so generally updating the marks is pretty cheap. The marks are stored sorted so they can be located quickly with a binary search. This increases the cost of adding a mark, and decreases the cost of keeping the mark updated.

See Also:
Serialized Form

Constructor Summary
GapContent()
          Creates a new GapContent object.
GapContent(int initialLength)
          Creates a new GapContent object, with the initial size specified.
 
Method Summary
 Position createPosition(int offset)
          Creates a position within the content that will track change as the content is mutated.
 void getChars(int where, int len, Segment chars)
          Retrieves a portion of the content.
 String getString(int where, int len)
          Retrieves a portion of the content.
 UndoableEdit insertString(int where, String str)
          Inserts a string into the content.
 int length()
          Returns the length of the content.
 UndoableEdit remove(int where, int nitems)
          Removes part of the content.
 
Methods inherited from class java.lang.Object
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

Constructor Detail

GapContent

public GapContent()
Creates a new GapContent object. Initial size defaults to 10.

GapContent

public GapContent(int initialLength)
Creates a new GapContent object, with the initial size specified.
Parameters:
initialLength - the initial size
Method Detail

length

public int length()
Returns the length of the content.
Specified by:
length in interface AbstractDocument.Content
Returns:
the length >= 1
See Also:
AbstractDocument.Content.length()

insertString

public UndoableEdit insertString(int where,
                                 String str)
                          throws BadLocationException
Inserts a string into the content.
Specified by:
insertString in interface AbstractDocument.Content
Parameters:
where - the starting position >= 0, < length()
str - the non-null string to insert
Returns:
an UndoableEdit object for undoing
Throws:
BadLocationException - if the specified position is invalid
See Also:
AbstractDocument.Content.insertString(int, java.lang.String)

remove

public UndoableEdit remove(int where,
                           int nitems)
                    throws BadLocationException
Removes part of the content.
Specified by:
remove in interface AbstractDocument.Content
Parameters:
where - the starting position >= 0, where + nitems < length()
nitems - the number of characters to remove >= 0
Returns:
an UndoableEdit object for undoing
Throws:
BadLocationException - if the specified position is invalid
See Also:
AbstractDocument.Content.remove(int, int)

getString

public String getString(int where,
                        int len)
                 throws BadLocationException
Retrieves a portion of the content.
Specified by:
getString in interface AbstractDocument.Content
Parameters:
where - the starting position >= 0
len - the length to retrieve >= 0
Returns:
a string representing the content
Throws:
BadLocationException - if the specified position is invalid
See Also:
AbstractDocument.Content.getString(int, int)

getChars

public void getChars(int where,
                     int len,
                     Segment chars)
              throws BadLocationException
Retrieves a portion of the content. If the desired content spans the gap, we copy the content. If the desired content does not span the gap, the actual store is returned to avoid the copy since it is contiguous.
Specified by:
getChars in interface AbstractDocument.Content
Parameters:
where - the starting position >= 0, where + len <= length()
len - the number of characters to retrieve >= 0
chars - the Segment object to return the characters in
Throws:
BadLocationException - if the specified position is invalid
See Also:
AbstractDocument.Content.getChars(int, int, com.sun.java.swing.text.Segment)

createPosition

public Position createPosition(int offset)
                        throws BadLocationException
Creates a position within the content that will track change as the content is mutated.
Specified by:
createPosition in interface AbstractDocument.Content
Parameters:
offset - the offset to track >= 0
Returns:
the position
Throws:
BadLocationException - if the specified position is invalid

Java Platform 1.2
Beta 4

Submit a bug or feature
Submit comments/suggestions about new javadoc look
Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.
This documentation was generated with a post-Beta4 version of Javadoc.