Créer un editeur de texte gérant la coloration syntaxique [Java] - Java - Programmation
Marsh Posté le 07-04-2004 à 16:35:02
Ben ecoute moi je peux te dire qu'a mon avis c'est pas avec un JTextArea qu'on fait un editeur de texte mais avec un JEditorPane. Et la vraiment ca se complisue, faut faire un EditorKit, une ViewFactory, faut parser ton document pour creer ton propre objet Document et tous ses Element avec leur AttributeSet, faut faire tes propres View, et la je sais pas ce qui est réutilisable dans ce qui existe deja.
Ya aussi le JTextPane et la tu dois manipuler des StyledDocument. Mais je sais pas comment ca marche.
Bonne chance !
Marsh Posté le 07-04-2004 à 20:36:59
Jubijub a écrit : [Background] |
euh, rassure-moi, tu veux parler d'un produit qu'ils vendent, pas d'un outil destiné à une utilisation interne?
euh un ide pour de l'embarqué? y'a un truc qui m'échappe?
Marsh Posté le 07-04-2004 à 20:40:17
the real moins moins a écrit : euh, rassure-moi, tu veux parler d'un produit qu'ils vendent, pas d'un outil destiné à une utilisation interne? |
Un IDE avec un JtextArea comme éditeur de texte, si c'est à vendre ça fait peur...
Marsh Posté le 07-04-2004 à 20:40:51
R3g a écrit : Un IDE avec un JtextArea comme éditeur de texte, si c'est à vendre ça fait peur... |
Bah .... euh ...... c''est à dire ....
Marsh Posté le 07-04-2004 à 20:49:40
heu, c un truc interne je l'ai dit
Pour le jTextArea je suppute...je l'ai pas vu ...mais ce que je veus dire c que pour l'instant ca sert qu'à de la saisie de code, ca n'a aucune autre fonction...
Je cherche de la doc pour faire un bon tokenizer pour la coloration...
Marsh Posté le 07-04-2004 à 22:53:54
Jubijub a écrit : Je cherche de la doc pour faire un bon tokenizer pour la coloration... |
si c'est syntaxique, il ne te faut pas que ça ...
JLex et CUP.
Marsh Posté le 07-04-2004 à 22:58:29
ok merci...je v déjà voir ca...le fait est que je vois très bien le résultat, mais j'ai aucune idée de la méthodologie à mettre en oeuvre pour y parvenir, ni comment découper le problème...mais là g des pistes...
Marsh Posté le 07-04-2004 à 23:10:14
putain c complexe en fait...y'a pas un tutorial qui explique vraiment ca pour débutant ? parce que là les gars anoncent franco qu'une connaissance préalable de YACC serait un bon plus...en lisant le code j'ai même pas réussi à comprendre ce que ca faisait exactement : en gros on définit comment construire les tokens, mais après g rien compris...
Marsh Posté le 07-04-2004 à 23:18:43
Jubijub a écrit : putain c complexe en fait...y'a pas un tutorial qui explique vraiment ca pour débutant ? parce que là les gars anoncent franco qu'une connaissance préalable de YACC serait un bon plus...en lisant le code j'ai même pas réussi à comprendre ce que ca faisait exactement : en gros on définit comment construire les tokens, mais après g rien compris... |
heu t'es sûr que tu es la bonne personne pour faire un éditeur avec coloration syntaxique ?
Marsh Posté le 07-04-2004 à 23:27:42
non justement
Mais le truc c que j'ai 3 mois pour le faire...donc g le temps d'apprendre...je voudrais juste une première marche qui soit pas haute comme le mont blanc ...
Si au moins je trouvais qqc qui explique la philo générale de manière claire...j'ai essayé de lire les sources de jedit, ca me semble déjà bcp plus compréhensible que le lien que tu m'a donné (l'exemple qu'il prennent des équations est déjà pas forcément hyper clair : des lignes entières avec que des symboles, c pas ce qu'il y a de plus lisible...)...
y'a pas un bouquin avec un nom genre design pattern ou un truc du style qui explique comment faire ca en utilisant justement un éditeur de texte comme exemple ? (y me semble l'avoir lu)...
la méthode jedit, si je l'ai bien comprise, consiste à définir des tokens, et à leur attribuer un ID...le painter se chargeant ensuite de les coloriser selon leur ID...
en fait g pas forcément besoin d'un lexique, vu que par ex un langage en XML utilise des balises, qui sont faciles à isoles à cause du < >...idem en TeX par ex : une balise ca commence par ca \, et ensuite c une chaine de caractère, avec éventuellement {xxxxx} ou [xxxx]...
pour java, y'a déjà un truc tt fait pour les mots clés courant...
en fait c la méthode de design du tokenizer et surtout le sys de painter qui m'intéresse...le lexique ca a l'air super puissant mais peut etre trop pour ce que je veux faire...
Marsh Posté le 08-04-2004 à 00:29:14
ben oui inspire toi d'un ide libre: jedit jext.
il doit y en avoir d'autre je pense
Marsh Posté le 08-04-2004 à 00:37:00
veryfree a écrit : ben oui inspire toi d'un ide libre: jedit jext. |
http://syntax.jedit.org/ (aller sur le site de sourceforge plutot, c une version un poil vieille sur le site...)
J'y avais pensé...c juste que là c tout fait, et que je voudrais savoir comment il l'a fait...je pense pas qu'il se soit levé un matin en se disant : tiens, si j'utilisais des tokens pour découper mes textes et leur attribuer des ID qu'un painter interpréterait ??? ...
Marsh Posté le 09-04-2004 à 17:19:19
Ce topic tombe à point puisque je suis justement à la recherche d'un editeur pour mon prog.
Je viens d'essayer le package jEdit qui a l'air de faire tout ce qu'il me faut.
Maintenant, avant de m'engager là dedans, je voudrai savoir si il existe des projets d'autres projets du même style.
Marsh Posté le 09-04-2004 à 17:43:28
télécharger ce truc http://keihanna.dl.sourceforge.net [...] syntax.zip
c'est super simple pour comprendre comment il s'y prend.
en plus c'est du domaine public tu peux recupérer ca pour une appli commercial...
ca s'utilise tres simplement en + :
Code :
|
Marsh Posté le 11-04-2004 à 20:48:54
veryfree a écrit :
|
trop puissant la coloration syntaxique *dans* les chaines de caractères ...
Marsh Posté le 11-04-2004 à 22:43:19
ReplyMarsh Posté le 13-04-2004 à 09:24:08
Jubijub a écrit : je doute que joce se soit fait chier à mettre une vrai coloration.... |
moi je ne doute plus, j'en ai la certitude.
Marsh Posté le 13-04-2004 à 12:17:02
Bon bah, après avoir commencé un peu mon editeur autour du TextArea fourni par JEdit, je me suis rendu compte qu'on ne pouvait aparament pas avoir plusieurs JEditTextArea en même temps....y a qqchose là dedans de static qui fait que tous les JEditTextArea sont en fait le même.
Du coup, pas génial...
Marsh Posté le 13-04-2004 à 13:40:17
Threep a écrit : Bon bah, après avoir commencé un peu mon editeur autour du TextArea fourni par JEdit, je me suis rendu compte qu'on ne pouvait aparament pas avoir plusieurs JEditTextArea en même temps....y a qqchose là dedans de static qui fait que tous les JEditTextArea sont en fait le même. |
alors je te conseille de bien suivre ce site:
http://www.madkit.org/
dans le cadre de notre TER de maitrise , on a eu , entre autres choses, ce travail à faire, transformer jedit en composant...le faire passer d'application => composant
on l'a terminé , ça fonctionne parfaitement, on va bientot le mettre en ligne à priori
seul trucs, disons 2/3 des plugins de jedit ne marchent plus (bug à l'exéc, à leur chargement ou ne semblent rien faire..), mais bon les principaux marchent
voilivoilà a+
ps: ton truc c la coloration synatxique, bah je te dirais comme les autres de voir syntax.edit2.2.2
suffit de lire le code, moi j'ai rajouté la colortion pour Scheme, Lisp, Kawa, Jess, et amélioré XML
voilivoilà
Marsh Posté le 13-04-2004 à 15:01:32
En effet ça pourrait être interessant vu que syntax.edit2.2.2 date un peu, et que la coloration syntaxique du jedit actuel parait plus puissante.
Enfin sinon, j'ai trouvé une solution à mon problème sur la mailing list officielle, ainsi qu'un patch pour ajouter les numéros de ligne et la gestion de la molette de la souris.
Pour le moment, ça fait à peu près tout ce que je veux, vu que j'ai ajouté la gestion des menus, et des tabs.
Par contre, il manque une fonction assez indispensable : le undo / redo.
Y a t'il une méthode universelle (un truc bien foutu qui marche bien) qui existe pour gérer cette fonctionnalité ?
Marsh Posté le 13-04-2004 à 15:48:22
Threep a écrit : En effet ça pourrait être interessant vu que syntax.edit2.2.2 date un peu, et que la coloration syntaxique du jedit actuel parait plus puissante. |
pour le undo/redo on avait regardé le source de jExt
Marsh Posté le 13-04-2004 à 16:22:58
Threep a écrit : En effet ça pourrait être interessant vu que syntax.edit2.2.2 date un peu, et que la coloration syntaxique du jedit actuel parait plus puissante. |
t'a modifié leur source ???
Marsh Posté le 13-04-2004 à 16:32:20
Oui c'est complètement bidon, et ça marche bien.
souljah : merci, j'irai voir également
Marsh Posté le 13-04-2004 à 17:35:01
Bah c'est la mailing list officielle
molette souris ici :
http://sourceforge.net/tracker/ind [...] tid=406029
numéros de ligne là :
http://sourceforge.net/mailarchive [...] rum_id=903
Marsh Posté le 13-04-2004 à 18:34:55
Threep a écrit : |
Oui, une pile de pattern Command réversibles. B. Meyer la décrit dans "Conception et programmation orientées objet".
Ce pattern est utilisé en swing, sous le nom Action
http://java.sun.com/docs/books/tut [...] .html#undo
http://java.sun.com/docs/books/tut [...] ction.html
Marsh Posté le 13-04-2004 à 18:52:56
nraynaud a écrit : Oui, une pile de pattern Command réversibles. B. Meyer la décrit dans "Conception et programmation orientées objet". |
ou plus spécifiquement le pattern Memento du GoF
(Action/Command est bcp plus générique... enfin je ne sais pas ce qu'en dit meyer)
Marsh Posté le 07-04-2004 à 03:26:14
[Background]
Je v faire un stage dans une boite ayant développé son propre IDE et son propre dérivé du XML...l'éditeur de texte inclut dans l'IDE suxx des ours de laponie (ca doit etre un jTextArea tout con) et en gros c là que je dois intervenir : le faire gérer au minimum la coloration syntaxique, plus si affinité
[ressources]
G cherché longuement, et j'ai trouvé ca :
- http://forum.hardware.fr/forum2.ph [...] 0&subcat=0 qui m'a donné l'idée d'aller voir ça :
http://java.sun.com/j2se/1.4.2/doc [...] nizer.html
- http://syntax.jedit.org/ ...qui est en gros le vieux textArea de jEdit mais qui peut servir...
[ Problème ]
C là que je me suis aperçu que je manquais fondamentalement de méthodologie : qqn aurait des docs sur l'utilité des tokenizers, sur la philo derrière l'approche par tokens, les différentes méthodes etc ? ou plus généralement un méthode de conception d'un éditeur de texte avancé ? (là je reve sans doute )...
PS : c pour du embedded, donc inutile de me sortir que 36.000.000 éditeurs de textes le font mieux que ce que je pourrais sortir, ca me servira à rien...qt à leecher des sources je peux pas c pour du commercial, donc à moins que ce soit du LGPL, MIT, BSD ou autre licence linkable, c mort...pis j'aimerais le faire moi même surtout...recopier un truc, c marrant mais ca apprend rien...
PPS : oui je connais google, je m'en suis même bcp servi, mais g rien trouvé en howto ou autre tutorials pour faire ca
---------------
Jubi Photos : Flickr - 500px