ISourceModel Interface
- public interface ISourceModel
A source model is a data structure that contains the actual text data of a given document. Generally implemented
as a linked list of lines, some implementations may extend the swing AbstractDocument class, though this is not
required and should not be relied upon.
public void |
-
addSourceModelListener (ISourceModelListener l)
- Adds a source model listener to the source model.
|
public void |
-
addUndoableEditListener (UndoableEditListener l)
- Adds a listener to the source model that will be notified of all undoable edits that occur.
|
public Position |
-
createHoldPosition (int offs)
- A variation on createPosition() which creates a Position that does
not move to accomodate insertions directly on top of it.
|
public Position |
-
createPosition (int offs)
- Creates a Position object to track a location in a document through user
changes.
|
public String |
-
getDenormalizedText (int offset, int length)
- Retrieves a subset of the source model in String form.
|
public Reader |
-
getDenormalizedTextReader ()
- Returns a reader for the document text that denormalizes as above.
|
public int |
-
getLength ()
|
public Object |
-
getLineAttribute (int line, Object key)
- Retrives the attribute with the specified key from the specified line.
|
public ISourceModel.Line |
-
getLineByIndex (int index)
- Returns the Line object at the specified index.
|
public ISourceModel.Line |
-
getLineByOffset (int offset)
- Returns the Line object at the specified offset.
|
public int |
-
getLineCount ()
- Returns the number of lines in this source model.
|
public int |
-
getLineIndexByOffset (int offset)
|
public String |
-
getText (int offset, int length)
- Retrieves a subset of the source model in String form.
|
public void |
-
getText (int offset, int length, Segment text)
- Retrieves a subset of the source model in a text Segment.
|
public void |
-
insertString (int offset, String str, AttributeSet a)
- Inserts text into the source model.
|
public void |
-
remove (int offset, int len)
- Deletes text from the source model.
|
public void |
-
removeSourceModelListener (ISourceModelListener l)
- Removes a source model listener from the source model.
|
public void |
-
removeUndoableEditListener (UndoableEditListener l)
- Removes an UndoableEditListener from the source model.
|
public void |
-
setLineAttribute (int line, Object key, Object value)
- Sets an attribute on the specified line.
|
public void |
-
setReadLock (boolean on)
- Acquires/releases a read lock on the model.
|
public void |
-
setWriteLock (boolean on)
- Acquires/releases a write lock on the model.
|
public void |
-
touchLineAttribute (int line, Object key)
- Does not actually change a line's attributes, but does trigger a
change event to be sent to listeners, as if setLineAttribute
had been called.
|
ATTRIB_LINE_DIRTY
public static final String
ATTRIB_LINE_DIRTY
addSourceModelListener(ISourceModelListener) Method
public void addSourceModelListener(ISourceModelListener
l)
Adds a source model listener to the source model. A source model listener is notified of all source model
changes, whether they are undoable or not.
Parameters
-
l
- the listener to be added
addUndoableEditListener(UndoableEditListener) Method
public void addUndoableEditListener(UndoableEditListener
l)
Adds a listener to the source model that will be notified of all undoable edits that occur.
Parameters
-
l
- the listener to be added
createHoldPosition(int) Method
public Position
createHoldPosition(int offs)
throws BadLocationException
A variation on createPosition() which creates a Position that does
not move to accomodate insertions directly on top of it. This
variation is not implemented by AbstractDocument, nor supported by
Swing's GapContent class. The SourceEditor's DefaultSourceModel
class does implement its own GapContent to support this.
Parameters
-
offs
- is the character position in the document
Returns
- a left-biased Position mark.
Exceptions
-
BadLocationException
createPosition(int) Method
public Position
createPosition(int offs)
throws BadLocationException
Creates a Position object to track a location in a document through user
changes. Insertions on top of this position will move it to the end of
the inserted text. Ideally, the class that implements this interface
will also extend AbstractDocument, in which case you get this for free.
Parameters
-
offs
- is the character position in the document
Returns
- a right-biased Position mark.
Exceptions
-
BadLocationException
getDenormalizedText(int, int) Method
public String
getDenormalizedText(int offset,
int length)
throws BadLocationException
Retrieves a subset of the source model in String form. The string is converted to contain the newline
characters that were found in the document text when the file was loaded. Added lines will be terminated
using the first newline in the original file, or the system default value for empty files.
Note that the offset and length passed in are in terms of the normalized text. The resulting string
may have a different length than the length passed in.
Parameters
-
offset
- a zero-based starting character offset within the file
-
length
- the length of text to be extracted
Exceptions
-
BadLocationException
getDenormalizedTextReader() Method
public Reader
getDenormalizedTextReader()
Returns a reader for the document text that denormalizes as above.
This method should generally only be called when writing document contents to disk.
getLength() Method
public int getLength()
Returns
- the length, in characters, of the source model.
getLineAttribute(int, Object) Method
public Object
getLineAttribute(int line,
Object
key)
Retrives the attribute with the specified key from the specified line.
Parameters
-
line
- the zero based index of the desired line
-
key
- an arbitrary key value, as set via a
setLineAttribute
call.
Returns
- the line attribute with the specified key on the specified line. May return null is there is no
such attribute on that line.
getLineByIndex(int) Method
public ISourceModel.Line
getLineByIndex(int index)
Returns the Line object at the specified index. May be null if the line index is invalid.
Parameters
-
index
- a zero-based line index
Returns
- a Line object, possibly null.
getLineByOffset(int) Method
public ISourceModel.Line
getLineByOffset(int offset)
Returns the Line object at the specified offset. May be null if the offset is invalid.
Parameters
-
offset
- a zero-based character offset
Returns
- a Line object, possibly null.
getLineCount() Method
public int getLineCount()
Returns the number of lines in this source model.
getLineIndexByOffset(int) Method
public int getLineIndexByOffset(int offset)
Parameters
-
offset
- a zero-based character offset within the file
Returns
- the zero-based index of the line containing the offset. May return null if the offset is invalid.
getText(int, int) Method
public String
getText(int offset,
int length)
throws BadLocationException
Retrieves a subset of the source model in String form.
Parameters
-
offset
- a zero-based starting character offset within the file
-
length
- the length of text to be returned
Exceptions
-
BadLocationException
getText(int, int, Segment) Method
public void getText(int offset,
int length,
Segment
text)
throws BadLocationException
Retrieves a subset of the source model in a text Segment.
Parameters
-
offset
- a zero-based starting character offset within the file
-
length
- the length of text to be returned
-
text
- the Segment in which the requested text will be stored.
Exceptions
-
BadLocationException
insertString(int, String, AttributeSet) Method
public void insertString(int offset,
String
str,
AttributeSet
a)
throws BadLocationException
Inserts text into the source model. Note that all document modifications will initiate a recompilation,
which may generate element change events.
Be sure use "\n" for a newline, rather than an OS specific line
ending or System.getProperty("line.separator"). This is editing the
in-memory copy of this file. The IDE will handle line endings appropriately
in reads/writes to disk.
Parameters
-
offset
- a zero-based character offset within the file
-
str
- the string to be inserted
-
a
- a collection of attributes to place on newly created lines.
Exceptions
-
BadLocationException
remove(int, int) Method
public void remove(int offset,
int len)
throws BadLocationException
Deletes text from the source model. Note that all document modifications will initiate a recompilation,
which may generate element change events.
Parameters
-
offset
- a zero-based character offset within the file
-
len
- the length of the segment to be removed
Exceptions
-
BadLocationException
removeSourceModelListener(ISourceModelListener) Method
public void removeSourceModelListener(ISourceModelListener
l)
Removes a source model listener from the source model.
Parameters
-
l
- the listener to remove
removeUndoableEditListener(UndoableEditListener) Method
public void removeUndoableEditListener(UndoableEditListener
l)
Removes an UndoableEditListener from the source model.
Parameters
-
l
- the listener to be removed.
setLineAttribute(int, Object, Object) Method
public void setLineAttribute(int line,
Object
key,
Object
value)
Sets an attribute on the specified line. Note that modifying a line attribute value will cause the selected
line to repaint, if visible in the source view. As a result, line attributes are a common means of storing the
location of line specific UI information, such as breakpoint and instruction point locations.
Parameters
-
line
- the zero-based index of the line upon which to set the attribute
-
key
- an arbitrary key used for retrieval of the line attribute
-
value
- line attribute value
setReadLock(boolean) Method
public void setReadLock(boolean on)
Acquires/releases a read lock on the model.
setWriteLock(boolean) Method
public void setWriteLock(boolean on)
Acquires/releases a write lock on the model.
touchLineAttribute(int, Object) Method
public void touchLineAttribute(int line,
Object
key)
Does not actually change a line's attributes, but does trigger a
change event to be sent to listeners, as if setLineAttribute
had been called. Useful when the key's value has been changed
within the same object.
Parameters
-
line
- the zero based index of the desired line
-
key
- an arbitrary key value, as set via a
setLineAttribute
call. May be null to indicate multiple keys have been touched.