javax.swing.text
Class AbstractDocument

java.lang.Object sample code for java.lang.Object definition code for java.lang.Object 
  extended by javax.swing.text.AbstractDocument
All Implemented Interfaces:
Serializable sample code for java.io.Serializable definition code for java.io.Serializable , Document sample code for javax.swing.text.Document definition code for javax.swing.text.Document
Direct Known Subclasses:
DefaultStyledDocument sample code for javax.swing.text.DefaultStyledDocument definition code for javax.swing.text.DefaultStyledDocument , PlainDocument sample code for javax.swing.text.PlainDocument definition code for javax.swing.text.PlainDocument

public abstract class AbstractDocument
extends Object sample code for java.lang.Object definition code for java.lang.Object
implements Document sample code for javax.swing.text.Document definition code for javax.swing.text.Document , Serializable sample code for java.io.Serializable definition code for java.io.Serializable

An implementation of the document interface to serve as a basis for implementing various kinds of documents. At this level there is very little policy, so there is a corresponding increase in difficulty of use.

This class implements a locking mechanism for the document. It allows multiple readers or one writer, and writers must wait until all observers of the document have been notified of a previous change before beginning another mutation to the document. The read lock is acquired and released using the render method. A write lock is aquired by the methods that mutate the document, and are held for the duration of the method call. Notification is done on the thread that produced the mutation, and the thread has full read access to the document for the duration of the notification, but other readers are kept out until the notification has finished. The notification is a beans event notification which does not allow any further mutations until all listeners have been notified.

Any models subclassed from this class and used in conjunction with a text component that has a look and feel implementation that is derived from BasicTextUI may be safely updated asynchronously, because all access to the View hierarchy is serialized by BasicTextUI if the document is of type AbstractDocument. The locking assumes that an independant thread will access the View hierarchy only from the DocumentListener methods, and that there will be only one event thread active at a time.

If concurrency support is desired, there are the following additional implications. The code path for any DocumentListener implementation and any UndoListener implementation must be threadsafe, and not access the component lock if trying to be safe from deadlocks. The repaint and revalidate methods on JComponent are safe.

AbstractDocument models an implied break at the end of the document. Among other things this allows you to position the caret after the last character. As a result of this, getLength returns one less than the length of the Content. If you create your own Content, be sure and initialize it to have an additional character. Refer to StringContent and GapContent for examples of this. Another implication of this is that Elements that model the implied end character will have an endOffset == (getLength() + 1). For example, in DefaultStyledDocument getParagraphElement(getLength()).getEndOffset() == getLength() + 1 .

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeansTM has been added to the java.beans package. Please see XMLEncoder sample code for java.beans.XMLEncoder definition code for java.beans.XMLEncoder .

See Also:
Serialized Form

Nested Class Summary
 class AbstractDocument.AbstractElement sample code for javax.swing.text.AbstractDocument.AbstractElement definition code for javax.swing.text.AbstractDocument.AbstractElement
          Implements the abstract part of an element.
static interface AbstractDocument.AttributeContext sample code for javax.swing.text.AbstractDocument.AttributeContext definition code for javax.swing.text.AbstractDocument.AttributeContext
          An interface that can be used to allow MutableAttributeSet implementations to use pluggable attribute compression techniques.
 class AbstractDocument.BranchElement sample code for javax.swing.text.AbstractDocument.BranchElement definition code for javax.swing.text.AbstractDocument.BranchElement
          Implements a composite element that contains other elements.
static interface AbstractDocument.Content sample code for javax.swing.text.AbstractDocument.Content definition code for javax.swing.text.AbstractDocument.Content
          Interface to describe a sequence of character content that can be edited.
 class AbstractDocument.DefaultDocumentEvent sample code for javax.swing.text.AbstractDocument.DefaultDocumentEvent definition code for javax.swing.text.AbstractDocument.DefaultDocumentEvent
          Stores document changes as the document is being modified.
static class AbstractDocument.ElementEdit sample code for javax.swing.text.AbstractDocument.ElementEdit definition code for javax.swing.text.AbstractDocument.ElementEdit
          An implementation of ElementChange that can be added to the document event.
 class AbstractDocument.LeafElement sample code for javax.swing.text.AbstractDocument.LeafElement definition code for javax.swing.text.AbstractDocument.LeafElement
          Implements an element that directly represents content of some kind.
 
Field Summary
protected static String sample code for java.lang.String definition code for java.lang.String BAD_LOCATION sample code for javax.swing.text.AbstractDocument.BAD_LOCATION definition code for javax.swing.text.AbstractDocument.BAD_LOCATION
          Error message to indicate a bad location.
static String sample code for java.lang.String definition code for java.lang.String BidiElementName sample code for javax.swing.text.AbstractDocument.BidiElementName definition code for javax.swing.text.AbstractDocument.BidiElementName
          Name of elements used to hold a unidirectional run
static String sample code for java.lang.String definition code for java.lang.String ContentElementName sample code for javax.swing.text.AbstractDocument.ContentElementName definition code for javax.swing.text.AbstractDocument.ContentElementName
          Name of elements used to represent content
static String sample code for java.lang.String definition code for java.lang.String ElementNameAttribute sample code for javax.swing.text.AbstractDocument.ElementNameAttribute definition code for javax.swing.text.AbstractDocument.ElementNameAttribute
          Name of the attribute used to specify element names.
protected  EventListenerList sample code for javax.swing.event.EventListenerList definition code for javax.swing.event.EventListenerList listenerList sample code for javax.swing.text.AbstractDocument.listenerList definition code for javax.swing.text.AbstractDocument.listenerList
          The event listener list for the document.
static String sample code for java.lang.String definition code for java.lang.String ParagraphElementName sample code for javax.swing.text.AbstractDocument.ParagraphElementName definition code for javax.swing.text.AbstractDocument.ParagraphElementName
          Name of elements used to represent paragraphs
static String sample code for java.lang.String definition code for java.lang.String SectionElementName sample code for javax.swing.text.AbstractDocument.SectionElementName definition code for javax.swing.text.AbstractDocument.SectionElementName
          Name of elements used to hold sections (lines/paragraphs).
 
Fields inherited from interface javax.swing.text.Document sample code for javax.swing.text.Document definition code for javax.swing.text.Document
StreamDescriptionProperty sample code for javax.swing.text.Document.StreamDescriptionProperty definition code for javax.swing.text.Document.StreamDescriptionProperty , TitleProperty sample code for javax.swing.text.Document.TitleProperty definition code for javax.swing.text.Document.TitleProperty
 
Constructor Summary
protected AbstractDocument sample code for javax.swing.text.AbstractDocument.AbstractDocument(javax.swing.text.AbstractDocument.Content) definition code for javax.swing.text.AbstractDocument.AbstractDocument(javax.swing.text.AbstractDocument.Content) (AbstractDocument.Content sample code for javax.swing.text.AbstractDocument.Content definition code for javax.swing.text.AbstractDocument.Content  data)
          Constructs a new AbstractDocument, wrapped around some specified content storage mechanism.
protected AbstractDocument sample code for javax.swing.text.AbstractDocument.AbstractDocument(javax.swing.text.AbstractDocument.Content, javax.swing.text.AbstractDocument.AttributeContext) definition code for javax.swing.text.AbstractDocument.AbstractDocument(javax.swing.text.AbstractDocument.Content, javax.swing.text.AbstractDocument.AttributeContext) (AbstractDocument.Content sample code for javax.swing.text.AbstractDocument.Content definition code for javax.swing.text.AbstractDocument.Content  data, AbstractDocument.AttributeContext sample code for javax.swing.text.AbstractDocument.AttributeContext definition code for javax.swing.text.AbstractDocument.AttributeContext  context)
          Constructs a new AbstractDocument, wrapped around some specified content storage mechanism.
 
Method Summary
 void addDocumentListener sample code for javax.swing.text.AbstractDocument.addDocumentListener(javax.swing.event.DocumentListener) definition code for javax.swing.text.AbstractDocument.addDocumentListener(javax.swing.event.DocumentListener) (DocumentListener sample code for javax.swing.event.DocumentListener definition code for javax.swing.event.DocumentListener  listener)
          Adds a document listener for notification of any changes.
 void addUndoableEditListener sample code for javax.swing.text.AbstractDocument.addUndoableEditListener(javax.swing.event.UndoableEditListener) definition code for javax.swing.text.AbstractDocument.addUndoableEditListener(javax.swing.event.UndoableEditListener) (UndoableEditListener sample code for javax.swing.event.UndoableEditListener definition code for javax.swing.event.UndoableEditListener  listener)
          Adds an undo listener for notification of any changes.
protected  Element sample code for javax.swing.text.Element definition code for javax.swing.text.Element createBranchElement sample code for javax.swing.text.AbstractDocument.createBranchElement(javax.swing.text.Element, javax.swing.text.AttributeSet) definition code for javax.swing.text.AbstractDocument.createBranchElement(javax.swing.text.Element, javax.swing.text.AttributeSet) (Element sample code for javax.swing.text.Element definition code for javax.swing.text.Element  parent, AttributeSet sample code for javax.swing.text.AttributeSet definition code for javax.swing.text.AttributeSet  a)
          Creates a document branch element, that can contain other elements.
protected  Element sample code for javax.swing.text.Element definition code for javax.swing.text.Element createLeafElement sample code for javax.swing.text.AbstractDocument.createLeafElement(javax.swing.text.Element, javax.swing.text.AttributeSet, int, int) definition code for javax.swing.text.AbstractDocument.createLeafElement(javax.swing.text.Element, javax.swing.text.AttributeSet, int, int) (Element sample code for javax.swing.text.Element definition code for javax.swing.text.Element  parent, AttributeSet sample code for javax.swing.text.AttributeSet definition code for javax.swing.text.AttributeSet  a, int p0, int p1)
          Creates a document leaf element.
 Position sample code for javax.swing.text.Position definition code for javax.swing.text.Position createPosition sample code for javax.swing.text.AbstractDocument.createPosition(int) definition code for javax.swing.text.AbstractDocument.createPosition(int) (int offs)
          Returns a position that will track change as the document is altered.
 void dump sample code for javax.swing.text.AbstractDocument.dump(java.io.PrintStream) definition code for javax.swing.text.AbstractDocument.dump(java.io.PrintStream) (PrintStream sample code for java.io.PrintStream definition code for java.io.PrintStream  out)
          Gives a diagnostic dump.
protected  void fireChangedUpdate sample code for javax.swing.text.AbstractDocument.fireChangedUpdate(javax.swing.event.DocumentEvent) definition code for javax.swing.text.AbstractDocument.fireChangedUpdate(javax.swing.event.DocumentEvent) (DocumentEvent sample code for javax.swing.event.DocumentEvent definition code for javax.swing.event.DocumentEvent  e)
          Notifies all listeners that have registered interest for notification on this event type.
protected  void fireInsertUpdate sample code for javax.swing.text.AbstractDocument.fireInsertUpdate(javax.swing.event.DocumentEvent) definition code for javax.swing.text.AbstractDocument.fireInsertUpdate(javax.swing.event.DocumentEvent) (DocumentEvent sample code for javax.swing.event.DocumentEvent definition code for javax.swing.event.DocumentEvent  e)
          Notifies all listeners that have registered interest for notification on this event type.
protected  void fireRemoveUpdate sample code for javax.swing.text.AbstractDocument.fireRemoveUpdate(javax.swing.event.DocumentEvent) definition code for javax.swing.text.AbstractDocument.fireRemoveUpdate(javax.swing.event.DocumentEvent) (DocumentEvent sample code for javax.swing.event.DocumentEvent definition code for javax.swing.event.DocumentEvent  e)
          Notifies all listeners that have registered interest for notification on this event type.
protected  void fireUndoableEditUpdate sample code for javax.swing.text.AbstractDocument.fireUndoableEditUpdate(javax.swing.event.UndoableEditEvent) definition code for javax.swing.text.AbstractDocument.fireUndoableEditUpdate(javax.swing.event.UndoableEditEvent) (UndoableEditEvent sample code for javax.swing.event.UndoableEditEvent definition code for javax.swing.event.UndoableEditEvent  e)
          Notifies all listeners that have registered interest for notification on this event type.
 int getAsynchronousLoadPriority sample code for javax.swing.text.AbstractDocument.getAsynchronousLoadPriority() definition code for javax.swing.text.AbstractDocument.getAsynchronousLoadPriority() ()
          Gets the asynchronous loading priority.
