# Interface ISharedDocumentAdapter

All Known Implementing Classes:
  `SharedDocumentAdapter, SharedDocumentAdapterWrapper`

public interface ISharedDocumentAdapter
An `ISharedDocumentAdapter` is used to map an `ITypedElement` to a shared document for the purposes of editing.

Since:
  3.3
Restriction:
  Clients are not expected to implement this interface but instead should subclass `SharedDocumentAdapter` or `SharedDocumentAdapterWrapper`.

## Method Summary

Modifier and Type
Method
Description
`void`
`connect(IDocumentProvider provider, IEditorInput documentKey)`
Connect the given element to its document provider.
`void`
`disconnect(Object element)`
A helper disconnect method that looks up the appropriate key (using `getDocumentKey(Object)` and the appropriate provider and calls `disconnect(IDocumentProvider, IEditorInput)`.
`void`
`disconnect(IDocumentProvider provider, IEditorInput documentKey)`
Disconnect the element from the document provider.
`void`
`flushDocument(IDocumentProvider provider, IEditorInput documentKey, IDocument document, boolean overwrite)`
Flush the contents of the given document into the typed element that provided the document.
`IEditorInput`
`getDocumentKey(Object element)`
Return the object that is to be used as the key for retrieving the appropriate `IDocumentProvider` from the `DocumentProviderRegistry` and for obtaining the shared `IDocument` from the document provider.

## Method Details

### getDocumentKey

IEditorInput getDocumentKey(Object element)
Return the object that is to be used as the key for retrieving the appropriate `IDocumentProvider` from the `DocumentProviderRegistry` and for obtaining the shared `IDocument` from the document provider. Returns `null` if the element does not have a shared document.

Parameters:
  `element` - the element being queried for a shared document
Returns:
  the object that acts as the key to obtain a document provider and document or `null`

### connect

void connect(IDocumentProvider provider, IEditorInput documentKey) throws CoreException
Connect the given element to its document provider. All connections must be performed through this adapter so that the adapter can track whether it is connected or not.

Parameters:
  `provider` - the document provider
  `documentKey` - the element's key returned from `getDocumentKey(Object)`
Throws:
  `CoreException` - if connection was not possible
See Also:
  - `IDocumentProvider.connect(Object)`

### disconnect

void disconnect(IDocumentProvider provider, IEditorInput documentKey)
Disconnect the element from the document provider. All connects and disconnects must occur through the adapter so that the adapter can track whether it is connected or not.

Parameters:
  `provider` - the document provider
  `documentKey` - the element's key returned from `getDocumentKey(Object)`
See Also:
  - `IDocumentProvider.disconnect(Object)`

### disconnect

void disconnect(Object element)
A helper disconnect method that looks up the appropriate key (using `getDocumentKey(Object)` and the appropriate provider and calls `disconnect(IDocumentProvider, IEditorInput)`.

Parameters:
  `element` - the element that was used to previously connect to a document
See Also:
  - `IDocumentProvider.disconnect(Object)`

### flushDocument

void flushDocument(IDocumentProvider provider, IEditorInput documentKey, IDocument document, boolean overwrite) throws CoreException
Flush the contents of the given document into the typed element that provided the document. This method is invoked by the Compare framework classes when a request to flush the viewers has been made. It is up to the implementor to decide whether the changes in the buffer should be saved to disk at the time of the flush or buffered to be saved at a later time.

Parameters:
  `provider` - the document provider
  `documentKey` - the element's key returned from `getDocumentKey(Object)`
  `document` - the document
  `overwrite` - indicates whether overwrite should be performed while saving the given element if necessary
Throws:
  `CoreException` - if document could not be stored to the given element
See Also:
  - `IDocumentProvider.saveDocument(IProgressMonitor, Object, IDocument, boolean)`