2012-04-12 7 views

Antwort

0

Ich schaute auf die Deklarationen in org.eclise.jdt.ui.

Die entsprechende Befehls-ID ist org.eclipse.jdt.ui.edit.text.java.clean.up und die Implementierung ist org.eclipse.jdt.internal.ui.actions.AllCleanUpsAction. Leider ist es eine interne Aktion und der Befehl unterstützt keine Parameter.

kann ich drei mögliche Ansätze sehen:

  • eine AllCleanUpsAction erstellen und ...run(new StructuredSelection(<compilation units>[])) aufrufen. Problem: Die Aktion ist intern, sodass Sie möglicherweise ein Fragment erstellen möchten, um darauf zuzugreifen ...

  • Öffnen Sie die Paketnavigatoransicht. Wählen Sie die entsprechenden Dateien aus, die den Kompilierungseinheiten entsprechen. Führen Sie die Befehls-ID über IHandlerService.executeCommand("org.eclipse.jdt.ui.edit.text.java.clean.up") aus. Problem: Der Paketnavigator wird geändert ... und möglicherweise sind nicht alle Kompilierungseinheiten im Navigator sichtbar.

  • Setzen Sie die aktuelle Auswahl in Ihrer Sicht auf new StructuredSelection(<compilation units>[]). Führen Sie dann den Befehl wie oben beschrieben aus. Problem: Ich bin nicht sicher, ob der Befehl richtig ..

    aktiviert ist
0

Sie können RefactoringExecutionStarter.startCleanupRefactoring verwenden, die eine Reihe von ICompilationUnits nimmt die Sanierung auf als eines seiner Parameter durchzuführen. Mit dieser Methode können Sie auch die ICleanUp s angeben, die Sie ausführen möchten, und Sie können die Anzeige des Bereinigungsassistenten überspringen, wenn Sie möchten.

Hier ist ein Beispiel, die unnötige Klammern entfernt:

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); 
} 
Verwandte Themen