protected  AbstractDocument.AttributeContext sample code for javax.swing.text.AbstractDocument.AttributeContext definition code for javax.swing.text.AbstractDocument.AttributeContext getAttributeContext sample code for javax.swing.text.AbstractDocument.getAttributeContext() definition code for javax.swing.text.AbstractDocument.getAttributeContext() ()
          Fetches the context for managing attributes.
 Element sample code for javax.swing.text.Element definition code for javax.swing.text.Element getBidiRootElement sample code for javax.swing.text.AbstractDocument.getBidiRootElement() definition code for javax.swing.text.AbstractDocument.getBidiRootElement() ()
          Returns the root element of the bidirectional structure for this document.
protected  AbstractDocument.Content sample code for javax.swing.text.AbstractDocument.Content definition code for javax.swing.text.AbstractDocument.Content getContent sample code for javax.swing.text.AbstractDocument.getContent() definition code for javax.swing.text.AbstractDocument.getContent() ()
          Gets the content for the document.
protected  Thread sample code for java.lang.Thread definition code for java.lang.Thread getCurrentWriter sample code for javax.swing.text.AbstractDocument.getCurrentWriter() definition code for javax.swing.text.AbstractDocument.getCurrentWriter() ()
          Fetches the current writing thread if there is one.
abstract  Element sample code for javax.swing.text.Element definition code for javax.swing.text.Element getDefaultRootElement sample code for javax.swing.text.AbstractDocument.getDefaultRootElement() definition code for javax.swing.text.AbstractDocument.getDefaultRootElement() ()
          Returns the root element that views should be based upon unless some other mechanism for assigning views to element structures is provided.
 DocumentFilter sample code for javax.swing.text.DocumentFilter definition code for javax.swing.text.DocumentFilter getDocumentFilter sample code for javax.swing.text.AbstractDocument.getDocumentFilter() definition code for javax.swing.text.AbstractDocument.getDocumentFilter() ()
          Returns the DocumentFilter that is responsible for filtering of insertion/removal.
 DocumentListener sample code for javax.swing.event.DocumentListener definition code for javax.swing.event.DocumentListener [] getDocumentListeners sample code for javax.swing.text.AbstractDocument.getDocumentListeners() definition code for javax.swing.text.AbstractDocument.getDocumentListeners() ()
          Returns an array of all the document listeners registered on this document.
 Dictionary sample code for java.util.Dictionary definition code for java.util.Dictionary <Object sample code for java.lang.Object definition code for java.lang.Object ,Object sample code for java.lang.Object definition code for java.lang.Object > getDocumentProperties sample code for javax.swing.text.AbstractDocument.getDocumentProperties() definition code for javax.swing.text.AbstractDocument.getDocumentProperties() ()
          Supports managing a set of properties.
 Position sample code for javax.swing.text.Position definition code for javax.swing.text.Position getEndPosition sample code for javax.swing.text.AbstractDocument.getEndPosition() definition code for javax.swing.text.AbstractDocument.getEndPosition() ()
          Returns a position that represents the end of the document.
 int getLength sample code for javax.swing.text.AbstractDocument.getLength() definition code for javax.swing.text.AbstractDocument.getLength() ()
          Returns the length of the data.
<T extends EventListener sample code for java.util.EventListener definition code for java.util.EventListener >
T[]
getListeners sample code for javax.swing.text.AbstractDocument.getListeners(java.lang.Class) definition code for javax.swing.text.AbstractDocument.getListeners(java.lang.Class) (Class sample code for java.lang.Class definition code for java.lang.Class <T> listenerType)
          Returns an array of all the objects currently registered as FooListeners upon this document.
abstract  Element sample code for javax.swing.text.Element definition code for javax.swing.text.Element getParagraphElement sample code for javax.swing.text.AbstractDocument.getParagraphElement(int) definition code for javax.swing.text.AbstractDocument.getParagraphElement(int) (int pos)
          Get the paragraph element containing the given position.
 Object sample code for java.lang.Object definition code for java.lang.Object getProperty sample code for javax.swing.text.AbstractDocument.getProperty(java.lang.Object) definition code for javax.swing.text.AbstractDocument.getProperty(java.lang.Object) (Object sample code for java.lang.Object definition code for java.lang.Object  key)
          A convenience method for looking up a property value.
 Element sample code for javax.swing.text.Element definition code for javax.swing.text.Element [] getRootElements sample code for javax.swing.text.AbstractDocument.getRootElements() definition code for javax.swing.text.AbstractDocument.getRootElements() ()
          Gets all root elements defined.
 Position sample code for javax.swing.text.Position definition code for javax.swing.text.Position getStartPosition sample code for javax.swing.text.AbstractDocument.getStartPosition() definition code for javax.swing.text.AbstractDocument.getStartPosition() ()
          Returns a position that represents the start of the document.
 String sample code for java.lang.String definition code for java.lang.String getText sample code for javax.swing.text.AbstractDocument.getText(int, int) definition code for javax.swing.text.AbstractDocument.getText(int, int) (int offset, int length)
          Gets a sequence of text from the document.
 void getText sample code for javax.swing.text.AbstractDocument.getText(int, int, javax.swing.text.Segment) definition code for javax.swing.text.AbstractDocument.getText(int, int, javax.swing.text.Segment) (int offset, int length, Segment sample code for javax.swing.text.Segment definition code for javax.swing.text.Segment  txt)
          Fetches the text contained within the given portion of the document.
 UndoableEditListener sample code for javax.swing.event.UndoableEditListener definition code for javax.swing.event.UndoableEditListener [] getUndoableEditListeners sample code for javax.swing.text.AbstractDocument.getUndoableEditListeners() definition code for javax.swing.text.AbstractDocument.getUndoableEditListeners() ()
          Returns an array of all the undoable edit listeners registered on this document.
 void insertString sample code for javax.swing.text.AbstractDocument.insertString(int, java.lang.String, javax.swing.text.AttributeSet) definition code for javax.swing.text.AbstractDocument.insertString(int, java.lang.String, javax.swing.text.AttributeSet) (int offs, String sample code for java.lang.String definition code for java.lang.String  str, AttributeSet sample code for javax.swing.text.AttributeSet definition code for javax.swing.text.AttributeSet  a)
          Inserts some content into the document.
protected  void insertUpdate sample code for javax.swing.text.AbstractDocument.insertUpdate(javax.swing.text.AbstractDocument.DefaultDocumentEvent, javax.swing.text.AttributeSet) definition code for javax.swing.text.AbstractDocument.insertUpdate(javax.swing.text.AbstractDocument.DefaultDocumentEvent, javax.swing.text.AttributeSet) (AbstractDocument.DefaultDocumentEvent sample code for javax.swing.text.AbstractDocument.DefaultDocumentEvent definition code for javax.swing.text.AbstractDocument.DefaultDocumentEvent  chng, AttributeSet sample code for javax.swing.text.AttributeSet definition code for javax.swing.text.AttributeSet  attr)
          Updates document structure as a result of text insertion.
protected  void postRemoveUpdate sample code for javax.swing.text.AbstractDocument.postRemoveUpdate(javax.swing.text.AbstractDocument.DefaultDocumentEvent) definition code for javax.swing.text.AbstractDocument.postRemoveUpdate(javax.swing.text.AbstractDocument.DefaultDocumentEvent) (AbstractDocument.DefaultDocumentEvent sample code for javax.swing.text.AbstractDocument.DefaultDocumentEvent definition code for javax.swing.text.AbstractDocument.DefaultDocumentEvent  chng)
          Updates any document structure as a result of text removal.
 void putProperty sample code for javax.swing.text.AbstractDocument.putProperty(java.lang.Object, java.lang.Object) definition code for javax.swing.text.AbstractDocument.putProperty(java.lang.Object, java.lang.Object) (Object sample code for java.lang.Object definition code for java.lang.Object  key, Object sample code for java.lang.Object definition code for java.lang.Object  value)
          A convenience method for storing up a property value.
 void readLock sample code for javax.swing.text.AbstractDocument.readLock() definition code for javax.swing.text.AbstractDocument.readLock() ()
          Acquires a lock to begin reading some state from the document.
 void readUnlock sample code for javax.swing.text.AbstractDocument.readUnlock() definition code for javax.swing.text.AbstractDocument.readUnlock() ()
          Does a read unlock.
 void remove sample code for javax.swing.text.AbstractDocument.remove(int, int) definition code for javax.swing.text.AbstractDocument.remove(int, int) (int offs, int len)
          Removes some content from the document.
 void removeDocumentListener sample code for javax.swing.text.AbstractDocument.removeDocumentListener(javax.swing.event.DocumentListener) definition code for javax.swing.text.AbstractDocument.removeDocumentListener(javax.swing.event.DocumentListener) (DocumentListener sample code for javax.swing.event.DocumentListener definition code for javax.swing.event.DocumentListener  listener)
          Removes a document listener.
 void removeUndoableEditListener sample code for javax.swing.text.AbstractDocument.removeUndoableEditListener(javax.swing.event.UndoableEditListener) definition code for javax.swing.text.AbstractDocument.removeUndoableEditListener(javax.swing.event.UndoableEditListener) (UndoableEditListener sample code for javax.swing.event.UndoableEditListener definition code for javax.swing.event.UndoableEditListener  listener)
          Removes an undo listener.
