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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| /**
* Fonction qui colorie tout les mot d'une phrase suivant un tableau de string
* @param strsToHighlight
* @param text
* @param doc
* @param color
*/
private void colorWords(String[] strsToHighlight,String text,final StyledDocument doc, Color color, boolean bold){
for(String strToHL : strsToHighlight){
Pattern p = Pattern.compile(strToHL);
Matcher m = p.matcher(text);
while(m.find() == true){
MutableAttributeSet attri = new SimpleAttributeSet();
StyleConstants.setForeground(attri, color);
StyleConstants.setBold(attri, bold);
final int start = m.start();
final int end = m.end();
final int length = end-start;
final MutableAttributeSet style = attri;
SwingUtilities.invokeLater(new Runnable(){
public void run(){
doc.setCharacterAttributes(start, length, style, true);
}
});
}
}
}
/**
* Fonction qui recupere le texte d'un TextePane et lance le coloriage des mot a partir de ses tableau de mot
* @param c
*/
public void sQLHighlight(JTextPane c) {
String[] strsToHighlightFunction {"nbCellNeu","nbCellMoo","nbCellSq","nbCellCir","pCellSq","pCellCir","cellDuration"};
String[] strsToHighlightGreen = {"not","or","xor","and"};
String[] strsToHighlightBlack = {"->" , ":" , ";"};
String[] strsToHighlightLayer = stringLayer();
String[] strsToHighlightState = stringStates();
String text = c.getText().replaceAll("\n", " ");
final StyledDocument doc = c.getStyledDocument();
final MutableAttributeSet normal= new SimpleAttributeSet();
StyleConstants.setForeground(normal, Color.black);
StyleConstants.setBold(normal, false);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
doc.setCharacterAttributes(0, doc.getLength(), normal, true);
}
});
colorWords(strsToHighlightFunction, text, doc, new Color(88,54,48), false);
colorWords(strsToHighlightGreen, text, doc, new Color(107,94,255), false);
colorWords(strsToHighlightBlack, text, doc, Color.BLACK, true);
colorWords(strsToHighlightLayer, text, doc, Color.blue, false);
colorWords(strsToHighlightState, text, doc,new Color(59,176,23) , false);
} |
Partager