我需要知道哪些方法被调用在Eclipse当我按下“CTRL + SHIFT + O”(组织导入),为了一个代码生成后调用它。 什么这个方法的名字,我在哪里可以找到它(Package.Interface)
谢谢
我需要知道哪些方法被调用在Eclipse当我按下“CTRL + SHIFT + O”(组织导入),为了一个代码生成后调用它。 什么这个方法的名字,我在哪里可以找到它(Package.Interface)
谢谢
“组织导入”行动是由贡献org.eclipse.jdt.ui.actions.OrganizeImportsAction
,这反过来,调用org.eclipse.jdt.internal.corext.codemanipulation.OrganizeImportsOperation
。
Finaly托管这个代码(targetSite是IWorkbench网站在火焰时间壳初始化)做到这一点:
@Override
public void postLaunchAction(final IProject project, final IProgressMonitor monitor) throws CoreException {
super.postLaunchAction(project, monitor);
Runnable job = new Runnable() {
@Override
public void run() {
OrganizeImportsAction org = new OrganizeImportsAction(SpringServicesAction.this.targetSite);
try {
IJavaProject prj = null;
if (project.hasNature("org.eclipse.jdt.core.javanature")) {
prj = JavaCore.create(project);
}
IStructuredSelection selection = new StructuredSelection(prj);
org.run(selection);
} catch (CoreException ce) {
ce.printStackTrace();
}
}
};
this.shell.getDisplay().syncExec(job);
}
作为参考,我这是怎么做的:
我在我们的项目代码库做了一个大型的自动化重构。 由于(我想是这样)与重构其在另一个文件staticly进口静态方法月食错误,我只好打电话给每个重构(也因为我犯的一举一动全自动GIT)后组织进口:
private void organizeImports(ICompilationUnit cu)
throws OperationCanceledException, CoreException {
cu.becomeWorkingCopy(null);
CompilationUnit unit = cu.reconcile(AST.JLS4, false, null, pm);
NullProgressMonitor pm = new NullProgressMonitor();
OrganizeImportsOperation op = new OrganizeImportsOperation(cu, unit,
true, true, true, null);
TextEdit edit = op.createTextEdit(pm);
if (edit == null) {
return;
}
JavaModelUtil.applyEdit(cu, edit, true, pm);
cu.commitWorkingCopy(true, pm);
cu.save(pm, true);
}
Disadvantagde:气馁的访问。 如果有人有一个想法正确地调用这个动作,而无需创建一个新的可运行和不使用外壳等,请评论。