protected  void removeUpdate sample code for javax.swing.text.AbstractDocument.removeUpdate(javax.swing.text.AbstractDocument.DefaultDocumentEvent) definition code for javax.swing.text.AbstractDocument.removeUpdate(javax.swing.text.AbstractDocument.DefaultDocumentEvent) (AbstractDocument.DefaultDocumentEvent sample code for javax.swing.text.AbstractDocument.DefaultDocumentEvent definition code for javax.swing.text.AbstractDocument.DefaultDocumentEvent  chng)
          Updates any document structure as a result of text removal.
 void render sample code for javax.swing.text.AbstractDocument.render(java.lang.Runnable) definition code for javax.swing.text.AbstractDocument.render(java.lang.Runnable) (Runnable sample code for java.lang.Runnable definition code for java.lang.Runnable  r)
          This allows the model to be safely rendered in the presence of currency, if the model supports being updated asynchronously.
 void replace sample code for javax.swing.text.AbstractDocument.replace(int, int, java.lang.String, javax.swing.text.AttributeSet) definition code for javax.swing.text.AbstractDocument.replace(int, int, java.lang.String, javax.swing.text.AttributeSet) (int offset, int length, String sample code for java.lang.String definition code for java.lang.String  text, AttributeSet sample code for javax.swing.text.AttributeSet definition code for javax.swing.text.AttributeSet  attrs)
          Deletes the region of text from offset to offset + length, and replaces it with text.
 void setAsynchronousLoadPriority sample code for javax.swing.text.AbstractDocument.setAsynchronousLoadPriority(int) definition code for javax.swing.text.AbstractDocument.setAsynchronousLoadPriority(int) (int p)
          Sets the asynchronous loading priority.
 void setDocumentFilter sample code for javax.swing.text.AbstractDocument.setDocumentFilter(javax.swing.text.DocumentFilter) definition code for javax.swing.text.AbstractDocument.setDocumentFilter(javax.swing.text.DocumentFilter) (DocumentFilter sample code for javax.swing.text.DocumentFilter definition code for javax.swing.text.DocumentFilter  filter)
          Sets the DocumentFilter.
 void setDocumentProperties sample code for javax.swing.text.AbstractDocument.setDocumentProperties(java.util.Dictionary) definition code for javax.swing.text.AbstractDocument.setDocumentProperties(java.util.Dictionary) (Dictionary sample code for java.util.Dictionary definition code for java.util.Dictionary <Object sample code for java.lang.Object definition code for java.lang.Object ,Object sample code for java.lang.Object definition code for java.lang.Object > x)
          Replaces the document properties dictionary for this document.
protected  void writeLock sample code for javax.swing.text.AbstractDocument.writeLock() definition code for javax.swing.text.AbstractDocument.writeLock() ()
          Acquires a lock to begin mutating the document this lock protects.
protected  void writeUnlock sample code for javax.swing.text.AbstractDocument.writeUnlock() definition code for javax.swing.text.AbstractDocument.writeUnlock() ()
          Releases a write lock previously obtained via writeLock.
 
Methods inherited from class java.lang.Object