001package com.puppycrawl.tools.checkstyle.gui; 002 003import com.puppycrawl.tools.checkstyle.api.DetailAST; 004import java.awt.Color; 005import java.util.List; 006import javax.swing.JTextArea; 007 008public class CodeSelector 009{ 010 private final DetailAST ast; 011 private final JTextArea editor; 012 private final List<Integer> lines2position; 013 014 public CodeSelector(final DetailAST ast, final JTextArea editor, 015 final List<Integer> lines2position) 016 { 017 this.ast = ast; 018 this.editor = editor; 019 this.lines2position = lines2position; 020 } 021 022 public void select() { 023 int start = lines2position.get(ast.getLineNo()) + ast.getColumnNo(); 024 int end = findLastPosition(ast); 025 026 editor.setSelectedTextColor(Color.blue); 027 editor.requestFocusInWindow(); 028 editor.setSelectionStart(start); 029 editor.setSelectionEnd(end); 030 editor.transferFocusBackward(); 031 } 032 033 private int findLastPosition(final DetailAST ast) 034 { 035 if (ast.getChildCount() == 0) 036 { 037 return lines2position.get(ast.getLineNo()) + ast.getColumnNo() 038 + ast.getText().length(); 039 } 040 else 041 { 042 return findLastPosition(ast.getLastChild()); 043 } 044 } 045}