use of org.eclipse.core.filebuffers.ITextFileBuffer in project AutoRefactor by JnRouvignac.
the class ApplyRefactoringsJob method applyRefactoring.
private void applyRefactoring(ICompilationUnit compilationUnit, AggregateASTVisitor refactoringToApply, JavaProjectOptions options, IProgressMonitor monitor) throws Exception {
final ITextFileBufferManager bufferManager = FileBuffers.getTextFileBufferManager();
final IPath path = compilationUnit.getPath();
final LocationKind locationKind = LocationKind.NORMALIZE;
try {
bufferManager.connect(path, locationKind, null);
final ITextFileBuffer textFileBuffer = bufferManager.getTextFileBuffer(path, locationKind);
if (!textFileBuffer.isSynchronized()) {
/*
* Cannot read the source when a file is not synchronized,
* Let's ignore this file to avoid problems when:
* - doing string manipulation with the source text
* - applying automated refactorings to such files
*/
environment.getLogger().error("File \"" + compilationUnit.getPath() + "\" is not synchronized with the file system." + " Automated refactorings will not be applied to it.");
return;
}
final IDocument document = textFileBuffer.getDocument();
applyRefactoring(document, compilationUnit, refactoringToApply, options, monitor);
} finally {
bufferManager.disconnect(path, locationKind, null);
}
}
use of org.eclipse.core.filebuffers.ITextFileBuffer in project che by eclipse.
the class JavadocContentAccess2 method getIFileContent.
/**
* Reads the content of the IFile.
*
* @param file the file whose content has to be read
* @return the content of the file
* @throws CoreException if the file could not be successfully connected or disconnected
*/
private static String getIFileContent(IFile file) throws CoreException {
String content = null;
ITextFileBufferManager manager = FileBuffers.getTextFileBufferManager();
IPath fullPath = file.getFullPath();
manager.connect(fullPath, LocationKind.IFILE, null);
try {
ITextFileBuffer buffer = manager.getTextFileBuffer(fullPath, LocationKind.IFILE);
if (buffer != null) {
content = buffer.getDocument().get();
}
} finally {
manager.disconnect(fullPath, LocationKind.IFILE, null);
}
return content;
}
use of org.eclipse.core.filebuffers.ITextFileBuffer in project che by eclipse.
the class CodeAssist method computeAssistProposals.
@SuppressWarnings("unchecked")
public Proposals computeAssistProposals(IJavaProject project, String fqn, int offset, List<Problem> problems) throws CoreException {
ICompilationUnit compilationUnit;
IType type = project.findType(fqn);
if (type == null) {
return null;
}
if (type.isBinary()) {
throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.CORE_EXCEPTION, "Can't calculate Quick Assist on binary file"));
} else {
compilationUnit = type.getCompilationUnit();
}
IBuffer buffer = compilationUnit.getBuffer();
ITextFileBufferManager bufferManager = FileBuffers.getTextFileBufferManager();
bufferManager.connect(compilationUnit.getPath(), LocationKind.IFILE, new NullProgressMonitor());
ITextFileBuffer textFileBuffer = bufferManager.getTextFileBuffer(compilationUnit.getPath(), LocationKind.IFILE);
IDocument document = textFileBuffer.getDocument();
TextViewer viewer = new TextViewer(document, new Point(offset, 0));
AssistContext context = new AssistContext(compilationUnit, offset, 0);
ArrayList proposals = new ArrayList<>();
JavaCorrectionProcessor.collectProposals(context, problems, true, true, proposals);
return convertProposals(offset, compilationUnit, viewer, proposals);
}
use of org.eclipse.core.filebuffers.ITextFileBuffer in project che by eclipse.
the class UndoDocumentChange method performEdits.
private UndoEdit performEdits() throws BadLocationException, MalformedTreeException {
ITextFileBufferManager fileBufferManager = FileBuffers.getTextFileBufferManager();
ITextFileBuffer fileBuffer = fileBufferManager.getTextFileBuffer(fDocument);
if (fileBuffer == null || !fileBuffer.isSynchronizationContextRequested()) {
return fUndo.apply(fDocument, TextEdit.CREATE_UNDO);
}
/** The lock for waiting for computation in the UI thread to complete. */
final Lock completionLock = new Lock();
final UndoEdit[] result = new UndoEdit[1];
final BadLocationException[] exception = new BadLocationException[1];
Runnable runnable = new Runnable() {
public void run() {
synchronized (completionLock) {
try {
result[0] = fUndo.apply(fDocument, TextEdit.CREATE_UNDO);
} catch (BadLocationException e) {
exception[0] = e;
} finally {
completionLock.fDone = true;
completionLock.notifyAll();
}
}
}
};
synchronized (completionLock) {
fileBufferManager.execute(runnable);
while (!completionLock.fDone) {
try {
completionLock.wait(500);
} catch (InterruptedException x) {
}
}
}
if (exception[0] != null) {
throw exception[0];
}
return result[0];
}
use of org.eclipse.core.filebuffers.ITextFileBuffer in project che by eclipse.
the class TextFileBufferManager method getTextFileBuffer.
//
// /*
// * @see org.eclipse.core.filebuffers.ITextFileBufferManager#getFileStoreTextFileBuffer(org.eclipse.core.filesystem.IFileStore)
// * @since 3.3
// */
// public ITextFileBuffer getFileStoreTextFileBuffer(IFileStore fileStore) {
// Assert.isLegal(fileStore != null);
// return (ITextFileBuffer)getFileStoreFileBuffer(fileStore);
// }
/*
* @see org.eclipse.core.filebuffers.ITextFileBufferManager#getTextFileBuffer(org.eclipse.jface.text.IDocument)
* @since 3.3
*/
public ITextFileBuffer getTextFileBuffer(IDocument document) {
Assert.isLegal(document != null);
Iterator iter;
synchronized (fFilesBuffers) {
iter = new ArrayList(fFilesBuffers.values()).iterator();
}
while (iter.hasNext()) {
Object buffer = iter.next();
if (buffer instanceof ITextFileBuffer) {
ITextFileBuffer textFileBuffer = (ITextFileBuffer) buffer;
if (textFileBuffer.getDocument() == document) {
if (!((AbstractFileBuffer) textFileBuffer).isDisconnected())
return textFileBuffer;
return null;
}
}
}
synchronized (fFileStoreFileBuffers) {
iter = new ArrayList(fFileStoreFileBuffers.values()).iterator();
}
while (iter.hasNext()) {
Object buffer = iter.next();
if (buffer instanceof ITextFileBuffer) {
ITextFileBuffer textFileBuffer = (ITextFileBuffer) buffer;
if (textFileBuffer.getDocument() == document) {
if (!((AbstractFileBuffer) textFileBuffer).isDisconnected())
return textFileBuffer;
}
}
}
return null;
}
Aggregations