组织导入Eclipse的方法(Organise Imports Eclipse Method)

2019-09-16 07:56发布

我需要知道哪些方法被调用在Eclipse当我按下“CTRL + SHIFT + O”(组织导入),为了一个代码生成后调用它。 什么这个方法的名字,我在哪里可以找到它(Package.Interface)

谢谢

Answer 1:

“组织导入”行动是由贡献org.eclipse.jdt.ui.actions.OrganizeImportsAction ,这反过来,调用org.eclipse.jdt.internal.corext.codemanipulation.OrganizeImportsOperation



Answer 2:

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);
}


Answer 3:

作为参考,我这是怎么做的:

我在我们的项目代码库做了一个大型的自动化重构。 由于(我想是这样)与重构其在另一个文件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:气馁的访问。 如果有人有一个想法正确地调用这个动作,而无需创建一个新的可运行和不使用外壳等,请评论。



文章来源: Organise Imports Eclipse Method