Class TextFileBuffer
- All Implemented Interfaces:
AutoCloseable,IBuffer,ISnapshotProvider,IReferenceCountable
IBuffer backed by an ITextFileBuffer.
An instance of this class is safe for use by multiple threads, provided that
the underlying ITextFileBuffer and its document are thread-safe.
This class has an optional dependency on IFile and can safely be used
even when org.eclipse.core.resources bundle is not available.
-
Constructor Summary
ConstructorsConstructorDescriptionTextFileBuffer(ICoreTextFileBufferProvider provider, org.eclipse.core.runtime.IProgressMonitor monitor) Creates a new text file buffer instance and connects it to an underlyingITextFileBuffervia the given provider. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddListener(IBufferListener listener) Adds the given listener to this buffer.voidaddRef()Spawns a new independent ownership of this object.applyChange(IBufferChange change, org.eclipse.core.runtime.IProgressMonitor monitor) Applies the given change to this buffer.static TextFileBufferforFile(org.eclipse.core.resources.IFile file) Returns aTextFileBufferfor the given file resource.static TextFileBufferforFileStore(org.eclipse.core.filesystem.IFileStore fileStore) Returns aTextFileBufferfor the given file store.static TextFileBufferforLocation(org.eclipse.core.runtime.IPath location, org.eclipse.core.filebuffers.LocationKind locationKind) Returns aTextFileBufferfor the given file location.org.eclipse.jface.text.source.IAnnotationModelReturns the annotation model of this buffer, if any.Returns the provider of the underlyingITextFileBufferfor this buffer.org.eclipse.jface.text.IDocumentReturns the underlying document of this buffer.Returns the current snapshot of this buffer.intReturns a bit-mask describing the listener methods supported by this buffer.booleanisDirty()Returns whether this buffer has been modified since the last time it was opened or saved.voidrelease()Relinquishes an independent ownership of this object.voidremoveListener(IBufferListener listener) Removes the given listener from this buffer.voidSaves this buffer.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.eclipse.handly.util.IReferenceCountable
close
-
Constructor Details
-
TextFileBuffer
public TextFileBuffer(ICoreTextFileBufferProvider provider, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException Creates a new text file buffer instance and connects it to an underlyingITextFileBuffervia the given provider.It is the client responsibility to
releasethe created buffer after it is no longer needed.- Parameters:
provider- a provider of the underlyingITextFileBuffer(notnull)monitor- a progress monitor, ornullif progress reporting is not desired. The caller must not rely onIProgressMonitor.done()having been called by the receiver. The progress monitor is only valid for the duration of the invocation of this constructor- Throws:
org.eclipse.core.runtime.CoreException- if the buffer could not be createdorg.eclipse.core.runtime.OperationCanceledException- if this constructor is canceled
-
-
Method Details
-
forLocation
public static TextFileBuffer forLocation(org.eclipse.core.runtime.IPath location, org.eclipse.core.filebuffers.LocationKind locationKind) throws org.eclipse.core.runtime.CoreException Returns aTextFileBufferfor the given file location.It is the client responsibility to
releasethe buffer after it is no longer needed.- Parameters:
location- notnulllocationKind- notnull- Returns:
- a buffer for the given file location (never
null) - Throws:
org.eclipse.core.runtime.CoreException- if the buffer could not be created
-
forFileStore
public static TextFileBuffer forFileStore(org.eclipse.core.filesystem.IFileStore fileStore) throws org.eclipse.core.runtime.CoreException Returns aTextFileBufferfor the given file store.It is the client responsibility to
releasethe buffer after it is no longer needed.- Parameters:
fileStore- notnull- Returns:
- a buffer for the given file store (never
null) - Throws:
org.eclipse.core.runtime.CoreException- if the buffer could not be created
-
forFile
public static TextFileBuffer forFile(org.eclipse.core.resources.IFile file) throws org.eclipse.core.runtime.CoreException Returns aTextFileBufferfor the given file resource.It is the client responsibility to
releasethe buffer after it is no longer needed.- Parameters:
file- notnull- Returns:
- a buffer for the given file resource (never
null) - Throws:
org.eclipse.core.runtime.CoreException- if the buffer could not be created
-
getCoreTextFileBufferProvider
Returns the provider of the underlyingITextFileBufferfor this buffer.- Returns:
- the underlying buffer's provider (never
null) - Throws:
IllegalStateException- if this buffer is no longer accessible
-
getDocument
public org.eclipse.jface.text.IDocument getDocument()Description copied from interface:IBufferReturns the underlying document of this buffer. The relationship between a buffer and its document does not change over the lifetime of the buffer.- Specified by:
getDocumentin interfaceIBuffer- Returns:
- the buffer's underlying document (never
null)
-
getAnnotationModel
public org.eclipse.jface.text.source.IAnnotationModel getAnnotationModel()Description copied from interface:IBufferReturns the annotation model of this buffer, if any.- Specified by:
getAnnotationModelin interfaceIBuffer- Returns:
- the buffer's annotation model, or
nullif none
-
getSnapshot
Description copied from interface:IBufferReturns the current snapshot of this buffer. The returned snapshot may immediately become stale or expire.Note that it is possible to obtain a
non-expiringsnapshot from the buffer, although protractedly holding on non-expiring snapshots is not recommended as they may potentially consume large amount of space.- Specified by:
getSnapshotin interfaceIBuffer- Specified by:
getSnapshotin interfaceISnapshotProvider- Returns:
- the buffer's current snapshot (never
null)
-
applyChange
public IBufferChange applyChange(IBufferChange change, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException Description copied from interface:IBufferApplies the given change to this buffer.Note that an update conflict may occur if the buffer's contents have changed since the inception of the snapshot on which the change is based. In that case, a
StaleSnapshotExceptionis thrown.- Specified by:
applyChangein interfaceIBuffer- Parameters:
change- a buffer change (notnull)monitor- a progress monitor, ornullif progress reporting is not desired. The caller must not rely onIProgressMonitor.done()having been called by the receiver- Returns:
- undo change, if requested by the change. Otherwise,
null - Throws:
org.eclipse.core.runtime.CoreException- if the change's edit tree is not in a valid state, or if one of the edits in the tree could not be executed, or if save is requested by the change but the buffer could not be saved
-
save
public void save(IContext context, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException Description copied from interface:IBufferSaves this buffer. It is up to the implementors of this method to decide what saving means. Typically, the contents of the underlying resource is changed to the contents of the buffer.- Specified by:
savein interfaceIBuffer- Parameters:
context- the operation context (notnull)monitor- a progress monitor, ornullif progress reporting is not desired. The caller must not rely onIProgressMonitor.done()having been called by the receiver- Throws:
org.eclipse.core.runtime.CoreException- if the buffer could not be saved
-
isDirty
public boolean isDirty()Description copied from interface:IBufferReturns whether this buffer has been modified since the last time it was opened or saved. -
getSupportedListenerMethods
public int getSupportedListenerMethods()Description copied from interface:IBufferReturns a bit-mask describing the listener methods supported by this buffer. The buffer will never invoke a listener method it does not support.- Specified by:
getSupportedListenerMethodsin interfaceIBuffer- Returns:
- a bit-mask describing the supported listener methods
- See Also:
-
addListener
Description copied from interface:IBufferAdds the given listener to this buffer. Has no effect if the same listener is already registered.- Specified by:
addListenerin interfaceIBuffer- Parameters:
listener- notnull
-
removeListener
Description copied from interface:IBufferRemoves the given listener from this buffer. Has no effect if the same listener was not already registered.- Specified by:
removeListenerin interfaceIBuffer- Parameters:
listener- notnull
-
addRef
public void addRef()Description copied from interface:IReferenceCountableSpawns a new independent ownership of this object. Each successful call toaddRef()must ultimately be followed by exactly one call toIReferenceCountable.release().- Specified by:
addRefin interfaceIBuffer- Specified by:
addRefin interfaceIReferenceCountable- Specified by:
addRefin interfaceISnapshotProvider
-
release
public void release()Description copied from interface:IReferenceCountableRelinquishes an independent ownership of this object. Each independent ownership of the object must ultimately end with exactly one call to this method.- Specified by:
releasein interfaceIBuffer- Specified by:
releasein interfaceIReferenceCountable- Specified by:
releasein interfaceISnapshotProvider- See Also:
-