maio 19, 2008
Criando colorizador de sintaxes com Java
Postado por: CrociDB || Categoria: Java
Eu, há um tempo atrás, estava querendo fazer uma IDE para códigos em ActionScript, então comecei a fazer uma pesquisa sobre como fazer um colorizador de sintaxe, porém vi que isso era um pouco complicado, aí então achei umas APIs para isso, mas nenhuma tinha me chamado a atenção (lê-se: Preguiça de usar qualquer uma delas). Bom, eu sei que eu acabei desistindo logo.
Mas hoje, andando por uns sites de Java, achei uma coisa muito interessante. Uma API para criar um Syntax Highlighter (Colorizador de Sintaxes). A jEdit Syntax Package é um conjunto de classes em Java para criar uma caixa de texto que tenha tenha colorizador de sintaxe. Eu (agora) sei que isso é bem antigo (como vocês podem ver no site, a última versão é de 2001), porém creio que muita gente nem conheça.
Mas hoje, andando por uns sites de Java, achei uma coisa muito interessante. Uma API para criar um Syntax Highlighter (Colorizador de Sintaxes). A jEdit Syntax Package é um conjunto de classes em Java para criar uma caixa de texto que tenha tenha colorizador de sintaxe. Eu (agora) sei que isso é bem antigo (como vocês podem ver no site, a última versão é de 2001), porém creio que muita gente nem conheça.
É uma pena que o projeto (jEdit) tenha sido descontinuado, mas que bom que ainda continua disponível.
Eu ainda não testei, mas vi um exemplo num site, e queria compartilhar com vocês, vejam:
JEditTextArea textArea = new JEditTextArea();
textArea.setTokenMarker(new JavaTokenMarker());
textArea.setText(text);
textArea.recalculateVisibleLines();
textArea.setFirstLine(0);
textArea.setElectricScroll(0);
textArea.getPainter().setSelectionColor(
UIManager.getColor("TextArea.selectionBackground"));
SyntaxStyle[] styles = SyntaxUtilities.getDefaultSyntaxStyles();
styles[Token.COMMENT1] = new SyntaxStyle(Color.GRAY,true,false);
styles[Token.KEYWORD1] = new SyntaxStyle(new Color(0×000080),false,true);
styles[Token.KEYWORD2] = new SyntaxStyle(new Color(0×000080),false,true);
styles[Token.KEYWORD3] = new SyntaxStyle(new Color(0×000080),false,true);
styles[Token.LITERAL1] = new SyntaxStyle(new Color(0×008000),false,true);
styles[Token.LITERAL2] = new SyntaxStyle(new Color(0×000080),false,true);
textArea.getPainter().setStyles(styles);
Parece bem simples, não? No maior estilo Swing mesmo!





