Class TextFileDocumentProvider
- All Implemented Interfaces:
IStorageDocumentProvider
,IDocumentProvider
,IDocumentProviderExtension
,IDocumentProviderExtension2
,IDocumentProviderExtension3
,IDocumentProviderExtension4
,IDocumentProviderExtension5
IFile
based domain elements.
A text file document provider can have a parent document provider to which
it may delegate calls i.e. instead of delegating work to a super class it
delegates to a parent document provider. The parent chain acts as chain
of command.
Text file document providers use text file buffers to access the file content. This allows to share it between various clients including headless ones. Text file document providers should be preferred over file document providers due to this advantage.
Use a forwarding document provider if you need to ensure that all documents provided to clients are appropriately set up.
Clients can directly instantiate and configure this class with a suitable parent document provider or provide their own subclass.
- Since:
- 3.0
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected static class
Operation created by the document provider and to be executed by the providers runnable context.protected class
protected static class
protected static class
Deprecated.As of 3.3 - do not use -
Constructor Summary
ConstructorDescriptionCreates a new text file document provider with no parent.TextFileDocumentProvider
(IDocumentProvider parentProvider) Creates a new text file document provider which has the given parent provider. -
Method Summary
Modifier and TypeMethodDescriptionvoid
aboutToChange
(Object element) Informs this document provider about upcoming changes of the given element.void
addElementStateListener
(IElementStateListener listener) Adds the given element state listener to this document provider.boolean
canSaveDocument
(Object element) Returns whether the document provided for the given element differs from its original state which would required that it be saved.void
Informs this document provider that the given element has been changed.protected void
commitFileBuffer
(IProgressMonitor monitor, TextFileDocumentProvider.FileInfo info, boolean overwrite) Commits the given file info's file buffer by changing the contents of the underlying file to the contents of this file buffer.protected ISchedulingRule
computeSchedulingRule
(IResource toCreateOrModify) Computes the scheduling rule needed to create or modify a resource.void
Connects the given element to this document provider.protected IAnnotationModel
createAnnotationModel
(IFile file) Creates and returns the annotation model for the given file.protected TextFileDocumentProvider.FileInfo
Creates and returns a new and empty file info object.protected void
createFileFromDocument
(IProgressMonitor monitor, IFile file, IDocument document) Creates the given file with the given document content.protected TextFileDocumentProvider.FileInfo
createFileInfo
(Object element) Creates and returns the file info object for the given element.createSaveOperation
(Object element, IDocument document, boolean overwrite) void
disconnect
(Object element) Disconnects the given element from this document provider.protected void
disposeFileInfo
(Object element, TextFileDocumentProvider.FileInfo info) Releases all resources described by given element's info object.protected void
executeOperation
(TextFileDocumentProvider.DocumentProviderOperation operation, IProgressMonitor monitor) Executes the given operation in the providers runnable context.protected void
fireElementStateChangeFailed
(Object element) Informs all registered element state listeners about the failed state change of the element.protected void
fireElementStateChanging
(Object element) Informs all registered element state listeners about the current state change of the element.getAnnotationModel
(Object element) Returns the annotation model for the given element.Returns an iterator over the elements connected via this document provider.getContentType
(Object element) Returns the content type of for the given element ornull
if none could be determined.Returns the default character encoding used by this provider.getDocument
(Object element) Returns the document for the given element.getElements
(IFileBuffer file) Returns an iterator for all the elements that are connected to this file buffer.getEncoding
(Object element) Returns the character encoding for the given element, ornull
if the element is not managed by this provider.protected TextFileDocumentProvider.FileInfo
getFileInfo
(Object element) Returns the file info object for the given element.protected Iterator<TextFileDocumentProvider.FileInfo>
Returns an iterator over this document provider's file info objects.protected IFileStore
Returns the file store denoted by the given info.long
getModificationStamp
(Object element) Returns the modification stamp of the given element.protected IRunnableContext
getOperationRunner
(IProgressMonitor monitor) Returns the runnable context for this document provider.protected final IDocumentProvider
Returns the parent document provider.Returns this providers progress monitor.Returns the status of the given element.long
getSynchronizationStamp
(Object element) Returns the time stamp of the last synchronization of the given element and its provided document.protected File
Deprecated.As of 3.2, replaced bygetFileStore(org.eclipse.ui.editors.text.TextFileDocumentProvider.FileInfo)
protected void
handleCoreException
(CoreException exception, String message) Defines the standard procedure to handleCoreExceptions
.boolean
Returns whether the given element has been deleted.boolean
isModifiable
(Object element) Returns whether the document provider thinks that the given element can persistently be modified.boolean
isNotSynchronizedException
(Object element, CoreException ex) Tells whether the given core exception is exactly the exception which is thrown for a non-synchronized element.boolean
isReadOnly
(Object element) Returns whether the document provider thinks that the given element is read-only.boolean
isStateValidated
(Object element) Returns whether the state of the given element has been validated.boolean
isSynchronized
(Object element) Returns whether the information provided for the given element is in sync with the element.protected boolean
Returns whether the system file denoted by the given info is read-only.boolean
mustSaveDocument
(Object element) Returns whether the document provided for the given element must be saved.void
Removes the given element state listener from this document provider.void
resetDocument
(Object element) Resets the given element's document to its last saved state.final void
saveDocument
(IProgressMonitor monitor, Object element, IDocument document, boolean overwrite) Saves the given document provided for the given element.void
setCanSaveDocument
(Object element) Marks the document managed for the given element as savable.void
setEncoding
(Object element, String encoding) Sets the encoding for the given element.final void
setParentDocumentProvider
(IDocumentProvider parentProvider) Sets the given parent provider as this document provider's parent document provider.void
setProgressMonitor
(IProgressMonitor progressMonitor) Sets this providers progress monitor.protected void
Sets up the synchronization for the document and the annotation mode.void
synchronize
(Object element) Synchronizes the document provided for the given element with the given element.void
updateStateCache
(Object element) Updates the state cache for the given element.void
validateState
(Object element, Object computationContext) Validates the state of the given element.
-
Constructor Details
-
TextFileDocumentProvider
public TextFileDocumentProvider()Creates a new text file document provider with no parent. -
TextFileDocumentProvider
Creates a new text file document provider which has the given parent provider.- Parameters:
parentProvider
- the parent document provider
-
-
Method Details
-
setParentDocumentProvider
Sets the given parent provider as this document provider's parent document provider.- Parameters:
parentProvider
- the parent document provider
-
getParentProvider
Returns the parent document provider.- Returns:
- the parent document provider
-
getOperationRunner
Returns the runnable context for this document provider.- Parameters:
monitor
- the progress monitor- Returns:
- the runnable context for this document provider
-
executeOperation
protected void executeOperation(TextFileDocumentProvider.DocumentProviderOperation operation, IProgressMonitor monitor) throws CoreException Executes the given operation in the providers runnable context.- Parameters:
operation
- the operation to be executesmonitor
- the progress monitor- Throws:
CoreException
- the operation's core exception
-
connect
Description copied from interface:IDocumentProvider
Connects the given element to this document provider. This tells the provider that caller of this method is interested to work with the document provided for the given domain model element. By counting the invocations of this method anddisconnect(Object)
this provider can assume to know the correct number of clients working with the document provided for that domain model element.The given element must not be
null
.- Specified by:
connect
in interfaceIDocumentProvider
- Parameters:
element
- the element- Throws:
CoreException
- if the textual representation or the annotation model of the element could not be created
-
createEmptyFileInfo
Creates and returns a new and empty file info object.Subclasses which extend
TextFileDocumentProvider.FileInfo
should override this method.- Returns:
- a new and empty object of type
FileInfo
-
createFileInfo
Creates and returns the file info object for the given element.Subclasses which extend
TextFileDocumentProvider.FileInfo
will probably have to extend this method as well.- Parameters:
element
- the element- Returns:
- a file info object of type
FileInfo
ornull
if none can be created - Throws:
CoreException
- if the file info object could not successfully be created
-
setUpSynchronization
Sets up the synchronization for the document and the annotation mode.- Parameters:
info
- the file info- Since:
- 3.2
-
createAnnotationModel
Creates and returns the annotation model for the given file.- Parameters:
file
- the file- Returns:
- the file's annotation model or
null
if none
-
disconnect
Description copied from interface:IDocumentProvider
Disconnects the given element from this document provider. This tells the provider that the caller of this method is no longer interested in working with the document provided for the given domain model element. By counting the invocations ofconnect(Object)
and of this method this provider can assume to know the correct number of clients working with the document provided for that domain model element.The given element must not be
null
.- Specified by:
disconnect
in interfaceIDocumentProvider
- Parameters:
element
- the element
-
disposeFileInfo
Releases all resources described by given element's info object.Subclasses which extend
TextFileDocumentProvider.FileInfo
will probably have to extend this method as well.- Parameters:
element
- the elementinfo
- the element's file info object
-
getElements
Returns an iterator for all the elements that are connected to this file buffer.- Parameters:
file
- the file buffer- Returns:
- an iterator for all elements connected with the given file buffer
-
getDocument
Description copied from interface:IDocumentProvider
Returns the document for the given element. Usually the document contains a textual presentation of the content of the element, or is the element itself.- Specified by:
getDocument
in interfaceIDocumentProvider
- Parameters:
element
- the element, ornull
- Returns:
- the document, or
null
if none
-
resetDocument
Description copied from interface:IDocumentProvider
Resets the given element's document to its last saved state. Element state listeners are notified both before (elementContentAboutToBeReplaced
) and after (elementContentReplaced
) the content is changed.- Specified by:
resetDocument
in interfaceIDocumentProvider
- Parameters:
element
- the element, ornull
- Throws:
CoreException
- if document could not be reset for the given element
-
saveDocument
public final void saveDocument(IProgressMonitor monitor, Object element, IDocument document, boolean overwrite) throws CoreException Description copied from interface:IDocumentProvider
Saves the given document provided for the given element.- Specified by:
saveDocument
in interfaceIDocumentProvider
- Parameters:
monitor
- a progress monitor to report progress and request cancelationelement
- the element, ornull
document
- the documentoverwrite
- 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
-
createSaveOperation
protected TextFileDocumentProvider.DocumentProviderOperation createSaveOperation(Object element, IDocument document, boolean overwrite) throws CoreException - Throws:
CoreException
-
commitFileBuffer
protected void commitFileBuffer(IProgressMonitor monitor, TextFileDocumentProvider.FileInfo info, boolean overwrite) throws CoreException Commits the given file info's file buffer by changing the contents of the underlying file to the contents of this file buffer. After that call,isDirty
returnsfalse
andisSynchronized
returnstrue
.- Parameters:
monitor
- the progress monitorinfo
- the element's file info objectoverwrite
- indicates whether the underlying file should be overwritten if it is not synchronized with the file system- Throws:
CoreException
- if writing or accessing the underlying file fails
-
createFileFromDocument
protected void createFileFromDocument(IProgressMonitor monitor, IFile file, IDocument document) throws CoreException Creates the given file with the given document content.- Parameters:
monitor
- the progress monitorfile
- the file to be createddocument
- the document to be written to the file- Throws:
CoreException
- if the creation of the file fails
-
getModificationStamp
Description copied from interface:IDocumentProvider
Returns the modification stamp of the given element.- Specified by:
getModificationStamp
in interfaceIDocumentProvider
- Parameters:
element
- the element- Returns:
- the modification stamp of the given element
-
getSynchronizationStamp
Description copied from interface:IDocumentProvider
Returns the time stamp of the last synchronization of the given element and its provided document.- Specified by:
getSynchronizationStamp
in interfaceIDocumentProvider
- Parameters:
element
- the element- Returns:
- the synchronization stamp of the given element
-
isDeleted
Description copied from interface:IDocumentProvider
Returns whether the given element has been deleted.- Specified by:
isDeleted
in interfaceIDocumentProvider
- Parameters:
element
- the element- Returns:
true
if the element has been deleted
-
mustSaveDocument
Description copied from interface:IDocumentProvider
Returns whether the document provided for the given element must be saved.- Specified by:
mustSaveDocument
in interfaceIDocumentProvider
- Parameters:
element
- the element, ornull
- Returns:
true
if the document must be saved, andfalse
otherwise (including the element isnull
)
-
canSaveDocument
Description copied from interface:IDocumentProvider
Returns whether the document provided for the given element differs from its original state which would required that it be saved.- Specified by:
canSaveDocument
in interfaceIDocumentProvider
- Parameters:
element
- the element, ornull
- Returns:
true
if the document can be saved, andfalse
otherwise (including the element isnull
)
-
getAnnotationModel
Description copied from interface:IDocumentProvider
Returns the annotation model for the given element.- Specified by:
getAnnotationModel
in interfaceIDocumentProvider
- Parameters:
element
- the element, ornull
- Returns:
- the annotation model, or
null
if none
-
aboutToChange
Description copied from interface:IDocumentProvider
Informs this document provider about upcoming changes of the given element. The changes might cause change notifications specific for the type of the given element. If this provider manages a document for the given element, the document provider must not change the document because of the notifications received afteraboutToChange
has been and beforechanged
is called. In this case, it is assumed that the document is already up to date, e.g., a save operation is a typical case.The concrete nature of the change notification depends on the concrete type of the given element. If the element is, e.g., an
IResource
the notification is a resource delta.- Specified by:
aboutToChange
in interfaceIDocumentProvider
- Parameters:
element
- the element, ornull
-
changed
Description copied from interface:IDocumentProvider
Informs this document provider that the given element has been changed. All notifications have been sent out. If this provider manages a document for the given element, the document provider must from now on change the document on the receipt of change notifications. The concrete nature of the change notification depends on the concrete type of the given element. If the element is, e.g., anIResource
the notification is a resource delta.- Specified by:
changed
in interfaceIDocumentProvider
- Parameters:
element
- the element, ornull
-
addElementStateListener
Description copied from interface:IDocumentProvider
Adds the given element state listener to this document provider. Has no effect if an identical listener is already registered.- Specified by:
addElementStateListener
in interfaceIDocumentProvider
- Parameters:
listener
- the listener
-
removeElementStateListener
Description copied from interface:IDocumentProvider
Removes the given element state listener from this document provider. Has no effect if an identical listener is not registered.- Specified by:
removeElementStateListener
in interfaceIDocumentProvider
- Parameters:
listener
- the listener
-
isReadOnly
Description copied from interface:IDocumentProviderExtension
Returns whether the document provider thinks that the given element is read-only. If this method returnstrue
,saveDocument
could fail. This method does not say anything about the document constructed from the given element. If the given element is not connected to this document provider, the return value is undefined. Document providers are allowed to use a cache to answer this question, i.e. there can be a difference between the "real" state of the element and the return value.- Specified by:
isReadOnly
in interfaceIDocumentProviderExtension
- Parameters:
element
- the element- Returns:
true
if the given element is read-only,false
otherwise
-
isModifiable
Description copied from interface:IDocumentProviderExtension
Returns whether the document provider thinks that the given element can persistently be modified. This is orthogonal toisReadOnly
as read-only elements may be modifiable and writable elements may not be modifiable. If the given element is not connected to this document provider, the result is undefined. Document providers are allowed to use a cache to answer this question, i.e. there can be a difference between the "real" state of the element and the return value.- Specified by:
isModifiable
in interfaceIDocumentProviderExtension
- Parameters:
element
- the element- Returns:
true
if the given element is modifiable,false
otherwise
-
validateState
Description copied from interface:IDocumentProviderExtension
Validates the state of the given element. This method may change the "real" state of the element. If using, it also updates the internal caches, so that this method may also change the results returned byisReadOnly
andisModifiable
. If the given element is not connected to this document provider, the effect is undefined.- Specified by:
validateState
in interfaceIDocumentProviderExtension
- Parameters:
element
- the elementcomputationContext
- the context in which the computation is performed, e.g., a SWT shell- Throws:
CoreException
- if validating fails
-
isStateValidated
Description copied from interface:IDocumentProviderExtension
Returns whether the state of the given element has been validated.- Specified by:
isStateValidated
in interfaceIDocumentProviderExtension
- Parameters:
element
- the element- Returns:
true
if the state has been validated
-
updateStateCache
Description copied from interface:IDocumentProviderExtension
Updates the state cache for the given element. This method may change the result returned byisReadOnly
andisModifiable
. If the given element is not connected to this document provider, the effect is undefined.- Specified by:
updateStateCache
in interfaceIDocumentProviderExtension
- Parameters:
element
- the element- Throws:
CoreException
- if validating fails
-
setCanSaveDocument
Description copied from interface:IDocumentProviderExtension
Marks the document managed for the given element as savable. I.e.canBeSaved(element)
will returntrue
afterwards.- Specified by:
setCanSaveDocument
in interfaceIDocumentProviderExtension
- Parameters:
element
- the element
-
getStatus
Description copied from interface:IDocumentProviderExtension
Returns the status of the given element.- Specified by:
getStatus
in interfaceIDocumentProviderExtension
- Parameters:
element
- the element- Returns:
- the status of the given element
-
synchronize
Description copied from interface:IDocumentProviderExtension
Synchronizes the document provided for the given element with the given element. After that callgetSynchronizationTimeStamp
andgetModificationTimeStamp
return the same value.- Specified by:
synchronize
in interfaceIDocumentProviderExtension
- Parameters:
element
- the element- Throws:
CoreException
- if the synchronization could not be performed
-
setProgressMonitor
Description copied from interface:IDocumentProviderExtension2
Sets this providers progress monitor.- Specified by:
setProgressMonitor
in interfaceIDocumentProviderExtension2
- Parameters:
progressMonitor
- the progress monitor
-
getProgressMonitor
Description copied from interface:IDocumentProviderExtension2
Returns this providers progress monitor.- Specified by:
getProgressMonitor
in interfaceIDocumentProviderExtension2
- Returns:
- IProgressMonitor
-
isSynchronized
Description copied from interface:IDocumentProviderExtension3
Returns whether the information provided for the given element is in sync with the element.- Specified by:
isSynchronized
in interfaceIDocumentProviderExtension3
- Parameters:
element
- the element- Returns:
true
if the information is in sync with the element,false
otherwise
-
isNotSynchronizedException
Description copied from interface:IDocumentProviderExtension5
Tells whether the given core exception is exactly the exception which is thrown for a non-synchronized element.- Specified by:
isNotSynchronizedException
in interfaceIDocumentProviderExtension5
- Parameters:
element
- the elementex
- the core exception- Returns:
true
iff the given core exception is exactly the exception which is thrown for a non-synchronized element
-
getDefaultEncoding
Description copied from interface:IStorageDocumentProvider
Returns the default character encoding used by this provider.- Specified by:
getDefaultEncoding
in interfaceIStorageDocumentProvider
- Returns:
- the default character encoding used by this provider
-
getEncoding
Description copied from interface:IStorageDocumentProvider
Returns the character encoding for the given element, ornull
if the element is not managed by this provider.- Specified by:
getEncoding
in interfaceIStorageDocumentProvider
- Parameters:
element
- the element- Returns:
- the encoding for the given element
-
setEncoding
Description copied from interface:IStorageDocumentProvider
Sets the encoding for the given element. Ifencoding
isnull
the workbench's character encoding should be used.- Specified by:
setEncoding
in interfaceIStorageDocumentProvider
- Parameters:
element
- the elementencoding
- the encoding to be used
-
getContentType
Description copied from interface:IDocumentProviderExtension4
Returns the content type of for the given element ornull
if none could be determined. If the element's document can be saved, the returned content type is determined by the document's current content.- Specified by:
getContentType
in interfaceIDocumentProviderExtension4
- Parameters:
element
- the element- Returns:
- the content type or
null
- Throws:
CoreException
- if reading or accessing the underlying store fails
-
handleCoreException
Defines the standard procedure to handleCoreExceptions
. Exceptions are written to the plug-in log.- Parameters:
exception
- the exception to be loggedmessage
- the message to be logged
-
getFileStore
Returns the file store denoted by the given info.- Parameters:
info
- the element's file info object- Returns:
- the
IFileStore
for the given file info - Since:
- 3.2
-
getSystemFile
Deprecated.As of 3.2, replaced bygetFileStore(org.eclipse.ui.editors.text.TextFileDocumentProvider.FileInfo)
Returns the system file denoted by the given info.- Parameters:
info
- the element's file info object- Returns:
- the system file for the given file info
-
isSystemFileReadOnly
Returns whether the system file denoted by the given info is read-only.- Parameters:
info
- the element's file info object- Returns:
true
iff read-only
-
getFileInfo
Returns the file info object for the given element.- Parameters:
element
- the element- Returns:
- the file info object, or
null
if none
-
getConnectedElementsIterator
Returns an iterator over the elements connected via this document provider.- Returns:
- an iterator over the list of elements
-
getFileInfosIterator
Returns an iterator over this document provider's file info objects.- Returns:
- the iterator over list of file info objects
-
fireElementStateChanging
Informs all registered element state listeners about the current state change of the element.- Parameters:
element
- the element- See Also:
-
fireElementStateChangeFailed
Informs all registered element state listeners about the failed state change of the element.- Parameters:
element
- the element- See Also:
-
computeSchedulingRule
Computes the scheduling rule needed to create or modify a resource. If the resource exists, its modify rule is returned. If it does not, the resource hierarchy is iterated towards the workspace root to find the first parent oftoCreateOrModify
that exists. Then the 'create' rule for the last non-existing resource is returned.- Parameters:
toCreateOrModify
- the resource to create or modify- Returns:
- the minimal scheduling rule needed to modify or create a resource
- Since:
- 3.1
-