public UnchangedElementListener(ElementInfo element) { this.element = element; if (element.fDocument instanceof IDocumentExtension4) { modificationStamp = ((IDocumentExtension4) element.fDocument).getModificationStamp(); } else { modificationStamp = IDocumentExtension4.UNKNOWN_MODIFICATION_STAMP; } }
private void performChangesInSynchronizationContext(final IDocument document, final LinkedList<UndoEdit> undoList, final boolean preview) throws BadLocationException { DocumentRewriteSession session= null; try { if (document instanceof IDocumentExtension4) session= ((IDocumentExtension4) document).startRewriteSession(DocumentRewriteSessionType.UNRESTRICTED); for (final Iterator<ComposableBufferChange> iterator= fChanges.iterator(); iterator.hasNext();) { final ComposableBufferChange change= iterator.next(); final UndoEdit edit= createTextEditProcessor(change, document, undoList != null ? TextEdit.CREATE_UNDO : TextEdit.NONE, preview).performEdits(); if (undoList != null) undoList.addFirst(edit); } } finally { if (session != null) ((IDocumentExtension4) document).stopRewriteSession(session); } }
private void performEdit(IDocument document, long oldFileValue, LinkedList<UndoEdit> editCollector, long[] oldDocValue, boolean[] setContentStampSuccess) throws MalformedTreeException, BadLocationException, CoreException { if (document instanceof IDocumentExtension4) { oldDocValue[0]= ((IDocumentExtension4)document).getModificationStamp(); } else { oldDocValue[0]= oldFileValue; } // perform the changes for (int index= 0; index < fUndos.length; index++) { UndoEdit edit= fUndos[index]; UndoEdit redo= edit.apply(document, TextEdit.CREATE_UNDO); editCollector.addFirst(redo); } if (document instanceof IDocumentExtension4 && fDocumentStamp != IDocumentExtension4.UNKNOWN_MODIFICATION_STAMP) { try { ((IDocumentExtension4)document).replace(0, 0, "", fDocumentStamp); //$NON-NLS-1$ setContentStampSuccess[0]= true; } catch (BadLocationException e) { throw wrapBadLocationException(e); } } } }
/** * Re-applies the change described by this change. */ protected void redoTextChange() { try { if (fDocumentUndoManager.fDocument instanceof IDocumentExtension4) ((IDocumentExtension4) fDocumentUndoManager.fDocument).replace(fStart, fEnd - fStart, fText, fRedoModificationStamp); else fDocumentUndoManager.fDocument.replace(fStart, fEnd - fStart, fText); } catch (BadLocationException x) { } }
private void stopSequentialRewriteMode(IDocument document) { if (document instanceof IDocumentExtension4) { IDocumentExtension4 extension= (IDocumentExtension4) document; extension.stopRewriteSession(fRewriteSession); } else if (document instanceof IDocumentExtension) { IDocumentExtension extension= (IDocumentExtension)document; extension.stopSequentialRewrite(); } }
private void startSequentialRewriteMode(IDocument document) { if (document instanceof IDocumentExtension4) { IDocumentExtension4 extension= (IDocumentExtension4) document; fRewriteSession= extension.startRewriteSession(DocumentRewriteSessionType.SEQUENTIAL); } else if (document instanceof IDocumentExtension) { IDocumentExtension extension= (IDocumentExtension) document; extension.startSequentialRewrite(false); } }
document.removeDocumentRewriteSessionListener(fDocumentRewriteSessionListener); document.addDocumentRewriteSessionListener(fDocumentRewriteSessionListener);
public void connect(IDocument document) { Assert.isTrue(fRightDocument == null || fRightDocument == document); ++fOpenConnections; if (fOpenConnections == 1) { fRightDocument= document; fRightDocument.addDocumentListener(this); if (document instanceof IDocumentExtension4) { IDocumentExtension4 ext= (IDocumentExtension4) document; ext.addDocumentRewriteSessionListener(fSessionListener); } initialize(); } }
if (fRightDocument instanceof IDocumentExtension4) { IDocumentExtension4 ext= (IDocumentExtension4) fRightDocument; ext.removeDocumentRewriteSessionListener(fSessionListener);
String initalLineDelimiter= getLineDelimiterPreference(file); if (initalLineDelimiter != null) ((IDocumentExtension4)document).setInitialLineDelimiter(initalLineDelimiter);
/** * Re-applies the change described by this change. */ protected void redoTextChange() { try { if (fDocumentUndoManager.fDocument instanceof IDocumentExtension4) ((IDocumentExtension4) fDocumentUndoManager.fDocument).replace(fStart, fEnd - fStart, fText, fRedoModificationStamp); else fDocumentUndoManager.fDocument.replace(fStart, fEnd - fStart, fText); } catch (BadLocationException x) { } }
private void stopRewriteSession(ITextFileBuffer fileBuffer, Map<String, IDocumentPartitioner> stateData) { IDocument document= fileBuffer.getDocument(); if (document instanceof IDocumentExtension4) { IDocumentExtension4 extension= (IDocumentExtension4) document; extension.stopRewriteSession(fDocumentRewriteSession); fDocumentRewriteSession= null; } else if (stateData != null) TextUtilities.addDocumentPartitioners(document, stateData); }
private Map<String, IDocumentPartitioner> startRewriteSession(ITextFileBuffer fileBuffer) { Map<String, IDocumentPartitioner> stateData= null; IDocument document= fileBuffer.getDocument(); if (document instanceof IDocumentExtension4) { IDocumentExtension4 extension= (IDocumentExtension4) document; fDocumentRewriteSession= extension.startRewriteSession(getDocumentRewriteSessionType()); } else stateData= TextUtilities.removeDocumentPartitioners(document); return stateData; }
@Override protected void inputChanged(Object newInput, Object oldInput) { IDocument oldDocument= (IDocument) oldInput; if (oldDocument != null) { if (fMarkPosition != null && !fMarkPosition.isDeleted()) oldDocument.removePosition(fMarkPosition); try { oldDocument.removePositionUpdater(fMarkPositionUpdater); oldDocument.removePositionCategory(MARK_POSITION_CATEGORY); } catch (BadPositionCategoryException e) { } } fMarkPosition= null; if (oldDocument instanceof IDocumentExtension4) { IDocumentExtension4 document= (IDocumentExtension4) oldDocument; document.removeDocumentRewriteSessionListener(fDocumentRewriteSessionListener); } super.inputChanged(newInput, oldInput); if (newInput instanceof IDocumentExtension4) { IDocumentExtension4 document= (IDocumentExtension4) newInput; document.addDocumentRewriteSessionListener(fDocumentRewriteSessionListener); } IDocument newDocument= (IDocument) newInput; if (newDocument != null) { newDocument.addPositionCategory(MARK_POSITION_CATEGORY); newDocument.addPositionUpdater(fMarkPositionUpdater); } }
@Override public void connect(IDocument document) { Assert.isTrue(fRightDocument == null || fRightDocument == document); ++fOpenConnections; if (fOpenConnections == 1) { fRightDocument= document; fRightDocument.addDocumentListener(this); if (document instanceof IDocumentExtension4) { IDocumentExtension4 ext= (IDocumentExtension4) document; ext.addDocumentRewriteSessionListener(fSessionListener); } initialize(); } }
if (fRightDocument instanceof IDocumentExtension4) { IDocumentExtension4 ext= (IDocumentExtension4) fRightDocument; ext.removeDocumentRewriteSessionListener(fSessionListener);
String initalLineDelimiter= getLineDelimiterPreference(location, locationKind); if (initalLineDelimiter != null) ((IDocumentExtension4)document).setInitialLineDelimiter(initalLineDelimiter);
private void performChangesInSynchronizationContext(final IDocument document, final LinkedList<UndoEdit> undoList, final boolean preview) throws BadLocationException { DocumentRewriteSession session= null; try { if (document instanceof IDocumentExtension4) session= ((IDocumentExtension4) document).startRewriteSession(DocumentRewriteSessionType.UNRESTRICTED); for (final Iterator<ComposableBufferChange> iterator= fChanges.iterator(); iterator.hasNext();) { final ComposableBufferChange change= iterator.next(); final UndoEdit edit= createTextEditProcessor(change, document, undoList != null ? TextEdit.CREATE_UNDO : TextEdit.NONE, preview).performEdits(); if (undoList != null) undoList.addFirst(edit); } } finally { if (session != null) ((IDocumentExtension4) document).stopRewriteSession(session); } }
public static ContentStamp get(IFile file, IDocument document) { if (document instanceof IDocumentExtension4) { long stamp= ((IDocumentExtension4)document).getModificationStamp(); if (stamp == IDocumentExtension4.UNKNOWN_MODIFICATION_STAMP) return NULL_CONTENT_STAMP; return ContentStampImpl.createDocumentStamp(stamp, file.getModificationStamp()); } long stamp= file.getModificationStamp(); if (stamp == IResource.NULL_STAMP) return NULL_CONTENT_STAMP; return ContentStampImpl.createFileStamp(stamp); }
private void performEdit(IDocument document, long oldFileValue, LinkedList<UndoEdit> editCollector, long[] oldDocValue, boolean[] setContentStampSuccess) throws MalformedTreeException, BadLocationException, CoreException { if (document instanceof IDocumentExtension4) { oldDocValue[0]= ((IDocumentExtension4)document).getModificationStamp(); } else { oldDocValue[0]= oldFileValue; } // perform the changes for (int index= 0; index < fUndos.length; index++) { UndoEdit edit= fUndos[index]; UndoEdit redo= edit.apply(document, TextEdit.CREATE_UNDO); editCollector.addFirst(redo); } if (document instanceof IDocumentExtension4 && fDocumentStamp != IDocumentExtension4.UNKNOWN_MODIFICATION_STAMP) { try { ((IDocumentExtension4)document).replace(0, 0, "", fDocumentStamp); //$NON-NLS-1$ setContentStampSuccess[0]= true; } catch (BadLocationException e) { throw wrapBadLocationException(e); } } } }