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クラスが手がかりになるかもしれません。これは、クラス内およびクラス上のメソッドに
基づいています。enableui.org.eclipse.jdt.ui.tests.quickfix.CleanUpTestCaseorg.eclipse.ltk.core.refactoring.PerformChangeOperation

PerformChangeOperation呼び出されたインク クラスを確認できますorg.eclipse.ltk.ui.refactoring.RefactoringWizard

于 2010-05-04T10:52:16.697 に答える