📄 uibuilder.java
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -