uibuilder.java

来自「基于eclipse的工具开发代码」· Java 代码 · 共 122 行

JAVA
122
字号
package com.cownew.uidesigner.builder;import java.util.Map;import org.eclipse.core.resources.IFile;import org.eclipse.core.resources.IProject;import org.eclipse.core.resources.IResource;import org.eclipse.core.resources.IResourceDelta;import org.eclipse.core.resources.IResourceDeltaVisitor;import org.eclipse.core.resources.IResourceVisitor;import org.eclipse.core.resources.IncrementalProjectBuilder;import org.eclipse.core.runtime.CoreException;import org.eclipse.core.runtime.IProgressMonitor;public class UIBuilder extends IncrementalProjectBuilder{	// BuilderId比较奇怪,它是由“插件id”+“.”+“构建器id”组成的	public static final String BUILDER_ID = "com.cownew.uidesigner.UIBuilder";	protected IProject[] build(int kind, Map args, IProgressMonitor monitor)			throws CoreException	{		if (kind == FULL_BUILD)		{			fullBuild(monitor);		} else		{			IResourceDelta delta = getDelta(getProject());			if (delta == null)			{				fullBuild(monitor);			} else			{				incrementalBuild(delta, monitor);			}		}		return null;	}	private void fullBuild(final IProgressMonitor monitor) throws CoreException	{		getProject().accept(new UIFullBuildVisitor(monitor));	}	private void incrementalBuild(IResourceDelta delta, IProgressMonitor monitor)			throws CoreException	{		delta.accept(new UIDeltaVisitor(monitor));	}}class UIDeltaVisitor implements IResourceDeltaVisitor{	private IProgressMonitor monitor;	public UIDeltaVisitor(IProgressMonitor monitor)	{		this.monitor = monitor;	}	public boolean visit(IResourceDelta delta) throws CoreException	{		IResource resource = delta.getResource();		if (!(resource instanceof IFile))		{			// 返回值表示是否继续遍历			return true;		}		String ext = resource.getFileExtension();		if (!ext.equalsIgnoreCase("ui"))		{			return true;		}		IFile file = (IFile) resource;		switch (delta.getKind())		{		// 增加了一个AUI文件		case IResourceDelta.ADDED:			BuilderUtils.buildUI(file, monitor);			break;		// AUI文件被删除		case IResourceDelta.REMOVED:			BuilderUtils.deleteJava(file, monitor);			break;		// AUI文件被编辑		case IResourceDelta.CHANGED:			BuilderUtils.buildUI(file, monitor);			break;		}		return true;	}}class UIFullBuildVisitor implements IResourceVisitor{	private IProgressMonitor monitor;	public UIFullBuildVisitor(IProgressMonitor monitor)	{		this.monitor = monitor;	}	public boolean visit(IResource resource)	{		if (!(resource instanceof IFile))		{			return true;		}		String ext = resource.getFileExtension();		if (!ext.equalsIgnoreCase("ui"))		{			return true;		}		BuilderUtils.buildUI((IFile) resource, monitor);		return true;	}}

⌨️ 快捷键说明

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