特定のクリーンアップ プロファイル (ソース -> クリーンアップ) をプログラムで呼び出す方法はありますか?
ICompilationUnits の iterable で呼び出したいと思います。
特定のクリーンアップ プロファイル (ソース -> クリーンアップ) をプログラムで呼び出す方法はありますか?
ICompilationUnits の iterable で呼び出したいと思います。
の宣言を見ましたorg.eclise.jdt.ui
。
関連するコマンド ID はorg.eclipse.jdt.ui.edit.text.java.clean.up
で、実装はorg.eclipse.jdt.internal.ui.actions.AllCleanUpsAction
です。残念ながら、これは内部アクションであり、コマンドはパラメーターをサポートしていません。
次の 3 つのアプローチが考えられます。
を作成しAllCleanUpsAction
て呼び出し...run(new StructuredSelection(<compilation units>[]))
ます。問題: アクションは内部的なものなので、それにアクセスするためにフラグメントを作成する必要があるかもしれません...
パッケージ ナビゲーター ビューを開きます。コンパイル単位に対応する適切なファイルを選択します。経由でコマンド ID を実行しますIHandlerService.executeCommand("org.eclipse.jdt.ui.edit.text.java.clean.up")
。問題: パッケージ ナビゲーターが変更されました... ナビゲーターにすべてのコンパイル ユニットが表示されない場合があります。
ビューの現在の選択を に設定しますnew StructuredSelection(<compilation units>[])
。次に、上記のコマンドを実行します。問題: コマンドが適切に有効化されているかどうかわからない..
RefactoringExecutionStarter.startCleanupRefactoring
which の配列を使用ICompilationUnits
して、パラメーターの 1 つとしてクリーンアップを実行できます。この方法では、実行する を指定しICleanUp
たり、必要に応じてクリーンアップ ウィザードの表示をスキップしたりすることもできます。
不要な括弧を削除する例を次に示します。
ICleanUp[] cleanUps = new ICleanUp[]{new ExpressionsCleanUp(){
@Override
protected boolean isEnabled(String key){
switch(key){
case CleanUpConstants.EXPRESSIONS_USE_PARENTHESES:
case CleanUpConstants.EXPRESSIONS_USE_PARENTHESES_NEVER:
return true;
case CleanUpConstants.EXPRESSIONS_USE_PARENTHESES_ALWAYS:
return false;
default:
return super.isEnabled(key);
}
}
}};
ICompilationUnit[] icus = new ICompilationUnit[]{icu};
Shell shell = HandlerUtil.getActiveEditor(event).getSite().getShell();
try {
RefactoringExecutionStarter.startCleanupRefactoring(
icus, cleanUps, false, shell, false, ActionMessages.CleanUpAction_actionName);
} catch (InvocationTargetException e) {
throw new AssertionError(e);
}