[Java] Créer un editeur de texte gérant la coloration syntaxique

Créer un editeur de texte gérant la coloration syntaxique [Java] - Java - Programmation

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 :D)...
 
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
Reply

Marsh Posté le 07-04-2004 à 03:26:14   

Reply

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 !

Reply

Marsh Posté le 07-04-2004 à 20:22:14    

merci...d'autres avis ?


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 07-04-2004 à 20:36:59    

Jubijub a écrit :

[Background]
 
Je v faire un stage dans une boite ayant développé son propre IDE et son propre dérivé du XML..

euh, rassure-moi, tu veux parler d'un produit qu'ils vendent, pas d'un outil destiné à une utilisation interne? [:mlc]
euh un ide pour de l'embarqué? y'a un truc qui m'échappe?


Message édité par the real moins moins le 07-04-2004 à 20:39:44

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

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? [:mlc]

Un IDE avec un JtextArea comme éditeur de texte, si c'est à vendre ça fait peur...


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

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 ....


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

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 :D...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...


Message édité par Jubijub le 07-04-2004 à 20:49:51

---------------
Jubi Photos : Flickr - 500px
Reply

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.


---------------
trainoo.com, c'est fini
Reply

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...


---------------
Jubi Photos : Flickr - 500px
Reply

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...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 07-04-2004 à 23:10:14   

Reply

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 ?


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 07-04-2004 à 23:27:42    

non justement [:ddr555]
 
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 ;) :D...
 
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...


---------------
Jubi Photos : Flickr - 500px
Reply

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

Reply

Marsh Posté le 08-04-2004 à 00:37:00    

veryfree a écrit :

ben oui inspire toi d'un ide libre: jedit jext.
 
il doit y en avoir d'autre je pense


 
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 ??? ;) ...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 08-04-2004 à 01:16:52    

ben pour savoir comment il fait t'etudi le code source [:joce]

Reply

Marsh Posté le 08-04-2004 à 03:14:34    

donc après 10 réponses et de multiples recherches de mon coté, je pense que je trouverais pas de doc sur le howto de la chose...tant pis...


---------------
Jubi Photos : Flickr - 500px
Reply

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.

Reply

Marsh Posté le 09-04-2004 à 17:28:13    

lol, fais signe si tu trouves


---------------
Jubi Photos : Flickr - 500px
Reply

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 :
  1. JEditTextArea ta = new JEditTextArea();
  2. ta.setTokenMarker(new JavaTokenMarker());
  3. ta.setText("public class Test {\n"
  4.     + "    public static void main(String[] args) {\n"
  5.     + "        System.out.println(\"Hello World\" );\n"
  6.     + "    }\n"
  7.     + "}" );


Message édité par veryfree le 09-04-2004 à 17:44:02
Reply

Marsh Posté le 09-04-2004 à 18:08:57    

oui c ce que j'ai dit plus haut : le code est très bien commenté...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 11-04-2004 à 20:48:54    

veryfree a écrit :


Code :
  1. ta.setText("public class Test {\n"...



trop puissant la coloration syntaxique *dans* les chaines de caractères ...


Message édité par nraynaud le 11-04-2004 à 23:48:26

---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 11-04-2004 à 22:43:19    

nraynaud a écrit :

trop puissant la coloration syntaxique *dans* les chaines de caractères ...


 
 :heink:

Reply

Marsh Posté le 13-04-2004 à 09:20:21    

je doute que joce se soit fait chier à mettre une vrai coloration....


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh 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.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 13-04-2004 à 10:40:34    

en même temps c qu'un forum...c pas hyper grave...mais si t'a rien à faire, je suis sur qu'il serait fou de joie si tu lui donnait le code en PHP qui gère la coloration syntaxique de base...


---------------
Jubi Photos : Flickr - 500px
Reply

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...

Reply

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.
Du coup, pas génial...


 
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  :p  
 
voilivoilà  :jap:

Reply

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é ?

Reply

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.
 
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é ?
 


 
pour le undo/redo on avait regardé le source de jExt

Reply

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.
 
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é ?
 


 
t'a modifié leur source ???


---------------
Jubi Photos : Flickr - 500px
Reply

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

Reply

Marsh Posté le 13-04-2004 à 16:33:12    

tu posterais un lien ?
 
-->Jext se base sur Jedit au début il me semble...en plus le devel est français, et répond aux mails...


---------------
Jubi Photos : Flickr - 500px
Reply

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

Reply

Marsh Posté le 13-04-2004 à 18:34:55    

Threep a écrit :


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é ?

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


---------------
trainoo.com, c'est fini
Reply

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".
 
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

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)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-04-2004 à 19:06:03    

Merci bcp pour les infos!

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed