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

📄 filteringclasspathentryvisitor.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 org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.launching.JavaRuntime;

import eclipseme.core.internal.J2MEClasspathContainer;
import eclipseme.core.nature.J2MENature;

/**
 * An IClasspathEntryVisitor that filters out the J2ME classpath
 * container and the base JRE containers and libraries.
 * <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.5 $
 * <br>
 * $Date: 2005/12/02 02:22:11 $
 * <br>
 * @author Craig Setera
 */
public abstract class FilteringClasspathEntryVisitor
	extends AbstractClasspathEntryVisitor 
{
	private IClasspathEntry containerEntry;
	
	/**
	 * @see eclipseme.core.internal.utils.IClasspathEntryVisitor#visitContainerBegin(IClasspathEntry, org.eclipse.jdt.core.IJavaProject, IPath, org.eclipse.core.runtime.IProgressMonitor)
	 */
	public boolean visitContainerBegin(
		IClasspathEntry entry,
		IJavaProject javaProject, 
		IPath containerPath, 
		IProgressMonitor monitor)
			throws CoreException 
	{
		String firstSegment = containerPath.segment(0);
		
		boolean traverse =
			!firstSegment.equals(J2MEClasspathContainer.J2ME_CONTAINER) &&
			!firstSegment.equals(JavaRuntime.JRE_CONTAINER);
		
		if (traverse) {
			containerEntry = entry;
		}
		
		return traverse;
	}

	/**
	 * @see eclipseme.core.internal.utils.AbstractClasspathEntryVisitor#visitContainerEnd(org.eclipse.jdt.core.IClasspathEntry, org.eclipse.jdt.core.IJavaProject, org.eclipse.core.runtime.IPath, org.eclipse.core.runtime.IProgressMonitor)
	 */
	public void visitContainerEnd(
		IClasspathEntry entry, 
		IJavaProject javaProject, 
		IPath containerPath, 
		IProgressMonitor monitor) 
			throws CoreException 
	{
		containerPath = null;
	}

	/**
	 * @see eclipseme.core.internal.utils.IClasspathEntryVisitor#visitProject(IClasspathEntry, org.eclipse.jdt.core.IJavaProject, org.eclipse.jdt.core.IJavaProject, org.eclipse.core.runtime.IProgressMonitor)
	 */
	public boolean visitProject(
		IClasspathEntry entry,
		IJavaProject javaProject, 
		IJavaProject classpathProject, IProgressMonitor monitor)
			throws CoreException 
	{
		return !J2MENature.hasJ2MENature(classpathProject.getProject());
	}
	
	/**
	 * @see eclipseme.core.internal.utils.IClasspathEntryVisitor#visitVariable(IClasspathEntry, org.eclipse.jdt.core.IJavaProject, java.lang.String, org.eclipse.core.runtime.IProgressMonitor)
	 */
	public boolean visitVariable(
		IClasspathEntry entry, 
		IJavaProject javaProject,
		String variableName, IProgressMonitor monitor) 
			throws CoreException 
	{
		return !variableName.equals(JavaRuntime.JRELIB_VARIABLE);
	}
	
	/**
	 * Return a boolean indicating whether the specified library
	 * classpath entry is exported either directly or via a
	 * classpath container.
	 * 
	 * @param entry
	 * @return
	 */
	protected boolean isLibraryExported(IClasspathEntry entry) 
	{
		return
			entry.isExported() ||
			((containerEntry != null) && containerEntry.isExported());
	}
}

⌨️ 快捷键说明

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