<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html><head>
  <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
  <meta content="IBM" name="Author">
  <meta content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]" name="GENERATOR"><title>text infrastructure</title></head>

<body>
<p>Provides a framework for creating and manipulating text documents.</p>
<h2>Package Specification</h2>
<p><tt>IDocument</tt> is the major text 
  model abstraction. It provides content management, position management using 
  position categories, document partition management, and change notification. 
  In order to be notified about document changes, an object must implements <tt>IDocumentListener 
  </tt>and must be registered with the document. <tt>Position</tt> 
  updating in responds to a document change is performed by implementers of <tt>IDocumentPositionUpdater</tt>. 
  Partition updating in responds to a document change is performed by implements 
  of <tt>IDocumentPartitioner</tt>. In order 
  to be notified about document partition changes, objects must implement <tt>IDocumentParititoningListener</tt> 
  and must be registered with the document.</p>
<p>The package contains default implementations for document position updaters 
  and for documents. <tt>AbstractDocument</tt> 
  uses <tt>ITextStorage</tt> for storing 
  and managing its content and <tt>ILineTracker</tt> 
  to maintain a line structure of its content. As defaults a gap text implementation 
  of <tt>ITextStore</tt> is provided, together 
  with a line tracker understanding the three standard line delimiters (&quot;\r&quot;, 
  &quot;\n&quot;, &quot;\r\n&quot;) and a line tracker which can be freely configured 
  to consider any given set of strings as valid line delimiters. </p>


<!-- ===================================================================================================== -->
<!-- Below is the package documentation for org.eclipse.jface.text from the org.eclipse.jface.text plug-in -->
<!-- ===================================================================================================== -->

<p><tt>ITextViewer</tt> defines the concept of a document based, editiable viewer. 
  <tt>ITextViewer</tt> offers the following functionality: </p>
<ul>
<li>
present a document</li>

<li>
event consumption (<tt>IEventConsumer</tt>)</li>

<li>
viewport tracking and notification (<tt>IIViewportListener</tt>)</li>

<li>
change notification (<tt>ITextListener</tt>, <tt>ITextInputListener</tt>)</li>

<li>
listeners (combined view/model notification, input document)</li>

<li>
standard text editing functions plus text hover support</li>

<li>
visual region support</li>
</ul>

An <code>ITextViewer</code> supports the following plug-ins
<ul>
<li>
<tt>IUndoManager</tt> for the undo/redo mechanism</li>

<li>
<tt>IDoubleClickStrategy</tt> for partition type specific behavior on mouse
double click</li>

<li>
<tt>IAutoIndentStrategy</tt>&nbsp; for content type specific behavior on
inserting a line break</li>

<li>
<tt>ITextHover</tt> for content type specific behavior when overing over
text</li>
</ul>
The package provides default implementations for all these interfaces.
</body>

</body></html>