Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1701 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  communication entre les plugins et le coeur d'une application POO

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

communication entre les plugins et le coeur d'une application POO

n°687563
tanguy
Posté le 30-03-2004 à 16:50:20  profilanswer
 

J'ai un programme Java avec une interface graphique en SWING et ensuite les fonctionnalites du logiciel se regroupe sous forme de plugins.
 
au niveau architecture ca donne:
package toto.gui -> interface graphique principale
package toto.plugins.fonctionnalite1 -> un plugin
package toto.plugins.fonctionnalite2 -> un autre plugin
 
Depuis mes plugins je voudrais pouvoir modifier l'interface graphique generale de l'application (par exemple rajouter un sous-menu au niveau de la barre des menus).
 
J'aurais voulu trouve la maniere la plus elegante de le faire pour le code soit bien separe et modulaire (genre les messages entre les composants vont que dans un seul sens, le coeur de l'application en connait le moins possible sur les plugins, c'est les plugins qui se debrouillent avec ce qu'on leur donne comme infos du coeur de l'application pour pouvoir travailler).
 
J'avais pense faire un singleton de la classe principale (par exemple nomme GUI) de l'interface graphique genre ensuite on utilise comme ca:
 
GUI gui = GUI.getInstance(); //methode statique
MenuBar menuBar = gui.getMenuBar();
menuBar.add("toto" ); //on rajoute des elements a la barre de menus
ToolBar toolBar = gui.getToolBar();
...
 
Est une bonne idee ou peut-on faire mieux (SWING il kiffe bien les singletons ou pas) ?
 
J'avais aussi pense par heritage, genre la classe MenuBar est herite par les plugins pour qu'ils puissent ajouter des fonctionnalites, mais bon je vois pas comment ca pourrait se goupiller au final.
 
Ou alors une sorte de Factory pour les plugins.
 
Enfin bref je sais pas trop et j'aurais bien voulu avoir l'avis de personnes plus experimentes que moi. C'est quand meme un probleme assez commun nan ?
Aussi comment les plugins pourraient s'enregistrer au pres du coeur du programme sans que ce dernier ait a les instancier ? genre une solution dynamique ou les plugins s'inscrive a l'execution aupres du coeur de l'application (je pensais a des champs statiques)

mood
Publicité
Posté le 30-03-2004 à 16:50:20  profilanswer
 

n°688727
veryfree
Posté le 31-03-2004 à 17:30:13  profilanswer
 

perso pour mon soft j'ai crée une interface plugin:
 

Code :
  1. public interface Plugin {
  2.  /** retourne le nom du plugin */
  3.  public String getName();
  4.  /** Methode appelé par JChatIRC au chargement des plug in */
  5.  public void start(JChat prog);
  6.  /** methode appelée lorsque l'on arrete les plug in (lorsque l'on ferme l'application) */
  7.  public void stop();
  8.  /** Methode appelée lorsque l'on crée la barre de menu.  
  9.  **/
  10.  public void initMenu(JMenuBar menu);
  11. }


en gros tu file l'instance principale de ton soft a chaque plugin donc il peux faire ce qu'il veux.
 

Citation :

Depuis mes plugins je voudrais pouvoir modifier l'interface graphique generale de l'application (par exemple rajouter un sous-menu au niveau de la barre des menus).


 
pour les menus c'est la meme chose: au chargement de l'appli,tu file la menubar a tout tes plugins de facons a ce qu'il puisse ajouter des menus.
 
en supposant que plugins soit un tableau contenant tout tes plugins:
 

Code :
  1. for(int i=0;i<plugins.length;i++){
  2.     Plugin plugin=plugins[i];
  3.     plugin.initMenu(menu);
  4.    }


Message édité par veryfree le 31-03-2004 à 17:31:41
n°689850
tanguy
Posté le 01-04-2004 à 15:35:02  profilanswer
 

veryfree a écrit :

perso pour mon soft j'ai crée une interface plugin


 
Ok nikel, merci bien
 
J'avais pense a ca au debut, mais j'avais peur que les plugins fasse n'importe quoi ensuite avec l'instance de la classe principale. J'avais alors pense faire heriter les classes manipulees par les plugins par des interfaces -> et donc c'est des interfaces que manipulent les plugins. Ou alors faire les methodes uniquement visible au niveau du package (j'ai jamais ete tres a l'aise avec parceque je viens du monde C++).
 
Si quelqu'un a d'autre idee, je suis preneur :)
 
Quelqu'un sait comment fonctionne les plugins de Eclipse ?

n°689855
nraynaud
lol
Posté le 01-04-2004 à 15:39:00  profilanswer
 

tanguy a écrit :


 
Ok nikel, merci bien
 
J'avais pense a ca au debut, mais j'avais peur que les plugins fasse n'importe quoi ensuite avec l'instance de la classe principale.

tu fais une interface et tu file que l'interface aux plugins.


---------------
trainoo.com, c'est fini
n°689863
tanguy
Posté le 01-04-2004 à 15:44:18  profilanswer
 

nraynaud a écrit :

tu fais une interface et tu file que l'interface aux plugins.


 
J'avais alors pense faire heriter les classes manipulees par les plugins par des interfaces -> et donc c'est des interfaces que manipulent les plugins.
Bon c'est vrai que tu le dis plus simplement et elegamment :)
 
Sinon je me repond a moi-meme pour les plugins d'Eclipse:
C'est ecrit dans la FAQ de la premiere page: http://eclipse.org/eclipse/faq/eclipse-faq.html#plugin il y a des articles aussi sur le site d'IBM


Message édité par tanguy le 01-04-2004 à 15:59:57
n°700248
pascal34
one point !
Posté le 15-04-2004 à 15:22:45  profilanswer
 

Tu peux faire une Classe Façade (Singleton ou méthodes statiques)qui
propose des services de modification de l'interface graphique.
Elle pourrair alors faire des vérifications sur ce que font les plugins
et rétablir les choses si besoin est.  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  communication entre les plugins et le coeur d'une application POO

 

Sujets relatifs
Ouvrir une application à l'interieur de la fenetre de mon navigateurOuvrir une application à l'interieur de la fenetre de mon navigateur
Comment savoir si une application Java est déjà lancéeApplication client/serveur
Sécurisation entre Server SQL 2000 et une application .NET (ssl?)Pour creer un .exe a partir d une application sous Access
Une Application de video conferenceapplication de video conference
Aide pour faire application de video conferenceEntre application et serveur ?????
Plus de sujets relatifs à : communication entre les plugins et le coeur d'une application POO


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR