1 package com.puppycrawl.tools.checkstyle.gui;
2
3 import com.puppycrawl.tools.checkstyle.api.DetailAST;
4 import java.awt.Color;
5 import java.util.List;
6 import javax.swing.JTextArea;
7
8 public class CodeSelector
9 {
10 private final DetailAST ast;
11 private final JTextArea editor;
12 private final List<Integer> lines2position;
13
14 public CodeSelector(final DetailAST ast, final JTextArea editor,
15 final List<Integer> lines2position)
16 {
17 this.ast = ast;
18 this.editor = editor;
19 this.lines2position = lines2position;
20 }
21
22 public void select() {
23 int start = lines2position.get(ast.getLineNo()) + ast.getColumnNo();
24 int end = findLastPosition(ast);
25
26 editor.setSelectedTextColor(Color.blue);
27 editor.requestFocusInWindow();
28 editor.setSelectionStart(start);
29 editor.setSelectionEnd(end);
30 editor.transferFocusBackward();
31 }
32
33 private int findLastPosition(final DetailAST ast)
34 {
35 if (ast.getChildCount() == 0)
36 {
37 return lines2position.get(ast.getLineNo()) + ast.getColumnNo()
38 + ast.getText().length();
39 }
40 else
41 {
42 return findLastPosition(ast.getLastChild());
43 }
44 }
45 }