Я пытаюсь выполнить '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.
спасибо, stefan
Может быть этот тест ui.org.eclipse.jdt.ui.tests.quickfix.CleanUpTest
класс может дать некоторую подсказку.
Он основан на методе enable
в ui.org.eclipse.jdt.ui.tests.quickfix.CleanUpTestCase
и на org .eclipse.ltk.core.refactoring.PerformChangeOperation
класс .
Вы можете увидеть, как PerformChangeOperation
вызывается в классе org.eclipse.ltk.ui.refactoring.RefactoringWizard
.