Class TextFileDocumentProvider

    • Constructor Detail

      • TextFileDocumentProvider

        public TextFileDocumentProvider()
        Creates a new text file document provider with no parent.
      • TextFileDocumentProvider

        public TextFileDocumentProvider​(IDocumentProvider parentProvider)
        Creates a new text file document provider which has the given parent provider.
        Parameters:
        parentProvider - the parent document provider
    • Method Detail

      • setParentDocumentProvider

        public final void setParentDocumentProvider​(IDocumentProvider parentProvider)
        Sets the given parent provider as this document provider's parent document provider.
        Parameters:
        parentProvider - the parent document provider
      • getParentProvider

        protected final IDocumentProvider getParentProvider()
        Returns the parent document provider.
        Returns:
        the parent document provider
      • getOperationRunner

        protected IRunnableContext getOperationRunner​(IProgressMonitor monitor)
        Returns the runnable context for this document provider.
        Parameters:
        monitor - the progress monitor
        Returns:
        the runnable context for this document provider
      • connect

        public void connect​(Object element)
                     throws CoreException
        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 and 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.

        Specified by:
        connect in interface IDocumentProvider
        Parameters:
        element - the element
        Throws:
        CoreException - if the textual representation or the annotation model of the element could not be created
      • setUpSynchronization

        protected void setUpSynchronization​(TextFileDocumentProvider.FileInfo info)
        Sets up the synchronization for the document and the annotation mode.
        Parameters:
        info - the file info
        Since:
        3.2
      • createAnnotationModel

        protected IAnnotationModel createAnnotationModel​(IFile file)
        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

        public void disconnect​(Object element)
        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 of 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.

        Specified by:
        disconnect in interface IDocumentProvider
        Parameters:
        element - the element
      • getElements

        protected Iterator<Object> getElements​(IFileBuffer file)
        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

        public IDocument getDocument​(Object element)
        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 interface IDocumentProvider
        Parameters:
        element - the element, or null
        Returns:
        the document, or null if none
      • resetDocument

        public void resetDocument​(Object element)
                           throws CoreException
        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 interface IDocumentProvider
        Parameters:
        element - the element, or null
        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 interface IDocumentProvider
        Parameters:
        monitor - a progress monitor to report progress and request cancelation
        element - the element, or null
        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
      • 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 returns false and isSynchronized returns true.
        Parameters:
        monitor - the progress monitor
        info - the element's file info object
        overwrite - 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 monitor
        file - the file to be created
        document - the document to be written to the file
        Throws:
        CoreException - if the creation of the file fails
      • 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
        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
        Parameters:
        element - the element
        Returns:
        the synchronization stamp of the given element
      • 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
        Parameters:
        element - the element
        Returns:
        true if the element has been deleted
      • mustSaveDocument

        public boolean mustSaveDocument​(Object element)
        Description copied from interface: IDocumentProvider
        Returns whether the document provided for the given element must be saved.
        Specified by:
        mustSaveDocument in interface IDocumentProvider
        Parameters:
        element - the element, or null
        Returns:
        true if the document must be saved, and false otherwise (including the element is null)
      • canSaveDocument

        public boolean canSaveDocument​(Object element)
        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 interface IDocumentProvider
        Parameters:
        element - the element, or null
        Returns:
        true if the document can be saved, and false otherwise (including the element is null)
      • aboutToChange

        public void aboutToChange​(Object element)
        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 after 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.

        Specified by:
        aboutToChange in interface IDocumentProvider
        Parameters:
        element - the element, or null
      • changed

        public void changed​(Object element)
        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., an IResource the notification is a resource delta.
        Specified by:
        changed in interface IDocumentProvider
        Parameters:
        element - the element, or null
      • isReadOnly

        public boolean isReadOnly​(Object element)
        Description copied from interface: IDocumentProviderExtension
        Returns whether the document provider thinks that the given element is read-only. If this method returns 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.
        Specified by:
        isReadOnly in interface IDocumentProviderExtension
        Parameters:
        element - the element
        Returns:
        true if the given element is read-only, false otherwise
      • 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
        Parameters:
        element - the element
        Returns:
        true if the given element is modifiable, false otherwise
      • validateState

        public void validateState​(Object element,
                                  Object computationContext)
                           throws CoreException
        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 by isReadOnly and isModifiable. If the given element is not connected to this document provider, the effect is undefined.
        Specified by:
        validateState in interface IDocumentProviderExtension
        Parameters:
        element - the element
        computationContext - the context in which the computation is performed, e.g., a SWT shell
        Throws:
        CoreException - if validating fails
      • updateStateCache

        public void updateStateCache​(Object element)
                              throws CoreException
        Description copied from interface: IDocumentProviderExtension
        Updates the state cache for the given element. This method may change the result returned by isReadOnly and isModifiable. If the given element is not connected to this document provider, the effect is undefined.
        Specified by:
        updateStateCache in interface IDocumentProviderExtension
        Parameters:
        element - the element
        Throws:
        CoreException - if validating fails
      • synchronize

        public void synchronize​(Object element)
                         throws CoreException
        Description copied from interface: IDocumentProviderExtension
        Synchronizes the document provided for the given element with the given element. After that call getSynchronizationTimeStamp and getModificationTimeStamp return the same value.
        Specified by:
        synchronize in interface IDocumentProviderExtension
        Parameters:
        element - the element
        Throws:
        CoreException - if the synchronization could not be performed
      • 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
        Parameters:
        element - the element
        Returns:
        true if the information is in sync with the element, false otherwise
      • isNotSynchronizedException

        public boolean isNotSynchronizedException​(Object element,
                                                  CoreException ex)
        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 interface IDocumentProviderExtension5
        Parameters:
        element - the element
        ex - the core exception
        Returns:
        true iff the given core exception is exactly the exception which is thrown for a non-synchronized element
      • getEncoding

        public String getEncoding​(Object element)
        Description copied from interface: IStorageDocumentProvider
        Returns the character encoding for the given element, or null if the element is not managed by this provider.
        Specified by:
        getEncoding in interface IStorageDocumentProvider
        Parameters:
        element - the element
        Returns:
        the encoding for the given element
      • setEncoding

        public void setEncoding​(Object element,
                                String encoding)
        Description copied from interface: IStorageDocumentProvider
        Sets the encoding for the given element. If encoding is null the workbench's character encoding should be used.
        Specified by:
        setEncoding in interface IStorageDocumentProvider
        Parameters:
        element - the element
        encoding - the encoding to be used
      • 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
        Parameters:
        element - the element
        Returns:
        the content type or null
        Throws:
        CoreException - if reading or accessing the underlying store fails
      • handleCoreException

        protected void handleCoreException​(CoreException exception,
                                           String message)
        Defines the standard procedure to handle CoreExceptions. Exceptions are written to the plug-in log.
        Parameters:
        exception - the exception to be logged
        message - the message to be logged
      • isSystemFileReadOnly

        protected boolean isSystemFileReadOnly​(TextFileDocumentProvider.FileInfo info)
        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

        protected TextFileDocumentProvider.FileInfo getFileInfo​(Object element)
        Returns the file info object for the given element.
        Parameters:
        element - the element
        Returns:
        the file info object, or null if none
      • getConnectedElementsIterator

        protected Iterator<Object> getConnectedElementsIterator()
        Returns an iterator over the elements connected via this document provider.
        Returns:
        an iterator over the list of elements
      • getFileInfosIterator

        protected Iterator<TextFileDocumentProvider.FileInfo> getFileInfosIterator()
        Returns an iterator over this document provider's file info objects.
        Returns:
        the iterator over list of file info objects
      • computeSchedulingRule

        protected ISchedulingRule computeSchedulingRule​(IResource toCreateOrModify)
        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 of toCreateOrModify 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