/******************************************************************************* * Copyright (c) 2000, 2009 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.core.search; import org.eclipse.core.runtime.IPath; import org.eclipse.jdt.core.IJavaElement; /** * An <code>IJavaSearchScope</code> defines where search result should be found by a * <code>SearchEngine</code>. Clients must pass an instance of this interface to the * <code>search(...)</code> methods. Such an instance can be created using the following factory * methods on <code>SearchEngine</code>: <code>createHierarchyScope(IType)</code>, * <code>createJavaSearchScope(IResource[])</code>, <code>createWorkspaceScope()</code>, or clients * may choose to implement this interface. */ public interface IJavaSearchScope { /** * This constant defines the separator of the resourcePath string of the * <code>encloses(String)</code> method. If present in the string, it separates the path to the * jar file from the path to the .class file in the jar. */ String JAR_FILE_ENTRY_SEPARATOR= "|"; //$NON-NLS-1$ /** * Include type constant (bit mask) indicating that source folders should be considered in the * search scope. * * @since 3.0 */ int SOURCES= 1; /** * Include type constant (bit mask) indicating that application libraries should be considered * in the search scope. * * @since 3.0 */ int APPLICATION_LIBRARIES= 2; /** * Include type constant (bit mask) indicating that system libraries should be considered in the * search scope. * * @since 3.0 */ int SYSTEM_LIBRARIES= 4; /** * Include type constant (bit mask) indicating that referenced projects should be considered in * the search scope. * * @since 3.0 */ int REFERENCED_PROJECTS= 8; /** * Checks whether the resource at the given path is enclosed by this scope. * * @param resourcePath if the resource is contained in a JAR file, the path is composed of 2 * paths separated by <code>JAR_FILE_ENTRY_SEPARATOR</code>: the first path is the * full OS path to the JAR (if it is an external JAR), or the workspace relative * <code>IPath</code> to the JAR (if it is an internal JAR), the second path is the * path to the resource inside the JAR. * @return whether the resource is enclosed by this scope */ public boolean encloses(String resourcePath); /** * Checks whether this scope encloses the given element. * * @param element the given element * @return <code>true</code> if the element is in this scope */ public boolean encloses(IJavaElement element); /** * Returns the paths to the enclosing projects and JARs for this search scope. * <ul> * <li>If the path is a project path, this is the full path of the project (see * <code>IResource.getFullPath()</code>). For example, /MyProject</li> * <li>If the path is a JAR path and this JAR is internal to the workspace, this is the full * path of the JAR file (see <code>IResource.getFullPath()</code>). For example, * /MyProject/mylib.jar</li> * <li>If the path is a JAR path and this JAR is external to the workspace, this is the full OS * path to the JAR file on the file system. For example, d:\libs\mylib.jar</li> * </ul> * * @return an array of paths to the enclosing projects and JARS. */ IPath[] enclosingProjectsAndJars(); /** * Returns whether this scope contains any <code>.class</code> files (either in folders or * within JARs). * * @return whether this scope contains any <code>.class</code> files * @deprecated Use * {@link org.eclipse.jdt.core.search.SearchEngine#createJavaSearchScope(IJavaElement[])} * with the package fragment roots that correspond to the binaries instead. */ boolean includesBinaries(); /** * Returns whether this scope includes classpaths defined by the projects of the resources of * this search scope. * * @return whether this scope includes classpaths * @deprecated Use * {@link org.eclipse.jdt.core.search.SearchEngine#createJavaSearchScope(IJavaElement[])} * with a Java project instead. */ boolean includesClasspaths(); /** * Sets whether this scope contains any <code>.class</code> files (either in folders or within * JARs). * * @param includesBinaries whether this scope contains any <code>.class</code> files * @deprecated Use * {@link org.eclipse.jdt.core.search.SearchEngine#createJavaSearchScope(IJavaElement[])} * with the package fragment roots that correspond to the binaries instead. */ public void setIncludesBinaries(boolean includesBinaries); /** * Sets whether this scope includes the classpaths defined by the projects of the resources of * this search scope. * * @param includesClasspaths whether this scope includes classpaths * @deprecated Use * {@link org.eclipse.jdt.core.search.SearchEngine#createJavaSearchScope(IJavaElement[])} * with a Java project instead. */ public void setIncludesClasspaths(boolean includesClasspaths); }