public class TextFileDocumentProvider extends Object implements IDocumentProvider, IDocumentProviderExtension, IDocumentProviderExtension2, IDocumentProviderExtension3, IDocumentProviderExtension5, IStorageDocumentProvider, IDocumentProviderExtension4
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.
Modifier and Type | Class and Description |
---|---|
protected static class |
TextFileDocumentProvider.DocumentProviderOperation
Operation created by the document provider and to be executed by the providers runnable context.
|
protected class |
TextFileDocumentProvider.FileBufferListener |
protected static class |
TextFileDocumentProvider.FileInfo |
protected static class |
TextFileDocumentProvider.NullProvider
Deprecated.
As of 3.3 - do not use
|
Constructor and Description |
---|
TextFileDocumentProvider()
Creates 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.
|
Modifier and Type | Method and Description |
---|---|
void |
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 |
changed(Object element)
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 |
connect(Object element)
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 |
createEmptyFileInfo()
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.
|
protected TextFileDocumentProvider.DocumentProviderOperation |
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.
|
IAnnotationModel |
getAnnotationModel(Object element)
Returns the annotation model for the given element.
|
protected Iterator |
getConnectedElementsIterator()
Returns an iterator over the elements connected via this document provider.
|
IContentType |
getContentType(Object element)
Returns the content type of for the given element or
null if none could be determined. |
String |
getDefaultEncoding()
Returns the default character encoding used by this provider.
|
IDocument |
getDocument(Object element)
Returns the document for the given element.
|
protected Iterator |
getElements(IFileBuffer file)
Returns an iterator for all the elements that are connected to this file buffer.
|
String |
getEncoding(Object element)
Returns the character encoding for the given element, or
null 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 |
getFileInfosIterator()
Returns an iterator over this document provider's file info objects.
|
protected IFileStore |
getFileStore(TextFileDocumentProvider.FileInfo info)
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 IDocumentProvider |
getParentProvider()
Returns the parent document provider.
|
IProgressMonitor |
getProgressMonitor()
Returns this providers progress monitor.
|
IStatus |
getStatus(Object element)
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 |
getSystemFile(TextFileDocumentProvider.FileInfo info)
Deprecated.
As of 3.2, replaced by
getFileStore(org.eclipse.ui.editors.text.TextFileDocumentProvider.FileInfo) |
protected void |
handleCoreException(CoreException exception,
String message)
Defines the standard procedure to handle
CoreExceptions . |
boolean |
isDeleted(Object element)
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 |
isSystemFileReadOnly(TextFileDocumentProvider.FileInfo info)
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 |
removeElementStateListener(IElementStateListener listener)
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.
|
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.
|
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 |
setUpSynchronization(TextFileDocumentProvider.FileInfo info)
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.
|
public TextFileDocumentProvider()
public TextFileDocumentProvider(IDocumentProvider parentProvider)
parentProvider
- the parent document providerpublic final void setParentDocumentProvider(IDocumentProvider parentProvider)
parentProvider
- the parent document providerprotected final IDocumentProvider getParentProvider()
protected IRunnableContext getOperationRunner(IProgressMonitor monitor)
monitor
- the progress monitorprotected void executeOperation(TextFileDocumentProvider.DocumentProviderOperation operation, IProgressMonitor monitor) throws CoreException
operation
- the operation to be executesmonitor
- the progress monitorCoreException
- the operation's core exceptionpublic void connect(Object element) throws CoreException
IDocumentProvider
disconnect(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
.
connect
in interface IDocumentProvider
element
- the elementCoreException
- if the textual representation or the annotation model
of the element could not be createdprotected TextFileDocumentProvider.FileInfo createEmptyFileInfo()
Subclasses which extend TextFileDocumentProvider.FileInfo
should override this method.
FileInfo
protected TextFileDocumentProvider.FileInfo createFileInfo(Object element) throws CoreException
Subclasses which extend TextFileDocumentProvider.FileInfo
will probably have to extend this method as well.
element
- the elementFileInfo
or null
if none can be createdCoreException
- if the file info object could not successfully be createdprotected void setUpSynchronization(TextFileDocumentProvider.FileInfo info)
info
- the file infoprotected IAnnotationModel createAnnotationModel(IFile file)
file
- the filenull
if nonepublic void disconnect(Object element)
IDocumentProvider
connect(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
.
disconnect
in interface IDocumentProvider
element
- the elementprotected void disposeFileInfo(Object element, TextFileDocumentProvider.FileInfo info)
Subclasses which extend TextFileDocumentProvider.FileInfo
will probably have to extend this method as well.
element
- the elementinfo
- the element's file info objectprotected Iterator getElements(IFileBuffer file)
file
- the file bufferpublic IDocument getDocument(Object element)
IDocumentProvider
getDocument
in interface IDocumentProvider
element
- the element, or null
null
if nonepublic void resetDocument(Object element) throws CoreException
IDocumentProvider
elementContentAboutToBeReplaced
)
and after (elementContentReplaced
) the content is changed.resetDocument
in interface IDocumentProvider
element
- the element, or null
CoreException
- if document could not be reset for the given elementpublic final void saveDocument(IProgressMonitor monitor, Object element, IDocument document, boolean overwrite) throws CoreException
IDocumentProvider
saveDocument
in interface IDocumentProvider
monitor
- a progress monitor to report progress and request cancelationelement
- the element, or null
document
- the documentoverwrite
- indicates whether overwrite should be performed
while saving the given element if necessaryCoreException
- if document could not be stored to the given elementprotected TextFileDocumentProvider.DocumentProviderOperation createSaveOperation(Object element, IDocument document, boolean overwrite) throws CoreException
CoreException
protected void commitFileBuffer(IProgressMonitor monitor, TextFileDocumentProvider.FileInfo info, boolean overwrite) throws CoreException
isDirty
returns false
and isSynchronized
returns true
.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 systemCoreException
- if writing or accessing the underlying file failsprotected void createFileFromDocument(IProgressMonitor monitor, IFile file, IDocument document) throws CoreException
monitor
- the progress monitorfile
- the file to be createddocument
- the document to be written to the fileCoreException
- if the creation of the file failspublic long getModificationStamp(Object element)
IDocumentProvider
getModificationStamp
in interface IDocumentProvider
element
- the elementpublic long getSynchronizationStamp(Object element)
IDocumentProvider
getSynchronizationStamp
in interface IDocumentProvider
element
- the elementpublic boolean isDeleted(Object element)
IDocumentProvider
isDeleted
in interface IDocumentProvider
element
- the elementtrue
if the element has been deletedpublic boolean mustSaveDocument(Object element)
IDocumentProvider
mustSaveDocument
in interface IDocumentProvider
element
- the element, or null
true
if the document must be saved, and
false
otherwise (including the element is null
)public boolean canSaveDocument(Object element)
IDocumentProvider
canSaveDocument
in interface IDocumentProvider
element
- the element, or null
true
if the document can be saved, and
false
otherwise (including the element is null
)public IAnnotationModel getAnnotationModel(Object element)
IDocumentProvider
getAnnotationModel
in interface IDocumentProvider
element
- the element, or null
null
if nonepublic void aboutToChange(Object element)
IDocumentProvider
aboutToChange
has been and before changed
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.
aboutToChange
in interface IDocumentProvider
element
- the element, or null
public void changed(Object element)
IDocumentProvider
IResource
the notification is a resource delta.changed
in interface IDocumentProvider
element
- the element, or null
public void addElementStateListener(IElementStateListener listener)
IDocumentProvider
addElementStateListener
in interface IDocumentProvider
listener
- the listenerpublic void removeElementStateListener(IElementStateListener listener)
IDocumentProvider
removeElementStateListener
in interface IDocumentProvider
listener
- the listenerpublic boolean isReadOnly(Object element)
IDocumentProviderExtension
true
, 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.isReadOnly
in interface IDocumentProviderExtension
element
- the elementtrue
if the given element is read-only, false
otherwisepublic boolean isModifiable(Object element)
IDocumentProviderExtension
isReadOnly
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.isModifiable
in interface IDocumentProviderExtension
element
- the elementtrue
if the given element is modifiable, false
otherwisepublic void validateState(Object element, Object computationContext) throws CoreException
IDocumentProviderExtension
isReadOnly
and isModifiable
. If the
given element is not connected to this document provider, the effect is undefined.validateState
in interface IDocumentProviderExtension
element
- the elementcomputationContext
- the context in which the computation is performed, e.g., a SWT shellCoreException
- if validating failspublic boolean isStateValidated(Object element)
IDocumentProviderExtension
isStateValidated
in interface IDocumentProviderExtension
element
- the elementtrue
if the state has been validatedpublic void updateStateCache(Object element) throws CoreException
IDocumentProviderExtension
isReadOnly
and isModifiable
. If the given element is not
connected to this document provider, the effect is undefined.updateStateCache
in interface IDocumentProviderExtension
element
- the elementCoreException
- if validating failspublic void setCanSaveDocument(Object element)
IDocumentProviderExtension
canBeSaved(element)
will return true
afterwards.setCanSaveDocument
in interface IDocumentProviderExtension
element
- the elementpublic IStatus getStatus(Object element)
IDocumentProviderExtension
getStatus
in interface IDocumentProviderExtension
element
- the elementpublic void synchronize(Object element) throws CoreException
IDocumentProviderExtension
getSynchronizationTimeStamp
and getModificationTimeStamp
return the same value.synchronize
in interface IDocumentProviderExtension
element
- the elementCoreException
- if the synchronization could not be performedpublic void setProgressMonitor(IProgressMonitor progressMonitor)
IDocumentProviderExtension2
setProgressMonitor
in interface IDocumentProviderExtension2
progressMonitor
- the progress monitorpublic IProgressMonitor getProgressMonitor()
IDocumentProviderExtension2
getProgressMonitor
in interface IDocumentProviderExtension2
public boolean isSynchronized(Object element)
IDocumentProviderExtension3
isSynchronized
in interface IDocumentProviderExtension3
element
- the elementtrue
if the information is in sync with the element, false
otherwisepublic boolean isNotSynchronizedException(Object element, CoreException ex)
IDocumentProviderExtension5
isNotSynchronizedException
in interface IDocumentProviderExtension5
element
- the elementex
- the core exceptiontrue
iff the given core exception is exactly the
exception which is thrown for a non-synchronized elementpublic String getDefaultEncoding()
IStorageDocumentProvider
getDefaultEncoding
in interface IStorageDocumentProvider
public String getEncoding(Object element)
IStorageDocumentProvider
null
if the element is not managed by this provider.getEncoding
in interface IStorageDocumentProvider
element
- the elementpublic void setEncoding(Object element, String encoding)
IStorageDocumentProvider
encoding
is null
the workbench's character encoding should be used.setEncoding
in interface IStorageDocumentProvider
element
- the elementencoding
- the encoding to be usedpublic IContentType getContentType(Object element) throws CoreException
IDocumentProviderExtension4
null
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.getContentType
in interface IDocumentProviderExtension4
element
- the elementnull
CoreException
- if reading or accessing the underlying store
failsprotected void handleCoreException(CoreException exception, String message)
CoreExceptions
. Exceptions
are written to the plug-in log.exception
- the exception to be loggedmessage
- the message to be loggedprotected IFileStore getFileStore(TextFileDocumentProvider.FileInfo info)
info
- the element's file info objectIFileStore
for the given file infoprotected File getSystemFile(TextFileDocumentProvider.FileInfo info)
getFileStore(org.eclipse.ui.editors.text.TextFileDocumentProvider.FileInfo)
info
- the element's file info objectprotected boolean isSystemFileReadOnly(TextFileDocumentProvider.FileInfo info)
info
- the element's file info objecttrue
iff read-onlyprotected TextFileDocumentProvider.FileInfo getFileInfo(Object element)
element
- the elementnull
if noneprotected Iterator getConnectedElementsIterator()
Object
)protected Iterator getFileInfosIterator()
TextFileDocumentProvider.FileInfo
)protected void fireElementStateChanging(Object element)
element
- the elementIElementStateListenerExtension.elementStateChanging(Object)
protected void fireElementStateChangeFailed(Object element)
element
- the elementIElementStateListenerExtension.elementStateChangeFailed(Object)
protected ISchedulingRule computeSchedulingRule(IResource toCreateOrModify)
toCreateOrModify
that exists. Then the
'create' rule for the last non-existing resource is returned.toCreateOrModify
- the resource to create or modify
Copyright (c) 2000, 2014 Eclipse Contributors and others. All rights reserved.Guidelines for using Eclipse APIs.