Bonjour à tous,

Je suis actuellement en train de développer une application de type IDE et je souhaite que mon interface graphique actuellement en swing puisse être remplacée par une autre sans changer le code des autres parties.

Par exemple remplacer swing et passer en swt ou QT. Le problème qui se pose est que pour faire ça, je tente de m'inspirer du pattern MVC grosso modo car je ne souhaite rendre uniquement l'interface graphique totalement remplaçable et pas le reste pour l'instant.

mon problème est que je trouve assez lourd la mémorisation par ce genre d'écriture et j'aimerais savoir si je ne me complique pas la vie pour rien. Actuellement, pour ouvrir et utiliser un fichier par exemple je procède comme suit:

1) J'envoie un événement avec le chemin du fichier à ouvrir depuis l'interface graphique

2) Un contrôleur reçoit le message et demande à la partie donnée d'ouvrir le fichier et de lui renvoyer.

3) Si erreur => on l'affiche dans l'ide si pas d'erreur on affiche le fichier dans un onglet. J'envoie juste à string à mon container qui l'affiche.

Mais la ou je commence à trouver ma façon de faire lourde c'est que mon contrôleur est obligé de maintenir un lien entre le container qui contient le texte du fichier et la représentation du fichier au niveau données (car je ne souhaite rien stocker dans l'interface graphique). Si je veux sauver le fichier j'envoie un événement de l'interface graphique avec le container qui contient le fichier à sauver et le contrôleur cherche le fichier associé au container pour le sauver ce que je trouve lent et inefficace (j'ai pensé à une hash table mais d'un coté j'ai une clé qui est un fichier et de l'autre un container selon le sens de l'envoie des données donc pour l'instant j'ai 2 hash tables une pour chaque sens).

N'y a t-il pas une solution élégante à ce genre de problèmes? Comment les autres IDE gèrent-ils ce genre de cas? (Ouverture de fichier ou la sauvegarde) avec ce genre d'événement ou simplement en gardant une interface graphique dépendante des données?

Merci de vos réponses.

Edit: Après pas mal de recherche et 2-3 discutions, il semblerait que ce que j'avais allourdi inutilement certaines parties du code et donc je commence à mieux saisir la beauté de la chose. J'aimerais tout de même savoir comment les IDE (genre éclipse) gèrent ce genre de choses sans devoir aller lire les sources d'un IDE complet. Si une âme charitable pouvait m'éclairer je lui en serais reconnaissant . Sinon je prendrais mon courage à deux mains et j'irais lire les sources