Copyright (c) 2004, 2016 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation
/******************************************************************************* * Copyright (c) 2004, 2016 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * 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; } }