blob: 2110dde682a3a43b0b7211e8e7f66f7694f317f8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004 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 {
public IProgressMonitor monitor;
public CancelableNameEnvironment(JavaProject project, WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException {
super(project, owner);
this.monitor = 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());
}
}
public void findPackages(char[] prefix, ISearchRequestor requestor) {
checkCanceled();
super.findPackages(prefix, requestor);
}
public NameEnvironmentAnswer findType(char[] name, char[][] packageName) {
checkCanceled();
return super.findType(name, packageName);
}
public NameEnvironmentAnswer findType(char[][] compoundTypeName) {
checkCanceled();
return super.findType(compoundTypeName);
}
public void findTypes(char[] prefix, ISearchRequestor storage) {
checkCanceled();
super.findTypes(prefix, storage);
}
}