org.eclipse.jface.text.projection

## Class ProjectionDocumentManager

- java.lang.Object
- - org.eclipse.jface.text.projection.ProjectionDocumentManager

All Implemented Interfaces:
  IDocumentListener, ISlaveDocumentManager, ISlaveDocumentManagerExtension

Direct Known Subclasses:
  ChildDocumentManager

    public class ProjectionDocumentManager
    extends Object
    implements IDocumentListener, ISlaveDocumentManager, ISlaveDocumentManagerExtension

A `ProjectionDocumentManager` is one particular implementation of `ISlaveDocumentManager`. This manager creates so called projection documents (see `ProjectionDocument`as slave documents for given master documents.

A projection document represents a particular projection of the master document and is accordingly adapted to changes of the master document. Vice versa, the master document is accordingly adapted to changes of its slave documents. The manager does not maintain any particular management structure but utilizes mechanisms given by `IDocument` such as position categories and position updaters.

Clients can instantiate this class. This class is not intended to be subclassed.

Since:
  3.0
Restriction:
  This class is not intended to be subclassed by clients.

### Constructor Summary

Constructors
Constructor and Description
`ProjectionDocumentManager()`

### Method Summary

All Methods Instance Methods Concrete Methods
`IDocumentInformationMapping` `createMasterSlaveMapping(IDocument slave)` Creates a new document information mapping between the given slave document and its master document.
`protected ProjectionDocument` `createProjectionDocument(IDocument master)` Factory method for projection documents.
`IDocument` `createSlaveDocument(IDocument master)` Creates a new slave document for the given master document.
`void` `documentAboutToBeChanged(DocumentEvent event)` The manipulation described by the document event will be performed.
`void` `documentChanged(DocumentEvent event)` The manipulation described by the document event has been performed.
`protected void` `fireDocumentEvent(boolean about, DocumentEvent masterEvent)` Informs all projection documents of the master document that issued the given document event.
`void` `freeSlaveDocument(IDocument slave)` Frees the given slave document.
`IDocument` `getMasterDocument(IDocument slave)` Returns the master document of the given slave document or `null` if the given document is unknown to this slave document manager.
`IDocument[]` `getSlaveDocuments(IDocument master)` Returns the list of slave documents for the given master document or `null` if there are no such slave document.
`boolean` `isSlaveDocument(IDocument document)` Returns whether the given document is a slave document known to this slave document manager.
`void` `setAutoExpandMode(IDocument slave, boolean autoExpanding)` Sets the given slave document's auto expand mode.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### ProjectionDocumentManager

    public ProjectionDocumentManager()

### Method Detail

#### fireDocumentEvent

    protected void fireDocumentEvent(boolean about,
                                     DocumentEvent masterEvent)

Informs all projection documents of the master document that issued the given document event.

Parameters:
  `about` - indicates whether the change is about to happen or happened already
  `masterEvent` - the document event which will be processed to inform the projection documents

#### documentChanged

    public void documentChanged(DocumentEvent event)

Description copied from interface: `IDocumentListener`
The manipulation described by the document event has been performed.

Specified by:
  `documentChanged` in interface `IDocumentListener`
Parameters:
  `event` - the document event describing the document change

#### documentAboutToBeChanged

    public void documentAboutToBeChanged(DocumentEvent event)

Description copied from interface: `IDocumentListener`
The manipulation described by the document event will be performed.

Specified by:
  `documentAboutToBeChanged` in interface `IDocumentListener`
Parameters:
  `event` - the document event describing the document change

#### createMasterSlaveMapping

    public IDocumentInformationMapping createMasterSlaveMapping(IDocument slave)

Description copied from interface: `ISlaveDocumentManager`
Creates a new document information mapping between the given slave document and its master document. Returns `null` if the given document is unknown to this slave document manager.

Specified by:
  `createMasterSlaveMapping` in interface `ISlaveDocumentManager`
Parameters:
  `slave` - the slave document
Returns:
  a document information mapping between the slave document and its master document or `null`

#### createSlaveDocument

    public IDocument createSlaveDocument(IDocument master)

Description copied from interface: `ISlaveDocumentManager`
Creates a new slave document for the given master document. The slave document is causally connected to its master document until `freeSlaveDocument` is called. The connection between the newly created slave document and the master document is managed by this slave document manager.

Specified by:
  `createSlaveDocument` in interface `ISlaveDocumentManager`
Parameters:
  `master` - the master document
Returns:
  the newly created slave document
See Also:
  `ISlaveDocumentManager.freeSlaveDocument(IDocument)`

#### createProjectionDocument

    protected ProjectionDocument createProjectionDocument(IDocument master)

Factory method for projection documents.

Parameters:
  `master` - the master document
Returns:
  the newly created projection document

#### freeSlaveDocument

    public void freeSlaveDocument(IDocument slave)

Description copied from interface: `ISlaveDocumentManager`
Frees the given slave document. If the given document is not a slave document known to this slave document manager, this call does not have any effect. A slave document is known to this slave document manager if it has been created by this manager using `createSlaveDocument`.

Specified by:
  `freeSlaveDocument` in interface `ISlaveDocumentManager`
Parameters:
  `slave` - the slave document to be freed
See Also:
  `ISlaveDocumentManager.createSlaveDocument(IDocument)`

#### getMasterDocument

    public IDocument getMasterDocument(IDocument slave)

Description copied from interface: `ISlaveDocumentManager`
Returns the master document of the given slave document or `null` if the given document is unknown to this slave document manager.

Specified by:
  `getMasterDocument` in interface `ISlaveDocumentManager`
Parameters:
  `slave` - the slave document
Returns:
  the master document of the given slave document or `null`

#### isSlaveDocument

    public boolean isSlaveDocument(IDocument document)

Description copied from interface: `ISlaveDocumentManager`
Returns whether the given document is a slave document known to this slave document manager. A slave document is known to this slave document manager, if the document has been created by this manager.

Specified by:
  `isSlaveDocument` in interface `ISlaveDocumentManager`
Parameters:
  `document` - the document to be checked whether it is a slave document known to this manager
Returns:
  `true` if the document is a slave document, `false` otherwise

#### setAutoExpandMode

    public void setAutoExpandMode(IDocument slave,
                                  boolean autoExpanding)

Description copied from interface: `ISlaveDocumentManager`
Sets the given slave document's auto expand mode. In auto expand mode, a slave document is automatically adapted to reflect all changes applied to its master document. Assume a master document contains 30 lines and the slave is defined to contain the lines 11-20. In auto expand mode, when the master document is changed at line 8, the slave document is expanded to contain the lines 8-20.

This call is without effect if the given document is unknown to this slave document manager.

Specified by:
  `setAutoExpandMode` in interface `ISlaveDocumentManager`
Parameters:
  `slave` - the slave whose auto expand mode should be set
  `autoExpanding` - `true` for auto expand, `false` otherwise

#### getSlaveDocuments

    public IDocument[] getSlaveDocuments(IDocument master)

Description copied from interface: `ISlaveDocumentManagerExtension`
Returns the list of slave documents for the given master document or `null` if there are no such slave document.

Specified by:
  `getSlaveDocuments` in interface `ISlaveDocumentManagerExtension`
Parameters:
  `master` - the master document
Returns:
  the list of slave documents or `null`