This code example is for showing how to insert a blank line to Java source code by using eclipse JDT. The approach is similar with adding a statement or comment to source code, especially adding a comment.
It will insert a blank line before the first statement in the following code:
public class test { /** * @param args */ public static void main(String[] args) { System.out.println("abc"); } } |
After inserting a blank line, the code becomes like the following. Note there is a blank line before the first statement.
public class test { /** * @param args */ public static void main(String[] args) { System.out.println("abc"); } } |
Steps for using the code example:
1. Create an eclipse Plug-in project. If you don’t know how to create a plug-in project, see “how to create a plug-in project tutorial“.
2. Copy the following method to your code.
3. Run your plug-in project, and create a java project named “testAddBlank” in the popup eclipse instance.
4. click the menu item that triggers the action.
//add a blank line before a statement private void AddBlankLine() throws MalformedTreeException, BadLocationException, CoreException { IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("testAddBlank"); IJavaProject javaProject = JavaCore.create(project); IPackageFragment package1 = javaProject.getPackageFragments()[0]; //get first compilation unit ICompilationUnit unit = package1.getCompilationUnits()[0]; // parse compilation unit CompilationUnit astRoot = parse(unit); //create a ASTRewrite AST ast = astRoot.getAST(); ASTRewrite rewriter = ASTRewrite.create(ast); //for getting insertion position TypeDeclaration typeDecl = (TypeDeclaration) astRoot.types().get(0); MethodDeclaration methodDecl = typeDecl.getMethods()[0]; Block block = methodDecl.getBody(); ListRewrite listRewrite = rewriter.getListRewrite(block, Block.STATEMENTS_PROPERTY); //notice here, we just create a string placeholder, and string is simply as empty Statement placeHolder = (Statement) rewriter.createStringPlaceholder("", ASTNode.EMPTY_STATEMENT); listRewrite.insertFirst(placeHolder, null); TextEdit edits = rewriter.rewriteAST(); // apply the text edits to the compilation unit Document document = new Document(unit.getSource()); edits.apply(document); // this is the code for adding statements unit.getBuffer().setContents(document.get()); System.out.println("done"); } |
The parse method.
private static CompilationUnit parse(ICompilationUnit unit) { ASTParser parser = ASTParser.newParser(AST.JLS3); parser.setKind(ASTParser.K_COMPILATION_UNIT); parser.setSource(unit); parser.setResolveBindings(true); return (CompilationUnit) parser.createAST(null); // parse } |