2010-05-04 3 views
7

Я пытаюсь выполнить «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.

спасибо, Стефан

ответ

1

Может быть this test ui.org.eclipse.jdt.ui.tests.quickfix.CleanUpTest класс может предложить некоторые подсказки.
Он основан на enable method in ui.org.eclipse.jdt.ui.tests.quickfix.CleanUpTestCase и на org.eclipse.ltk.core.refactoring.PerformChangeOperation class.

Вы можете увидеть PerformChangeOperation вызывается чернилами класса org.eclipse.ltk.ui.refactoring.RefactoringWizard.