public class HandlyXtextDocument extends org.eclipse.xtext.ui.editor.model.XtextDocument implements IHandlyXtextDocument
XtextDocument
for Handly reconciling story.
Implements IHandlyXtextDocument
.
Bind this class in place of the default XtextDocument
if you
have HandlyXtextEditorCallback
configured. Note that if you bind
this class, you should also bind other classes pertaining to Handly/Xtext
integration:
public Class<? extends XtextDocument> bindXtextDocument() { return HandlyXtextDocument.class; } public Class<? extends IReconciler> bindIReconciler() { return HandlyXtextReconciler.class; } public Class<? extends DirtyStateEditorSupport> bindDirtyStateEditorSupport() { return HandlyDirtyStateEditorSupport.class; // or its subclass }
org.eclipse.xtext.ui.editor.model.XtextDocument.XtextDocumentLocker
IHandlyXtextDocument.IUndoableUnitOfWork<R,P>
Constructor and Description |
---|
HandlyXtextDocument(org.eclipse.xtext.ui.editor.model.DocumentTokenSource tokenSource,
org.eclipse.xtext.ui.editor.model.edit.ITextEditComposer composer) |
Modifier and Type | Method and Description |
---|---|
IDocumentChange |
applyChange(IDocumentChange change)
Applies the given change to this document.
|
void |
disposeInput() |
ISnapshot |
getReconciledSnapshot()
Returns the document snapshot that the document model was most recently
reconciled with. |
<T> T |
modify(org.eclipse.xtext.util.concurrent.IUnitOfWork<T,org.eclipse.xtext.resource.XtextResource> work)
Executes the given unit of work under the document's write lock.
|
boolean |
needsReconciling()
Returns whether the document model is out of sync
with the document text and needs to be
reconciled . |
void |
reconcile(boolean force,
org.eclipse.core.runtime.IProgressMonitor monitor)
Reconciles the document model so it is up to date again.
|
void |
setInput(org.eclipse.xtext.resource.XtextResource resource) |
addModelListener, addPosition, addPosition, addXtextDocumentContentObserver, checkAndUpdateAnnotations, createDocumentLocker, ensureThatStateIsNotReturned, fireDocumentChanged, fireRewriteSessionChanged, getAdapter, getCancelIndicator, getLastDamage, getPositions, getPositions, getResourceLock, getResourceURI, getTokens, getValidationJob, hasPendingUpdates, internalModify, notifyModelListeners, priorityReadOnly, readOnly, removeModelListener, removePosition, removePosition, removeXtextDocumentContentObserver, setOutdated, setValidationJob, updateContentBeforeRead
acceptPostNotificationReplaces, addDocumentListener, addDocumentPartitioningListener, addDocumentRewriteSessionListener, addPositionCategory, addPositionUpdater, addPrenotifiedDocumentListener, checkStateOfPartitioner, completeInitialization, computeIndexInCategory, computeIndexInPositionList, computeIndexInPositionList, computeNumberOfLines, computePartitioning, computePartitioning, containsPosition, containsPositionCategory, doFireDocumentChanged, doFireDocumentChanged, doFireDocumentChanged2, fireDocumentAboutToBeChanged, fireDocumentPartitioningChanged, fireDocumentPartitioningChanged, fireDocumentPartitioningChanged, get, get, getActiveRewriteSession, getChar, getContentType, getContentType, getDefaultLineDelimiter, getDocumentListeners, getDocumentManagedPositions, getDocumentPartitioner, getDocumentPartitioner, getDocumentPartitioningListeners, getLegalContentTypes, getLegalContentTypes, getLegalLineDelimiters, getLength, getLineDelimiter, getLineInformation, getLineInformationOfOffset, getLineLength, getLineOffset, getLineOfOffset, getModificationStamp, getNumberOfLines, getNumberOfLines, getPartition, getPartition, getPartitionings, getPositionCategories, getPositionUpdaters, getStore, getTracker, ignorePostNotificationReplaces, insertPositionUpdater, registerPostNotificationReplace, removeDocumentListener, removeDocumentPartitioningListener, removeDocumentRewriteSessionListener, removePositionCategory, removePositionUpdater, removePrenotifiedDocumentListener, repairLineInformation, replace, replace, resumeListenerNotification, resumePostNotificationProcessing, search, set, set, setDocumentPartitioner, setDocumentPartitioner, setInitialLineDelimiter, setLineTracker, setTextStore, startRewriteSession, startRewriteSessionOnPartitioners, startSequentialRewrite, stopListenerNotification, stopPostNotificationProcessing, stopRewriteSession, stopRewriteSessionOnPartitioners, stopSequentialRewrite, updateDocumentStructures, updatePositions
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
readOnly
addModelListener, addXtextDocumentContentObserver, getAdapter, removeModelListener, removeXtextDocumentContentObserver
addDocumentListener, addDocumentPartitioningListener, addPosition, addPosition, addPositionCategory, addPositionUpdater, addPrenotifiedDocumentListener, computeIndexInCategory, computeNumberOfLines, computePartitioning, containsPosition, containsPositionCategory, get, get, getChar, getContentType, getDocumentPartitioner, getLegalContentTypes, getLegalLineDelimiters, getLength, getLineDelimiter, getLineInformation, getLineInformationOfOffset, getLineLength, getLineOffset, getLineOfOffset, getNumberOfLines, getNumberOfLines, getPartition, getPositionCategories, getPositions, getPositionUpdaters, insertPositionUpdater, removeDocumentListener, removeDocumentPartitioningListener, removePosition, removePosition, removePositionCategory, removePositionUpdater, removePrenotifiedDocumentListener, replace, search, set, setDocumentPartitioner
computePartitioning, getContentType, getDocumentPartitioner, getLegalContentTypes, getPartition, getPartitionings, setDocumentPartitioner
tryReadOnly, tryReadOnly, tryReadOnly
@Inject public HandlyXtextDocument(org.eclipse.xtext.ui.editor.model.DocumentTokenSource tokenSource, org.eclipse.xtext.ui.editor.model.edit.ITextEditComposer composer)
public void setInput(org.eclipse.xtext.resource.XtextResource resource)
setInput
in class org.eclipse.xtext.ui.editor.model.XtextDocument
public void disposeInput()
disposeInput
in class org.eclipse.xtext.ui.editor.model.XtextDocument
public ISnapshot getReconciledSnapshot()
IHandlyXtextDocument
reconciled
with. Returns
null
if this document has no Xtext resource (i.e., either
the resource has yet to be set or it has already been disposed).getReconciledSnapshot
in interface IHandlyXtextDocument
null
public boolean needsReconciling()
IHandlyXtextDocument
reconciled
.needsReconciling
in interface IHandlyXtextDocument
true
if reconciling is needed,
and false
otherwisepublic void reconcile(boolean force, org.eclipse.core.runtime.IProgressMonitor monitor)
IHandlyXtextDocument
Note that a document model with cross-document references may become
out of date even when it is in sync with the document text.
The force
parameter controls whether the document model
has to be reconciled even if it is already in sync with the document text.
reconcile
in interface IHandlyXtextDocument
force
- controls whether the document model has to be reconciled
even if it is already in sync with the the document textmonitor
- a progress monitor, or null
if progress reporting is not desired. The caller must not rely on
IProgressMonitor.done()
having been called by the receiverpublic <T> T modify(org.eclipse.xtext.util.concurrent.IUnitOfWork<T,org.eclipse.xtext.resource.XtextResource> work)
IHandlyXtextDocument
The document text is automatically updated so it is reconciled with
the resource modifications performed by the unit of work. Units of work
may be nested; changes are only applied to the document after successful
completion of the top-level modification, i.e., when all work is done.
If the top-level unit of work is undoable
,
it will be informed
of an undo change that can be applied
to the document to revert any modifications
made by the whole transaction.
Before the top-level unit of work is run, the Xtext resource is
guaranteed to be based on the most recently reconciled snapshot
. That snapshot is regarded as the base
snapshot for the whole transaction, i.e., if it turns out to be stale
when changes are to be applied to the document, this method will throw a
StaleSnapshotException
. Usually, there is no need for clients
to invoke reconcile
before calling this method to ensure a fresh snapshot; reconciling
happens automatically before the top-level unit of work is run.
modify
in interface IHandlyXtextDocument
modify
in interface org.eclipse.xtext.util.concurrent.IWriteAccess<org.eclipse.xtext.resource.XtextResource>
modify
in class org.eclipse.xtext.ui.editor.model.XtextDocument
work
- a modifying unit of work (not null
)null
).
Must not contain any references to the Xtext resource or its contents
(semantic objects or parse tree nodes)public IDocumentChange applyChange(IDocumentChange change) throws org.eclipse.jface.text.BadLocationException
IHandlyXtextDocument
Note that an update conflict may occur if the document text has changed
since the inception of the snapshot on which the given change is based.
In that case, a StaleSnapshotException
is thrown.
applyChange
in interface IHandlyXtextDocument
change
- a document change (not null
)null
org.eclipse.jface.text.BadLocationException
- if one of the edits in the change's
edit tree could not be executedCopyright (c) 2014, 2018 1C-Soft LLC and others. Made available under the Eclipse Public License 2.0