Class FileDocumentProvider

All Implemented Interfaces:
IStorageDocumentProvider, IDocumentProvider, IDocumentProviderExtension, IDocumentProviderExtension2, IDocumentProviderExtension3, IDocumentProviderExtension4, IDocumentProviderExtension5

public class FileDocumentProvider extends StorageDocumentProvider
Shared document provider specialized for file resources (IFile).

This class may be instantiated or be subclassed.

  • Constructor Details

    • FileDocumentProvider

      public FileDocumentProvider()
      Creates and returns a new document provider.
  • Method Details

    • setDocumentContent

      @Deprecated protected boolean setDocumentContent(IDocument document, IEditorInput editorInput) throws CoreException
      Deprecated.
      use file encoding based version
      Overrides StorageDocumentProvider#setDocumentContent(IDocument, IEditorInput).
      Overrides:
      setDocumentContent in class StorageDocumentProvider
      Parameters:
      document - the document to be initialized
      editorInput - the input from which to derive the content of the document
      Returns:
      true if the document content could be set, false otherwise
      Throws:
      CoreException - if the given editor input cannot be accessed
      Since:
      2.0
      See Also:
    • setDocumentContent

      protected boolean setDocumentContent(IDocument document, IEditorInput editorInput, String encoding) throws CoreException
      Description copied from class: StorageDocumentProvider
      Initializes the given document from the given editor input using the given character encoding.
      Overrides:
      setDocumentContent in class StorageDocumentProvider
      Parameters:
      document - the document to be initialized
      editorInput - the input from which to derive the content of the document
      encoding - the character encoding used to read the editor input
      Returns:
      true if the document content could be set, false otherwise
      Throws:
      CoreException - if the given editor input cannot be accessed
    • createAnnotationModel

      protected IAnnotationModel createAnnotationModel(Object element) throws CoreException
      Description copied from class: AbstractDocumentProvider
      Creates an annotation model for the given element.

      Subclasses must implement this method.

      Overrides:
      createAnnotationModel in class StorageDocumentProvider
      Parameters:
      element - the element
      Returns:
      the annotation model or null if none
      Throws:
      CoreException - if the annotation model could not be created
    • checkSynchronizationState

      protected void checkSynchronizationState(long cachedModificationStamp, IResource resource) throws CoreException
      Checks whether the given resource has been changed on the local file system by comparing the actual time stamp with the cached one. If the resource has been changed, a CoreException is thrown.
      Parameters:
      cachedModificationStamp - the cached modification stamp
      resource - the resource to check
      Throws:
      CoreException - if resource has been changed on the file system
    • computeModificationStamp

      protected long computeModificationStamp(IResource resource)
      Computes the initial modification stamp for the given resource.
      Parameters:
      resource - the resource
      Returns:
      the modification stamp
    • getModificationStamp

      public long getModificationStamp(Object element)
      Description copied from interface: IDocumentProvider
      Returns the modification stamp of the given element.
      Specified by:
      getModificationStamp in interface IDocumentProvider
      Overrides:
      getModificationStamp in class AbstractDocumentProvider
      Parameters:
      element - the element
      Returns:
      the modification stamp of the given element
    • getSynchronizationStamp

      public long getSynchronizationStamp(Object element)
      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 interface IDocumentProvider
      Overrides:
      getSynchronizationStamp in class AbstractDocumentProvider
      Parameters:
      element - the element
      Returns:
      the synchronization stamp of the given element
    • doSynchronize

      protected void doSynchronize(Object element, IProgressMonitor monitor) throws CoreException
      Description copied from class: AbstractDocumentProvider
      Performs the actual work of synchronizing the given element.
      Overrides:
      doSynchronize in class AbstractDocumentProvider
      Parameters:
      element - the element
      monitor - the progress monitor
      Throws:
      CoreException - in the case that synchronization fails
    • isDeleted

      public boolean isDeleted(Object element)
      Description copied from interface: IDocumentProvider
      Returns whether the given element has been deleted.
      Specified by:
      isDeleted in interface IDocumentProvider
      Overrides:
      isDeleted in class AbstractDocumentProvider
      Parameters:
      element - the element
      Returns:
      true if the element has been deleted
    • doSaveDocument

      protected void doSaveDocument(IProgressMonitor monitor, Object element, IDocument document, boolean overwrite) throws CoreException
      Description copied from class: AbstractDocumentProvider
      Performs the actual work of saving the given document provided for the given element.

      Subclasses must implement this method.

      Overrides:
      doSaveDocument in class StorageDocumentProvider
      Parameters:
      monitor - a progress monitor to report progress and request cancelation
      element - the element
      document - the document
      overwrite - indicates whether an overwrite should happen if necessary
      Throws:
      CoreException - if document could not be stored to the given element
    • createElementInfo

      protected AbstractDocumentProvider.ElementInfo createElementInfo(Object element) throws CoreException
      Description copied from class: AbstractDocumentProvider
      Creates a new element info object for the given element.

      This method is called from connect when an element info needs to be created. The AbstractDocumentProvider implementation of this method returns a new element info object whose document and annotation model are the values of createDocument(element) and createAnnotationModel(element), respectively. Subclasses may override.

      Overrides:
      createElementInfo in class StorageDocumentProvider
      Parameters:
      element - the element
      Returns:
      a new element info object
      Throws:
      CoreException - if the document or annotation model could not be created
    • disposeElementInfo

      protected void disposeElementInfo(Object element, AbstractDocumentProvider.ElementInfo info)
      Description copied from class: AbstractDocumentProvider
      Disposes of the given element info object.

      This method is called when an element info is disposed. The AbstractDocumentProvider implementation of this method does nothing. Subclasses may reimplement.

      Overrides:
      disposeElementInfo in class AbstractDocumentProvider
      Parameters:
      element - the element
      info - the element info object
    • handleElementContentChanged

      protected void handleElementContentChanged(IFileEditorInput fileEditorInput)
      Updates the element info to a change of the file content and sends out appropriate notifications.
      Parameters:
      fileEditorInput - the input of an text editor
    • handleElementMoved

      protected void handleElementMoved(IFileEditorInput fileEditorInput, IPath path)
      Sends out the notification that the file serving as document input has been moved.
      Parameters:
      fileEditorInput - the input of an text editor
      path - the path of the new location of the file
    • handleElementDeleted

      protected void handleElementDeleted(IFileEditorInput fileEditorInput)
      Sends out the notification that the file serving as document input has been deleted.
      Parameters:
      fileEditorInput - the input of an text editor
    • getElementInfo

      protected AbstractDocumentProvider.ElementInfo getElementInfo(Object element)
      Description copied from class: AbstractDocumentProvider
      Returns the element info object for the given element.
      Overrides:
      getElementInfo in class AbstractDocumentProvider
      Parameters:
      element - the element
      Returns:
      the element info object, or null if none
    • doValidateState

      protected void doValidateState(Object element, Object computationContext) throws CoreException
      Description copied from class: AbstractDocumentProvider
      Hook method for validating the state of the given element. Must not take care of cache updating etc. Default implementation is empty.
      Overrides:
      doValidateState in class AbstractDocumentProvider
      Parameters:
      element - the element
      computationContext - the context in which validation happens
      Throws:
      CoreException - in case validation fails
    • isModifiable

      public boolean isModifiable(Object element)
      Description copied from interface: IDocumentProviderExtension
      Returns whether the document provider thinks that the given element can persistently be modified. This is orthogonal to 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.
      Specified by:
      isModifiable in interface IDocumentProviderExtension
      Overrides:
      isModifiable in class StorageDocumentProvider
      Parameters:
      element - the element
      Returns:
      true if the given element is modifiable, false otherwise
    • doResetDocument

      protected void doResetDocument(Object element, IProgressMonitor monitor) throws CoreException
      Description copied from class: AbstractDocumentProvider
      Executes the actual work of reseting the given elements document.
      Overrides:
      doResetDocument in class AbstractDocumentProvider
      Parameters:
      element - the element
      monitor - the progress monitor
      Throws:
      CoreException - if resetting fails
    • refreshFile

      protected void refreshFile(IFile file) throws CoreException
      Refreshes the given file resource. This method will run the operation in the providers runnable context using the monitor supplied by AbstractDocumentProvider.getProgressMonitor().
      Parameters:
      file - the file
      Throws:
      CoreException - if the refresh fails
      Since:
      2.1
    • refreshFile

      protected void refreshFile(IFile file, IProgressMonitor monitor) throws CoreException
      Refreshes the given file resource. This method will run the operation in the providers runnable context using given monitor.
      Parameters:
      file - the file to be refreshed
      monitor - the progress monitor
      Throws:
      CoreException - if the refresh fails
      Since:
      3.0
    • isSynchronized

      public boolean isSynchronized(Object element)
      Description copied from interface: IDocumentProviderExtension3
      Returns whether the information provided for the given element is in sync with the element.
      Specified by:
      isSynchronized in interface IDocumentProviderExtension3
      Overrides:
      isSynchronized in class AbstractDocumentProvider
      Parameters:
      element - the element
      Returns:
      true if the information is in sync with the element, false otherwise
    • getContentType

      public IContentType getContentType(Object element) throws CoreException
      Description copied from interface: IDocumentProviderExtension4
      Returns the content type of for the given element or 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.
      Specified by:
      getContentType in interface IDocumentProviderExtension4
      Overrides:
      getContentType in class StorageDocumentProvider
      Parameters:
      element - the element
      Returns:
      the content type or null
      Throws:
      CoreException - if reading or accessing the underlying store fails
    • getPersistedEncoding

      protected String getPersistedEncoding(Object element)
      Returns the persisted encoding for the given element.
      Overrides:
      getPersistedEncoding in class StorageDocumentProvider
      Parameters:
      element - the element for which to get the persisted encoding
      Returns:
      the persisted encoding
      Since:
      2.1
    • persistEncoding

      protected void persistEncoding(Object element, String encoding) throws CoreException
      Persists the given encoding for the given element.
      Overrides:
      persistEncoding in class StorageDocumentProvider
      Parameters:
      element - the element for which to store the persisted encoding
      encoding - the encoding
      Throws:
      CoreException - if persisting the encoding fails
      Since:
      2.1
    • getOperationRunner

      protected IRunnableContext getOperationRunner(IProgressMonitor monitor)
      Description copied from class: AbstractDocumentProvider
      Returns the runnable context for this document provider.
      Overrides:
      getOperationRunner in class StorageDocumentProvider
      Parameters:
      monitor - a progress monitor to track the operation
      Returns:
      the runnable context for this document provider
    • getResetRule

      protected ISchedulingRule getResetRule(Object element)
      Description copied from class: AbstractDocumentProvider
      Returns the scheduling rule required for executing reset on the given element. This default implementation returns null.
      Overrides:
      getResetRule in class AbstractDocumentProvider
      Parameters:
      element - the element
      Returns:
      the scheduling rule for reset
    • getRefreshRule

      protected ISchedulingRule getRefreshRule(Object element)
      Returns the scheduling rule required for executing refresh on the given element. This implementation uses default refresh rule provided by IResourceRuleFactory.refreshRule(IResource).
      Parameters:
      element - the element
      Returns:
      the scheduling rule for refresh
      Since:
      3.11
    • getSaveRule

      protected ISchedulingRule getSaveRule(Object element)
      Description copied from class: AbstractDocumentProvider
      Returns the scheduling rule required for executing save on the given element. This default implementation returns null.
      Overrides:
      getSaveRule in class AbstractDocumentProvider
      Parameters:
      element - the element
      Returns:
      the scheduling rule for save
    • getSynchronizeRule

      protected ISchedulingRule getSynchronizeRule(Object element)
      Description copied from class: AbstractDocumentProvider
      Returns the scheduling rule required for executing synchronize on the given element. This default implementation returns null.
      Overrides:
      getSynchronizeRule in class AbstractDocumentProvider
      Parameters:
      element - the element
      Returns:
      the scheduling rule for synchronize
    • getValidateStateRule

      protected ISchedulingRule getValidateStateRule(Object element)
      Description copied from class: AbstractDocumentProvider
      Returns the scheduling rule required for executing validateState on the given element. This default implementation returns null.
      Overrides:
      getValidateStateRule in class AbstractDocumentProvider
      Parameters:
      element - the element
      Returns:
      the scheduling rule for validateState
    • readUTF8BOM

      @Deprecated protected void readUTF8BOM(IFile file, String encoding, Object element) throws CoreException
      Deprecated.
      as of 3.0 this method is no longer in use and does nothing
      Reads the file's UTF-8 BOM if any and stores it.

      XXX: This is a workaround for a corresponding bug in Java readers and writer, see http://developer.java.sun.com/developer/bugParade/bugs/4508058.html

      Parameters:
      file - the file
      encoding - the encoding
      element - the element, or null
      Throws:
      CoreException - if reading the BOM fails
      Since:
      3.0
    • cacheEncodingState

      protected void cacheEncodingState(Object element) throws CoreException
      Internally caches the file's encoding data.
      Parameters:
      element - the element, or null
      Throws:
      CoreException - if the encoding cannot be retrieved
      Since:
      3.1