⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 midletsearchscope.java

📁 eclipseme的最新版本的source,欢迎j2me程序员使用
💻 JAVA
字号:
/**
 * Copyright (c) 2003-2005 Craig Setera
 * All Rights Reserved.
 * Licensed under the Eclipse Public License - v 1.0
 * For more information see http://www.eclipse.org/legal/epl-v10.html
 */
package eclipseme.core.internal.utils;

import java.util.HashSet;
import java.util.Set;

import org.eclipse.core.runtime.IPath;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.search.IJavaSearchScope;
import org.eclipse.jdt.core.search.SearchEngine;

import eclipseme.core.IEclipseMECoreConstants;

/**
 * A midlet search scope built from a set of other search scopes.
 * <p />
 * Copyright (c) 2003-2005 Craig Setera<br>
 * All Rights Reserved.<br>
 * Licensed under the Eclipse Public License - v 1.0<p/>
 * <br>
 * $Revision: 1.2 $
 * <br>
 * $Date: 2005/07/07 02:37:16 $
 * <br>
 * @author Craig Setera
 */
public class MidletSearchScope extends AbstractSearchScope {
	private class MidletSuperclassExclusionScope extends AbstractSearchScope {
		/**
		 * @see org.eclipse.jdt.core.search.IJavaSearchScope#encloses(java.lang.String)
		 */
		public boolean encloses(String resourcePath) {
			boolean excluded =
				resourcePath.endsWith("java/lang/Object.class") ||
				resourcePath.endsWith("javax/microedition/midlet/MIDlet.class");
			
			return !excluded;
		}

		/**
		 * @see org.eclipse.jdt.core.search.IJavaSearchScope#encloses(org.eclipse.jdt.core.IJavaElement)
		 */
		public boolean encloses(IJavaElement element) {
			return true;
		}

		/**
		 * @see org.eclipse.jdt.core.search.IJavaSearchScope#enclosingProjectsAndJars()
		 */
		public IPath[] enclosingProjectsAndJars() {
			return new IPath[0];
		}
	}
	
	private IJavaSearchScope[] scopes;
	
	public MidletSearchScope(IJavaProject javaProject) 
		throws JavaModelException 
	{
		super();
		this.scopes = createSearchScopes(javaProject);
	}

	/**
	 * @see org.eclipse.jdt.core.search.IJavaSearchScope#encloses(java.lang.String)
	 */
	public boolean encloses(String resourcePath) {
		boolean encloses = true;
		
		for (int i = 0; encloses && i < scopes.length; i++) {
			encloses = scopes[i].encloses(resourcePath);
		}
		
		return encloses;
	}

	/**
	 * @see org.eclipse.jdt.core.search.IJavaSearchScope#encloses(org.eclipse.jdt.core.IJavaElement)
	 */
	public boolean encloses(IJavaElement element) {
		boolean encloses = true;
		
		for (int i = 0; encloses && i < scopes.length; i++) {
			encloses = scopes[i].encloses(element);
		}
		
		return encloses;
	}

	/**
	 * @see org.eclipse.jdt.core.search.IJavaSearchScope#enclosingProjectsAndJars()
	 */
	public IPath[] enclosingProjectsAndJars() {
		Set set = new HashSet();
		
		for (int i = 0; i < scopes.length; i++) {
			IJavaSearchScope scope = scopes[i];
			IPath[] scopePaths = scope.enclosingProjectsAndJars();
			for (int j = 0; j < scopePaths.length; j++) {
				set.add(scopePaths[j]);
			}
		}
		
		return (IPath[]) set.toArray(new IPath[set.size()]);
	}

	/**
	 * Create the search scopes to be used by the midlet search scope.
	 * 
	 * @param javaProject
	 * @return
	 * @throws JavaModelException
	 */
	private IJavaSearchScope[] createSearchScopes(IJavaProject javaProject) 
		throws JavaModelException 
	{
		IJavaSearchScope[] scopes = null;
		
		if ((javaProject == null) || (!javaProject.exists())) {
			IJavaSearchScope searchScope = SearchEngine.createWorkspaceScope();
			scopes = new IJavaSearchScope[] { searchScope };
		} else {
			IType type = javaProject.findType(IEclipseMECoreConstants.MIDLET_SUPERCLASS);
			IJavaElement[] elements = new IJavaElement[] { javaProject };
			
			scopes = new IJavaSearchScope[] {
					SearchEngine.createHierarchyScope(type),
					SearchEngine.createJavaSearchScope(elements),
					new MidletSuperclassExclusionScope(),
			};
		}
		
		return scopes;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -