2012-04-12 4 views

答えて

0

私は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>[])に設定します。上記のようにコマンドを実行します。問題:私は、コマンドが正常に有効になっているかわからない。..

0

あなたは、そのパラメータの1つとしてのクリーンアップを実行するためにICompilationUnitsの配列をとるRefactoringExecutionStarter.startCleanupRefactoringを使用することができます。この方法では、実行する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); 
} 
関連する問題