Search in sources :

Example 11 with ITextFileBuffer

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);
    }
}
Also used : IPath(org.eclipse.core.runtime.IPath) LocationKind(org.eclipse.core.filebuffers.LocationKind) ITextFileBufferManager(org.eclipse.core.filebuffers.ITextFileBufferManager) ITextFileBuffer(org.eclipse.core.filebuffers.ITextFileBuffer) IDocument(org.eclipse.jface.text.IDocument)

Example 12 with ITextFileBuffer

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;
}
Also used : IPath(org.eclipse.core.runtime.IPath) ITextFileBufferManager(org.eclipse.core.filebuffers.ITextFileBufferManager) ITextFileBuffer(org.eclipse.core.filebuffers.ITextFileBuffer)

Example 13 with ITextFileBuffer

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);
}
Also used : ICompilationUnit(org.eclipse.jdt.core.ICompilationUnit) NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) JavaModelException(org.eclipse.jdt.core.JavaModelException) ITextFileBufferManager(org.eclipse.core.filebuffers.ITextFileBufferManager) AssistContext(org.eclipse.jdt.internal.ui.text.correction.AssistContext) ArrayList(java.util.ArrayList) JavaModelStatus(org.eclipse.jdt.internal.core.JavaModelStatus) Point(org.eclipse.swt.graphics.Point) IBuffer(org.eclipse.jdt.core.IBuffer) IType(org.eclipse.jdt.core.IType) TextViewer(org.eclipse.che.jdt.javaeditor.TextViewer) ITextFileBuffer(org.eclipse.core.filebuffers.ITextFileBuffer) IDocument(org.eclipse.jface.text.IDocument)

Example 14 with ITextFileBuffer

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];
}
Also used : ITextFileBufferManager(org.eclipse.core.filebuffers.ITextFileBufferManager) ITextFileBuffer(org.eclipse.core.filebuffers.ITextFileBuffer) UndoEdit(org.eclipse.text.edits.UndoEdit) BadLocationException(org.eclipse.jface.text.BadLocationException)

Example 15 with ITextFileBuffer

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;
}
Also used : Iterator(java.util.Iterator) ArrayList(java.util.ArrayList) ITextFileBuffer(org.eclipse.core.filebuffers.ITextFileBuffer)

Aggregations

ITextFileBuffer (org.eclipse.core.filebuffers.ITextFileBuffer)20 ITextFileBufferManager (org.eclipse.core.filebuffers.ITextFileBufferManager)10 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)8 BadLocationException (org.eclipse.jface.text.BadLocationException)6 IDocument (org.eclipse.jface.text.IDocument)6 CoreException (org.eclipse.core.runtime.CoreException)5 IPath (org.eclipse.core.runtime.IPath)4 SubProgressMonitor (org.eclipse.core.runtime.SubProgressMonitor)4 UndoEdit (org.eclipse.text.edits.UndoEdit)4 IStatus (org.eclipse.core.runtime.IStatus)3 Status (org.eclipse.core.runtime.Status)3 ArrayList (java.util.ArrayList)2 IFile (org.eclipse.core.resources.IFile)2 Iterator (java.util.Iterator)1 LinkedList (java.util.LinkedList)1 ResourceChangedEvent (org.eclipse.che.jdt.core.resources.ResourceChangedEvent)1 TextViewer (org.eclipse.che.jdt.javaeditor.TextViewer)1 LocationKind (org.eclipse.core.filebuffers.LocationKind)1 Path (org.eclipse.core.runtime.Path)1 IBuffer (org.eclipse.jdt.core.IBuffer)1