8

我正在尝试对我正在以编程方式编辑的文件以编程方式执行“OrganizeImports”。我的代码如下所示:

    final ICommandService cmdService = (ICommandService)PlatformUI.getWorkbench().getService    (ICommandService.class);
    if (cmdService != null) {
        final Command cmd = cmdService.getCommand(IJavaEditorActionDefinitionIds.ORGANIZE_IMPORTS);
        final ExecutionEvent execEvt = new ExecutionEvent(cmd, Collections.EMPTY_MAP, compileationUnit, null);

        PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
        ResourcesPlugin.getWorkspace().

        Display.getDefault().syncExec(new Runnable() {
            @Override
            public void run() {
                try {
                    //cmd.executeWithChecks(execEvt);
                    cmd.execute(execEvt);
                } catch (Exception e) {
                    getLogger().severe("organize imports failed: " + e.getMessage());
                }
            }

我的问题是 OrganizeImportsAction 在当前选择上执行,这与我正在编辑的编译单元不同。我想在编译单元上以编程方式设置选择,但我不知道该怎么做。或者也许还有另一种触发 OrganizeImports 的方法。

谢谢,斯特凡

4

1 回答 1

1

可能这个测试ui.org.eclipse.jdt.ui.tests.quickfix.CleanUpTest类可以提供一些线索。
它基于类中和类上的enable方法ui.org.eclipse.jdt.ui.tests.quickfix.CleanUpTestCaseorg.eclipse.ltk.core.refactoring.PerformChangeOperation

您可以看到PerformChangeOperation调用的 ink 类org.eclipse.ltk.ui.refactoring.RefactoringWizard

于 2010-05-04T10:52:16.697 回答