javax.swing.text
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Modifier and Type | Class and Description |
|---|---|
class |
AbstractDocument.AbstractElement
Implements the abstract part of an element. |
static interface |
AbstractDocument.AttributeContext
An interface that can be used to allow MutableAttributeSet implementations to use pluggable attribute compression techniques. |
class |
AbstractDocument.BranchElement
Implements a composite element that contains other elements. |
static interface |
AbstractDocument.Content
Interface to describe a sequence of character content that can be edited. |
class |
AbstractDocument.DefaultDocumentEvent
Stores document changes as the document is being modified. |
static class |
AbstractDocument.ElementEdit
An implementation of ElementChange that can be added to the document event. |
class |
AbstractDocument.LeafElement
Implements an element that directly represents content of some kind. |
| Modifier and Type | Field and Description |
|---|---|
protected static String |
BAD_LOCATION
Error message to indicate a bad location. |
static String |
BidiElementName
Name of elements used to hold a unidirectional run |
static String |
ContentElementName
Name of elements used to represent content |
static String |
ElementNameAttribute
Name of the attribute used to specify element names. |
protected EventListenerList |
listenerList
The event listener list for the document. |
static String |
ParagraphElementName
Name of elements used to represent paragraphs |
static String |
SectionElementName
Name of elements used to hold sections (lines/paragraphs). |
| Fields inherited from interface javax.swing.text.Document |
|---|
StreamDescriptionProperty, TitleProperty |
| Modifier | Constructor and Description |
|---|---|
protected |
AbstractDocument(AbstractDocument.Content data)
Constructs a new AbstractDocument, wrapped around some
specified content storage mechanism. |
protected |
AbstractDocument(AbstractDocument.Content data,
AbstractDocument.AttributeContext context)
Constructs a new AbstractDocument, wrapped around some
specified content storage mechanism. |
| Modifier and Type | Method and Description | |
|---|---|---|
void |
addDocumentListener(DocumentListener listener)
Adds a document listener for notification of any changes. |
|
void |
addUndoableEditListener(UndoableEditListener listener)
Adds an undo listener for notification of any changes. |
|
protected Element |
createBranchElement(Element parent,
AttributeSet a)
Creates a document branch element, that can contain other elements. |
|
protected Element |
createLeafElement(Element parent,
AttributeSet a,
int p0,
int p1)
Creates a document leaf element. |
|
Position |
createPosition(int offs)
Returns a position that will track change as the document is altered. |
|
void |
dump(PrintStream out)
Gives a diagnostic dump. |
|
protected void |
fireChangedUpdate(DocumentEvent e)
Notifies all listeners that have registered interest for notification on this event type. |
|
protected void |
fireInsertUpdate(DocumentEvent e)
Notifies all listeners that have registered interest for notification on this event type. |
|
protected void |
fireRemoveUpdate(DocumentEvent e)
Notifies all listeners that have registered interest for notification on this event type. |
|
protected void |
fireUndoableEditUpdate(UndoableEditEvent e)
Notifies all listeners that have registered interest for notification on this event type. |
|
int |
getAsynchronousLoadPriority()
Gets the asynchronous loading priority. |
|
protected AbstractDocument.AttributeContext |
getAttributeContext()
Fetches the context for managing attributes. |
|
Element |
getBidiRootElement()
Returns the root element of the bidirectional structure for this document. |
|
protected AbstractDocument.Content |
getContent()
Gets the content for the document. |
|
protected Thread |
getCurrentWriter()
Fetches the current writing thread if there is one. |
|
abstract Element |
getDefaultRootElement()
Returns the root element that views should be based upon unless some other mechanism for assigning views to element structures is provided. |
|
DocumentFilter |
getDocumentFilter()
Returns the DocumentFilter that is responsible for
filtering of insertion/removal. |
|
DocumentListener[] |
getDocumentListeners()
Returns an array of all the document listeners registered on this document. |
|
Dictionary<Object,Object> |
getDocumentProperties()
Supports managing a set of properties. |
|
Position |
getEndPosition()
Returns a position that represents the end of the document. |
|
int |
getLength()
Returns the length of the data. |
|
|
getListeners(Class<T> listenerType)
Returns an array of all the objects currently registered as FooListeners
upon this document. |
|
abstract Element |
getParagraphElement(int pos)
Get the paragraph element containing the given position. |
|
Object |
getProperty(Object key)
A convenience method for looking up a property value. |
|
Element[] |
getRootElements()
Gets all root elements defined. |
|
Position |
getStartPosition()
Returns a position that represents the start of the document. |
|
String |
getText(int offset,
int length)
Gets a sequence of text from the document. |
|
void |
getText(int offset,
int length,
Segment txt)
Fetches the text contained within the given portion of the document. |
|
UndoableEditListener[] |
getUndoableEditListeners()
Returns an array of all the undoable edit listeners registered on this document. |
|
void |
insertString(int offs,
String str,
AttributeSet a)
Inserts some content into the document. |
|
protected void |
insertUpdate(AbstractDocument.DefaultDocumentEvent chng,
AttributeSet attr)
Updates document structure as a result of text insertion. |
|
protected void |
postRemoveUpdate(AbstractDocument.DefaultDocumentEvent chng)
Updates any document structure as a result of text removal. |
|
void |
putProperty(Object key,
Object value)
A convenience method for storing up a property value. |
|
void |
readLock()
Acquires a lock to begin reading some state from the document. |
|
void |
readUnlock()
Does a read unlock. |
|
void |
remove(int offs,
int len)
Removes some content from the document. |
|
void |
removeDocumentListener(DocumentListener listener)
Removes a document listener. |
|
void |
removeUndoableEditListener(UndoableEditListener listener)
Removes an undo listener. |
|
protected void |
removeUpdate(AbstractDocument.DefaultDocumentEvent chng)
Updates any document structure as a result of text removal. |
|
void |
render(Runnable r)
This allows the model to be safely rendered in the presence of currency, if the model supports being updated asynchronously. |
|
void |
replace(int offset,
int length,
String text,
AttributeSet attrs)
Deletes the region of text from offset to
offset + length, and replaces it with text. |
|
void |
setAsynchronousLoadPriority(int p)
Sets the asynchronous loading priority. |
|
void |
setDocumentFilter(DocumentFilter filter)
Sets the DocumentFilter. |
|
void |
setDocumentProperties(Dictionary<Object,Object> x)
Replaces the document properties dictionary for this document. |
|
protected void |
writeLock()
Acquires a lock to begin mutating the document this lock protects. |
|
protected void |
writeUnlock()
Releases a write lock previously obtained via writeLock. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
listenerList
protected EventListenerList listenerList
- The event listener list for the document.
BAD_LOCATION
protected static final String BAD_LOCATION
- Error message to indicate a bad location.
- See Also:
- Constant Field Values
ParagraphElementName
public static final String ParagraphElementName
- Name of elements used to represent paragraphs
- See Also:
- Constant Field Values
ContentElementName
public static final String ContentElementName
- Name of elements used to represent content
- See Also:
- Constant Field Values
SectionElementName
public static final String SectionElementName
- Name of elements used to hold sections (lines/paragraphs).
- See Also:
- Constant Field Values
BidiElementName
public static final String BidiElementName
- Name of elements used to hold a unidirectional run
- See Also:
- Constant Field Values
ElementNameAttribute
public static final String ElementNameAttribute
- Name of the attribute used to specify element
names.
- See Also:
- Constant Field Values
| Constructor Detail |
|---|
AbstractDocument
protected AbstractDocument(AbstractDocument.Content data)
- Constructs a new
AbstractDocument, wrapped around some specified content storage mechanism. - Parameters:
data- the content
AbstractDocument
protected AbstractDocument(AbstractDocument.Content data, AbstractDocument.AttributeContext context)
- Constructs a new
AbstractDocument, wrapped around some specified content storage mechanism. - Parameters:
data- the contentcontext- the attribute context
| Method Detail |
|---|
getDocumentProperties
public Dictionary<Object,Object> getDocumentProperties()
- Supports managing a set of properties. Callers
can use the
documentPropertiesdictionary to annotate the document with document-wide properties. - Returns:
- a non-
nullDictionary - See Also:
setDocumentProperties(java.util.Dictionary)
setDocumentProperties
public void setDocumentProperties(Dictionary<Object,Object> x)
- Replaces the document properties dictionary for this document.
- Parameters:
x- the new dictionary- See Also:
getDocumentProperties()
fireInsertUpdate
protected void fireInsertUpdate(DocumentEvent e)
- Notifies all listeners that have registered interest for
notification on this event type. The event instance
is lazily created using the parameters passed into
the fire method.
- Parameters:
e- the event- See Also:
EventListenerList
fireChangedUpdate
protected void fireChangedUpdate(DocumentEvent e)
- Notifies all listeners that have registered interest for
notification on this event type. The event instance
is lazily created using the parameters passed into
the fire method.
- Parameters:
e- the event- See Also:
EventListenerList
fireRemoveUpdate
protected void fireRemoveUpdate(DocumentEvent e)
- Notifies all listeners that have registered interest for
notification on this event type. The event instance
is lazily created using the parameters passed into
the fire method.
- Parameters:
e- the event- See Also:
EventListenerList
fireUndoableEditUpdate
protected void fireUndoableEditUpdate(UndoableEditEvent e)
- Notifies all listeners that have registered interest for
notification on this event type. The event instance
is lazily created using the parameters passed into
the fire method.
- Parameters:
e- the event- See Also:
EventListenerList
getListeners
public <T extends EventListener> T[] getListeners(Class<T> listenerType)
- Returns an array of all the objects currently registered
as
FooListeners upon this document.FooListeners are registered using theaddFooListenermethod.You can specify the
listenerTypeargument with a class literal, such asFooListener.class. For example, you can query a documentdfor its document listeners with the following code:DocumentListener[] mls = (DocumentListener[])(d.getListeners(DocumentListener.class));
If no such listeners exist, this method returns an empty array. - Parameters:
listenerType- the type of listeners requested; this parameter should specify an interface that descends fromjava.util.EventListener- Returns:
- an array of all objects registered as
FooListeners on this component, or an empty array if no such listeners have been added - Throws:
ClassCastException- iflistenerTypedoesn't specify a class or interface that implementsjava.util.EventListener- Since:
- 1.3
- See Also:
getDocumentListeners(),getUndoableEditListeners()
getAsynchronousLoadPriority
public int getAsynchronousLoadPriority()
- Gets the asynchronous loading priority. If less than zero,
the document should not be loaded asynchronously.
- Returns:
- the asynchronous loading priority, or
-1if the document should not be loaded asynchronously
setAsynchronousLoadPriority
public void setAsynchronousLoadPriority(int p)
- Sets the asynchronous loading priority.
- Parameters:
p- the new asynchronous loading priority; a value less than zero indicates that the document should not be loaded asynchronously
setDocumentFilter
public void setDocumentFilter(DocumentFilter filter)
- Sets the
DocumentFilter. TheDocumentFilteris passedinsertandremoveto conditionally allow inserting/deleting of the text. Anullvalue indicates that no filtering will occur. - Parameters:
filter- theDocumentFilterused to constrain text- Since:
- 1.4
- See Also:
getDocumentFilter()
getDocumentFilter
public DocumentFilter getDocumentFilter()
- Returns the
DocumentFilterthat is responsible for filtering of insertion/removal. Anullreturn value implies no filtering is to occur. - Returns:
- the DocumentFilter
- Since:
- 1.4
- See Also:
setDocumentFilter(javax.swing.text.DocumentFilter)
render
public void render(Runnable r)
- This allows the model to be safely rendered in the presence
of currency, if the model supports being updated asynchronously.
The given runnable will be executed in a way that allows it
to safely read the model with no changes while the runnable
is being executed. The runnable itself may not
make any mutations.
This is implemented to aquire a read lock for the duration of the runnables execution. There may be multiple runnables executing at the same time, and all writers will be blocked while there are active rendering runnables. If the runnable throws an exception, its lock will be safely released. There is no protection against a runnable that never exits, which will effectively leave the document locked for it's lifetime.
If the given runnable attempts to make any mutations in this implementation, a deadlock will occur. There is no tracking of individual rendering threads to enable detecting this situation, but a subclass could incur the overhead of tracking them and throwing an error.
This method is thread safe, although most Swing methods are not. Please see How to Use Threads for more information.
- Parameters:
r- the renderer to execute
getLength
public int getLength()
- Returns the length of the data. This is the number of
characters of content that represents the users data.
- Returns:
- the length >= 0
- See Also:
Document.getLength()
addDocumentListener
public void addDocumentListener(DocumentListener listener)
- Adds a document listener for notification of any changes.
- Specified by:
addDocumentListenerin interfaceDocument
- Parameters:
listener- theDocumentListenerto add- See Also:
Document.addDocumentListener(javax.swing.event.DocumentListener)
removeDocumentListener
public void removeDocumentListener(DocumentListener listener)
- Removes a document listener.
- Specified by:
removeDocumentListenerin interfaceDocument
- Parameters:
listener- theDocumentListenerto remove- See Also:
Document.removeDocumentListener(javax.swing.event.DocumentListener)
getDocumentListeners
public DocumentListener[] getDocumentListeners()
- Returns an array of all the document listeners
registered on this document.
- Returns:
- all of this document's
DocumentListeners or an empty array if no document listeners are currently registered - Since:
- 1.4
- See Also:
addDocumentListener(javax.swing.event.DocumentListener),removeDocumentListener(javax.swing.event.DocumentListener)
addUndoableEditListener
public void addUndoableEditListener(UndoableEditListener listener)
- Adds an undo listener for notification of any changes.
Undo/Redo operations performed on the
UndoableEditwill cause the appropriate DocumentEvent to be fired to keep the view(s) in sync with the model. - Specified by:
addUndoableEditListenerin interfaceDocument
- Parameters:
listener- theUndoableEditListenerto add- See Also:
Document.addUndoableEditListener(javax.swing.event.UndoableEditListener)
removeUndoableEditListener
public void removeUndoableEditListener(UndoableEditListener listener)
- Removes an undo listener.
- Specified by:
removeUndoableEditListenerin interfaceDocument
- Parameters:
listener- theUndoableEditListenerto remove- See Also:
Document.removeDocumentListener(javax.swing.event.DocumentListener)
getUndoableEditListeners
public UndoableEditListener[] getUndoableEditListeners()
- Returns an array of all the undoable edit listeners
registered on this document.
- Returns:
- all of this document's
UndoableEditListeners or an empty array if no undoable edit listeners are currently registered - Since:
- 1.4
- See Also:
addUndoableEditListener(javax.swing.event.UndoableEditListener),removeUndoableEditListener(javax.swing.event.UndoableEditListener)
getProperty
public final Object getProperty(Object key)
- A convenience method for looking up a property value. It is
equivalent to:
getDocumentProperties().get(key);
- Specified by:
getPropertyin interfaceDocument
- Parameters:
key- the non-nullproperty key- Returns:
- the value of this property or
null - See Also:
getDocumentProperties()
putProperty
public final void putProperty(Object key, Object value)
- A convenience method for storing up a property value. It is
equivalent to:
getDocumentProperties().put(key, value);
Ifvalueisnullthis method will remove the property. - Specified by:
putPropertyin interfaceDocument
- Parameters:
key- the non-nullkeyvalue- the property value- See Also:
getDocumentProperties()
remove
public void remove(int offs,
int len)
throws BadLocationException
- Removes some content from the document.
Removing content causes a write lock to be held while the
actual changes are taking place. Observers are notified
of the change on the thread that called this method.
This method is thread safe, although most Swing methods are not. Please see How to Use Threads for more information.
- Parameters:
offs- the starting offset >= 0len- the number of characters to remove >= 0- Throws:
BadLocationException- the given remove position is not a valid position within the document- See Also:
Document.remove(int, int)
replace
public void replace(int offset,
int length,
String text,
AttributeSet attrs)
throws BadLocationException
- Deletes the region of text from
offsettooffset + length, and replaces it withtext. It is up to the implementation as to how this is implemented, some implementations may treat this as two distinct operations: a remove followed by an insert, others may treat the replace as one atomic operation. - Parameters:
offset- index of child elementlength- length of text to delete, may be 0 indicating don't delete anythingtext- text to insert,nullindicates no text to insertattrs- AttributeSet indicating attributes of inserted text,nullis legal, and typically treated as an empty attributeset, but exact interpretation is left to the subclass- Throws:
BadLocationException- the given position is not a valid position within the document- Since:
- 1.4
insertString
public void insertString(int offs,
String str,
AttributeSet a)
throws BadLocationException
- Inserts some content into the document.
Inserting content causes a write lock to be held while the
actual changes are taking place, followed by notification
to the observers on the thread that grabbed the write lock.
This method is thread safe, although most Swing methods are not. Please see How to Use Threads for more information.
- Specified by:
insertStringin interfaceDocument
- Parameters:
offs- the starting offset >= 0str- the string to insert; does nothing with null/empty stringsa- the attributes for the inserted content- Throws:
BadLocationException- the given insert position is not a valid position within the document- See Also:
Document.insertString(int, java.lang.String, javax.swing.text.AttributeSet)
getText
public String getText(int offset, int length) throws BadLocationException
- Gets a sequence of text from the document.
- Parameters:
offset- the starting offset >= 0length- the number of characters to retrieve >= 0- Returns:
- the text
- Throws:
BadLocationException- the range given includes a position that is not a valid position within the document- See Also:
Document.getText(int, int)
getText
public void getText(int offset,
int length,
Segment txt)
throws BadLocationException
- Fetches the text contained within the given portion
of the document.
If the partialReturn property on the txt parameter is false, the data returned in the Segment will be the entire length requested and may or may not be a copy depending upon how the data was stored. If the partialReturn property is true, only the amount of text that can be returned without creating a copy is returned. Using partial returns will give better performance for situations where large parts of the document are being scanned. The following is an example of using the partial return to access the entire document:
int nleft = doc.getDocumentLength(); Segment text = new Segment(); int offs = 0; text.setPartialReturn(true); while (nleft > 0) { doc.getText(offs, nleft, text); // do something with text nleft -= text.count; offs += text.count; } - Parameters:
offset- the starting offset >= 0length- the number of characters to retrieve >= 0txt- the Segment object to retrieve the text into- Throws:
BadLocationException- the range given includes a position that is not a valid position within the document
createPosition
public Position createPosition(int offs) throws BadLocationException
- Returns a position that will track change as the document
is altered.
This method is thread safe, although most Swing methods are not. Please see How to Use Threads for more information.
- Specified by:
createPositionin interfaceDocument
- Parameters:
offs- the position in the model >= 0- Returns:
- the position
- Throws:
BadLocationException- if the given position does not represent a valid location in the associated document- See Also:
Document.createPosition(int)
getStartPosition
public final Position getStartPosition()
- Returns a position that represents the start of the document. The
position returned can be counted on to track change and stay
located at the beginning of the document.
- Specified by:
getStartPositionin interfaceDocument
- Returns:
- the position
getEndPosition
public final Position getEndPosition()
- Returns a position that represents the end of the document. The
position returned can be counted on to track change and stay
located at the end of the document.
- Specified by:
getEndPositionin interfaceDocument
- Returns:
- the position
getRootElements
public Element[] getRootElements()
- Gets all root elements defined. Typically, there
will only be one so the default implementation
is to return the default root element.
- Specified by:
getRootElementsin interfaceDocument
- Returns:
- the root element
getDefaultRootElement
public abstract Element getDefaultRootElement()
- Returns the root element that views should be based upon
unless some other mechanism for assigning views to element
structures is provided.
- Specified by:
getDefaultRootElementin interfaceDocument
- Returns:
- the root element
- See Also:
Document.getDefaultRootElement()
getBidiRootElement
public Element getBidiRootElement()
- Returns the root element of the bidirectional structure for this
document. Its children represent character runs with a given
Unicode bidi level.
getParagraphElement
public abstract Element getParagraphElement(int pos)
- Get the paragraph element containing the given position. Sub-classes
must define for themselves what exactly constitutes a paragraph. They
should keep in mind however that a paragraph should at least be the
unit of text over which to run the Unicode bidirectional algorithm.
- Parameters:
pos- the starting offset >= 0- Returns:
- the element
getAttributeContext
protected final AbstractDocument.AttributeContext getAttributeContext()
- Fetches the context for managing attributes. This
method effectively establishes the strategy used
for compressing AttributeSet information.
- Returns:
- the context
insertUpdate
protected void insertUpdate(AbstractDocument.DefaultDocumentEvent chng, AttributeSet attr)
- Updates document structure as a result of text insertion. This
will happen within a write lock. If a subclass of
this class reimplements this method, it should delegate to the
superclass as well.
- Parameters:
chng- a description of the changeattr- the attributes for the change
removeUpdate
protected void removeUpdate(AbstractDocument.DefaultDocumentEvent chng)
- Updates any document structure as a result of text removal. This
method is called before the text is actually removed from the Content.
This will happen within a write lock. If a subclass
of this class reimplements this method, it should delegate to the
superclass as well.
- Parameters:
chng- a description of the change
postRemoveUpdate
protected void postRemoveUpdate(AbstractDocument.DefaultDocumentEvent chng)
- Updates any document structure as a result of text removal. This
method is called after the text has been removed from the Content.
This will happen within a write lock. If a subclass
of this class reimplements this method, it should delegate to the
superclass as well.
- Parameters:
chng- a description of the change
dump
public void dump(PrintStream out)
- Gives a diagnostic dump.
- Parameters:
out- the output stream
getContent
protected final AbstractDocument.Content getContent()
- Gets the content for the document.
- Returns:
- the content
createLeafElement
protected Element createLeafElement(Element parent, AttributeSet a, int p0, int p1)
- Creates a document leaf element.
Hook through which elements are created to represent the
document structure. Because this implementation keeps
structure and content separate, elements grow automatically
when content is extended so splits of existing elements
follow. The document itself gets to decide how to generate
elements to give flexibility in the type of elements used.
- Parameters:
parent- the parent elementa- the attributes for the elementp0- the beginning of the range >= 0p1- the end of the range >= p0- Returns:
- the new element
createBranchElement
protected Element createBranchElement(Element parent, AttributeSet a)
- Creates a document branch element, that can contain other elements.
- Parameters:
parent- the parent elementa- the attributes- Returns:
- the element
getCurrentWriter
protected final Thread getCurrentWriter()
- Fetches the current writing thread if there is one.
This can be used to distinguish whether a method is
being called as part of an existing modification or
if a lock needs to be acquired and a new transaction
started.
- Returns:
- the thread actively modifying the document
or
nullif there are no modifications in progress
writeLock
protected final void writeLock()
- Acquires a lock to begin mutating the document this lock
protects. There can be no writing, notification of changes, or
reading going on in order to gain the lock. Additionally a thread is
allowed to gain more than one
writeLock, as long as it doesn't attempt to gain additionalwriteLocks from within document notification. Attempting to gain awriteLockfrom within a DocumentListener notification will result in anIllegalStateException. The ability to obtain more than onewriteLockper thread allows subclasses to gain a writeLock, perform a number of operations, then release the lock.Calls to
writeLockmust be balanced with calls towriteUnlock, else theDocumentwill be left in a locked state so that no reading or writing can be done. - Throws:
IllegalStateException- thrown on illegal lock attempt. If the document is implemented properly, this can only happen if a document listener attempts to mutate the document. This situation violates the bean event model where order of delivery is not guaranteed and all listeners should be notified before further mutations are allowed.
writeUnlock
protected final void writeUnlock()
- Releases a write lock previously obtained via
writeLock. After decrementing the lock count if there are no oustanding locks this will allow a new writer, or readers. - See Also:
writeLock()
readLock
public final void readLock()
- Acquires a lock to begin reading some state from the
document. There can be multiple readers at the same time.
Writing blocks the readers until notification of the change
to the listeners has been completed. This method should
be used very carefully to avoid unintended compromise
of the document. It should always be balanced with a
readUnlock. - See Also:
readUnlock()
readUnlock
public final void readUnlock()
- Does a read unlock. This signals that one
of the readers is done. If there are no more readers
then writing can begin again. This should be balanced
with a readLock, and should occur in a finally statement
so that the balance is guaranteed. The following is an
example.
readLock(); try { // do something } finally { readUnlock(); } - See Also:
readLock()
|
Java™ Platform Standard Ed. 7 DRAFT ea-b59 |
|||||||||
| PREV CLASS NEXT CLASS | NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
javax.swing.text.AbstractDocument