/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package vizzy.tasks;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import javax.swing.JTextArea;
import javax.swing.text.Highlighter;
import org.apache.log4j.Logger;
import vizzy.model.HighlightsColorData;
import vizzy.model.SettingsModel;
/**
*
* @author sergeil
*/
public class KeywordsHighlighter {
private static final Logger log = Logger.getLogger(KeywordsHighlighter.class);
private List<Object> highlightObjects = new ArrayList<Object>();
private JTextArea textArea;
private SettingsModel settings;
public KeywordsHighlighter() {
}
public JTextArea getTextArea() {
return textArea;
}
public void setTextArea(JTextArea textArea) {
this.textArea = textArea;
}
public synchronized boolean highlight() {
Highlighter highlighter = getTextArea().getHighlighter();
clearHighlights();
int totalLines = getTextArea().getLineCount();
int start;
int end;
String lineText;
boolean highlighted = false;
try {
int i;
for (i = 0; i < totalLines; i++) {
start = getTextArea().getLineStartOffset(i);
end = getTextArea().getLineEndOffset(i);
lineText = getTextArea().getText(start, end - start);
for (HighlightsColorData highlight : settings.getHighlightColorData()) {
if (lineText.startsWith(highlight.getText())) {
highlightObjects.add(highlighter.addHighlight(start, end, highlight.getPainter()));
highlighted = true;
}
}
}
} catch (Exception e) {
log.warn("highlight() ", e);
}
return highlighted;
}
public synchronized void clearHighlights() {
Highlighter highlighter = getTextArea().getHighlighter();
for (Object object : highlightObjects) {
highlighter.removeHighlight(object);
}
}
public void setSettingsModel(SettingsModel settings) {
this.settings = settings;
}
}