Java Getriebe

Java und NetBeans

Der Eclipse Code Formatter in NetBeans

Der Code Formatter in NetBeans ist ja ganz nett und stellt auch einen rudimentären Support dar um den Sourcecode nicht komplett „versauen“ zu lassen. Aber so richtig viel kann der nicht. Andere Open Source Projekte wie Jalopy, jindent oder Jacobe sind entweder veraltet, nicht vollständig frei oder komplett auf kommerziell umgestellt. Ich vermisse in NetBeans so etwas, wie es in Eclipse schon seit Jahren Standard ist.

Bei der Suche nach einem guten „Stand alone“ Formatter bin ich über Umwege auf den Blogeintrag How to use the eclipse code formatter from your code im „ssssssssssscripting !!!“-Blog gestoßen.

Ich habe zunächst ein Wrappermodul für die angegebenen Jar-Dateien erstellt. Zusätzlich brauchte ich noch das Modul „org.eclipse.core.runtime“. Danach habe ich ein zweites Modul erstellt, welches eine Abhängigkeit auf das Wrappermodul bekommen hat.

Eine kleiner Aufruf des Action Wizards, eine Contextaction mit EditorCookie und der folgende Code in actionPerformed ((den ich aus dem Blogpost kopiert und angepasst habe))

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  @Override
  public void actionPerformed(ActionEvent ev)
  {
    StyledDocument document = context.getDocument();
    int length = document.getLength();

    int kind = CodeFormatter.K_UNKNOWN;
    int indentationLevel = 0;
    String lineSeparator = System.getProperty("line.separator");

    CodeFormatter formatter = new DefaultCodeFormatter();
    String text;
    try
    {
      text = document.getText(0, length);
      TextEdit textEdit = formatter.format(kind, text, 0, length,
          indentationLevel, lineSeparator);

      IDocument formatted = new Document(text);
      textEdit.apply(formatted);

      String formattedText = formatted.get();

      document.remove(0, length);
      document.insertString(0, formattedText, null);
    }
    catch(Exception ex)
    {
      Exceptions.printStackTrace(ex);
    }
  }

und schon konnte ich meine Beispielquelldatei

1
public class Test{public static void main(String[] args){System.out.println("Hallo Welt");}}

in die folgende Form bringen lassen:

1
2
3
4
5
public class Test {
    public static void main(String[] args) {
        System.out.println("Hallo Welt");
    }
}

Jetzt fehlt eigentlich „nur noch“ ein OptionsPanel wie in Eclipse für die ganzen Einstellungsmöglichkeiten.

One Response to Der Eclipse Code Formatter in NetBeans