blob: ba2fcfc3705cdde569463ceeb2af0360a2258834 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2016 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.internal.core;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.WorkingCopyOwner;
import org.eclipse.jdt.internal.codeassist.ISearchRequestor;
import org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
import org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
public class CancelableNameEnvironment extends SearchableEnvironment implements INameEnvironmentWithProgress {
private IProgressMonitor monitor;
public CancelableNameEnvironment(JavaProject project, WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException {
this(project, owner, monitor, false);
}
public CancelableNameEnvironment(JavaProject project, WorkingCopyOwner owner, IProgressMonitor monitor, boolean excludeTestCode) throws JavaModelException {
super(project, owner, excludeTestCode);
setMonitor(monitor);
}
private void checkCanceled() {
if (this.monitor != null && this.monitor.isCanceled()) {
if (NameLookup.VERBOSE)
System.out.println(Thread.currentThread() + " CANCELLING LOOKUP "); //$NON-NLS-1$
throw new AbortCompilation(true/*silent*/, new OperationCanceledException());
}
}
@Override
public void findPackages(char[] prefix, ISearchRequestor requestor) {
checkCanceled();
super.findPackages(prefix, requestor);
}
@Override
public NameEnvironmentAnswer findType(char[] name, char[][] packageName) {
checkCanceled();
return super.findType(name, packageName);
}
@Override
public NameEnvironmentAnswer findType(char[][] compoundTypeName) {
checkCanceled();
return super.findType(compoundTypeName);
}
@Override
public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName, boolean searchWithSecondaryTypes, char[] moduleName) {
return findType(typeName, packageName, moduleName);
}
@Override
public void findTypes(char[] prefix, boolean findMembers, boolean camelCaseMatch, int searchFor, ISearchRequestor storage, IProgressMonitor progressMonitor) {
checkCanceled();
super.findTypes(prefix, findMembers, camelCaseMatch, searchFor, storage, progressMonitor);
}
@Override
public void setMonitor(IProgressMonitor monitor) {
this.monitor = monitor;
}
}