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

  FORUM HardWare.fr
  Programmation
  Java

  Java et question technique pour génération de Panels à la volée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Java et question technique pour génération de Panels à la volée

n°500937
samuelp
Posté le 28-08-2003 à 19:30:22  profilanswer
 

Bonjour,
 
 je suis sur la conception d'un Installeur en Java.
Je suis sur mon diagramme UML (qui se limitera seulement aux diagrammes de classes, sequences/collaborations et peut etre le diagramme d'activités
 
Je peche (niveau technique) sur un procede qui pourrait etre interessant pour mon installer.
 
Mon installer se compose (au niveau GUI) d'une JFrame, d'un Panel pour le Header (Logo, Auteur, Date....) d'un Panel Footer (Boutons suivant, precedent, quitter...) et d'un Panel Central
 
Par action sur les boutons suivant, precedent.... le Panel Central est donc le seul a changer.  
 
Maintenant pour eviter de faire ça comme un porc et faire de la programmation niveau 6eme, j'avais une idée :
-> Via un fichier XML, je connais le nom des Panels existant et leur emplacement et leur numero de page (unique) qui seront ensuite integré dans la JFrame
 
Avec ce fichier XML, je sais donc ou trouver les Panels par leur noms et leur numero
 
Mais voila je me demandais si on pouvait pas pousser un peu la chose et là je demande aux experts Java si mon idee est sogrenue ou pas :
Au lieu de faire une classe par Panel, j'avais comme idée de faire 1 Classe unique qui, via un fichier XML par Panel, me permettrait de construire (a partir de ce fichier XML) la structure de chaque Panel et ensuite y mettre les données.
Pourquoi cette idee ? Je vais vous expliquer :
 
Si j'ai 10 Panels dans mon installer, je l'ai parcours 1 a 1.
Arrivé au 9eme Panel je me rend compte d'une erreur : il faut faire marche arriere.
Si je fais une classe par Panel je perd toutes les infos que j'avais obtenues de l'utilisateur.
Si je gere les Panels avec le XML, je peux a la validation d'un Panel ecrire les données de l'utilisateur en XML et, en revenant en arriere je pourrais donc reafficher les infos de l'utilisateur
 
Mais voila, est ce intelligent de proceder de cette façon ? Existe t-il une solution plus elegante ?
 
J'ai deja regardé un projet Java hyper compliqué. Je ne veux pas d'un truc hyper compliqué, mais pas un  truc pourri non plus :/

mood
Publicité
Posté le 28-08-2003 à 19:30:22  profilanswer
 

n°500946
the real m​oins moins
Posté le 28-08-2003 à 19:52:31  profilanswer
 

je ne vois pas l'interet de l'xml pour garder les infos entrées dans un panel précedent; a la "validation" d'un panel, tu stockes les données quelque part, oui, mais en xml ou pas, on s'en tape. si tu les stocke dans un "bete" objet, ça ira plus vite, stout.
 
maintenant pour décrire tes panels ça peut etre bien, d'autant que si tu veux que ton soft d'install soit souple, l'utilisateur doit pouvoir configurer les differents panels qu'il veut pour chaque etape de l'installation du soft qu'il installe.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°500948
samuelp
Posté le 28-08-2003 à 19:58:00  profilanswer
 

the real moins moins a écrit :

je ne vois pas l'interet de l'xml pour garder les infos entrées dans un panel précedent; a la "validation" d'un panel, tu stockes les données quelque part, oui, mais en xml ou pas, on s'en tape. si tu les stocke dans un "bete" objet, ça ira plus vite, stout.
 
maintenant pour décrire tes panels ça peut etre bien, d'autant que si tu veux que ton soft d'install soit souple, l'utilisateur doit pouvoir configurer les differents panels qu'il veut pour chaque etape de l'installation du soft qu'il installe.


 
Ok donc je garde l'idée sur le fichier XML contenant le nom, la position et une breve description du Panel.
 
Par contre je stock les données dans un objet (HashTable par exemple ou un Vecteur de Panel) pour pouvoir garder les infos.
 
 
Oki merci pour ton conseil. Si tu as autrechose à ajouter, n'hesites pas ;)

n°500950
the real m​oins moins
Posté le 28-08-2003 à 20:01:07  profilanswer
 

samuelp a écrit :


 
Ok donc je garde l'idée sur le fichier XML contenant le nom, la position et une breve description du Panel.
 
Par contre je stock les données dans un objet (HashTable par exemple ou un Vecteur de Panel) pour pouvoir garder les infos.
 
 
Oki merci pour ton conseil. Si tu as autrechose à ajouter, n'hesites pas ;)

tu as vraiment besoin d'un objet synchronisé pour garder tes infos? :o
sinon, probablement pas necessaire de garder les instances de Panel, mais plutot les données qui ont été entrées dedans.
(à voir)
 
sinon pour la description des panneaux tu dois aussi je suppose prévoir un moyen de determiner "l'action" qui s'y passe (copie de fichiers, entrée d'informations, lecture d'un license, ...)
 
à priori je ferais differentes implementation d'une meme interface pour chacune de ces actions; apres dans ton fichier descripteur avec un attribut "type", par exemple, tu mappes chaque panel à une de ces implementations...  
(c ptet pas clair mais bon :o )


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°500981
_gtm_
Posté le 28-08-2003 à 20:54:20  profilanswer
 

samuelp a écrit :


Si je fais une classe par Panel je perd toutes les infos que j'avais obtenues de l'utilisateur.


 
Euh pkoi?
Si tu t'arranges pour ne pas perdre la reference a tes panels (tu les stockes dans un tableau par ex), ils ne seront pas effaces.
 
Je proposerais donc le systeme suivant:
-Un tableau de panels (initialise a partir du XML si tu veux)
-Quand on appuie sur precedent ou suivant, tu choisis juste un autre tableau

n°500982
Krueger
tout salaire demande dutravail
Posté le 28-08-2003 à 20:54:33  profilanswer
 

Faut garder les instances des Panels pour éviter d'avoir à les reconstruire. :o
 
Sinon tu pourrais avoir un objet qui gère une liste de Panels pour afficher celui qui est adéquat. Il recevrait ainsi les requêtes de chaque Action dont -- t'as parlée.
Si on suppose qu'il n'y a que trois boutons (précédent, suivant, quitter) dans le Panel Footer, chacune d'entre elles est associée à une Action. Celle affectée au bouton suivant varie suivant le Panel central en cours (chaque Panel en a donc un, comme l'a dit --), tandis que les deux autres sont fixes.


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°501328
samuelp
Posté le 29-08-2003 à 09:00:17  profilanswer
 

Bonjour,
 
pour l'histoire du bouton suivant et de l'action engendrée par la validation d'un Panel central, j'ai pensé à un procédé, certes pas très propre, pour permettre de garder une certaine cohérence :
Ainsi, chaque Panel a dans ses attributs un parent qui represente le JFrame
 
Les Panel descendent d'abord d'une classe mere abstraite (qui descend de Panel) et cette classe mere possede une Methode isValid qui permettra de savoir si le bouton suivant doit etre validé.
 
Comme ça, je reimplemente la methode isValid selon le Panel et je pourrais faire suivant si et seulement si isValid est à True
 
qu'en pensez vous ?

n°501338
Krueger
tout salaire demande dutravail
Posté le 29-08-2003 à 09:28:47  profilanswer
 

samuelp a écrit :

Ainsi, chaque Panel a dans ses attributs un parent qui represente le JFrame


Pourquoi faire ?
 

samuelp a écrit :

cette classe mere possede une Methode isValid qui permettra de savoir si le bouton suivant doit etre validé.


Plus simplement, tu as la méthode setEnabled() de la classe Action qui permet d'activer ou non le bouton auquel ton action est associée. Tu pourrais alors avoir à la place une méthode setValid() pour activer ou non le bouton.


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°502013
samuelp
Posté le 29-08-2003 à 18:10:59  profilanswer
 

Krueger a écrit :


Pourquoi faire ?
 
 
Plus simplement, tu as la méthode setEnabled() de la classe Action qui permet d'activer ou non le bouton auquel ton action est associée. Tu pourrais alors avoir à la place une méthode setValid() pour activer ou non le bouton.


Y a des trucs qui m'echappent :/
 
Tout d'abord, je veux garder uen instance de la Frame (parent) pour pouvoir, via le Panel et selon l'action que l'on lui fait faire, pouvoir jouer sur le bouton next  du Panel Footer via une methode de la Frame
 
En gros dans le constructeur du Panel je fais
public monPanel(JFrame parent, Datas datas)
{
this.parentFrame = parent ;
}
 
Comme ça, a partir de l'action sur un Panel si besoin est je fais :
this.parent.setButtonPanelFooter(true) ;
 
ça se gere assez facilement
 
Concernant la classe action et le setEnable je n'ai pas compris :/
Qu'est ce que la classe action ?
 
J'ai repensé à la solution de -- :
Si j'implemente une interface pour chaque Panel, avec dans cette interface 1 ou 2 methodes.
Je pourrais alors via cette interface implementer ces methodes et connaitre la validité du Panel (isValid, validate) et grace à cela faire un this.parent.setButtonPanelFooter(true)
 
Je sais que cela n'est pas une solution tres propre mais je ne vois pas comment faire autrechose. Si on pouvait m'expliquer une methode plus propre de maniere bien imagée je pourrais comprende :/ (Ben oui, je suis pas le Paul Allen ou le Linus Torvald de la prog :/ )

n°502019
the real m​oins moins
Posté le 29-08-2003 à 18:14:05  profilanswer
 

à mon avis, déjà, tu dois bien séparer les valeurs et autres données des ecrans des écrans eux-memes
(ie stocker tout ça dans un bean et pas "betement" dans les JTextField et autres)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
mood
Publicité
Posté le 29-08-2003 à 18:14:05  profilanswer
 

n°502086
benou
Posté le 29-08-2003 à 19:36:30  profilanswer
 

the real moins moins a écrit :

à mon avis, déjà, tu dois bien séparer les valeurs et autres données des ecrans des écrans eux-memes
(ie stocker tout ça dans un bean et pas "betement" dans les JTextField et autres)


je viens tout juste de lire le topic en entier. Et je pense que -- a mit le doigt sur le truc que tu avais pas capté : tu dois séparer les données de leur présentation.
 
 
1) Tu veux récupérer des données utilisateurs. Il te faut donc un (ou plusieurs) objets pour récupérer ces données :
-> ex : un (ou des) javabean UserData avec comme attributs userName, userCompany, serial, instalationDirectory, etc ...
 
2) Tu veux faire plusieurs des écrans qui te permettent de récupérer ces données (-> interface UserDataScreen). Chacun de ses écrans peut être assez différent (=> création de plusieurs classes implémentant UserDataScreen).  
Chacun de ces écran permetra de recueillir des informations. Ces informations seront sauvegarder dans le javabean => il faut passer l'instance du javabean UserData à chacun des UserDataScreen.
 


---------------
ma vie, mon oeuvre - HomePlayer
n°502353
samuelp
Posté le 30-08-2003 à 11:08:29  profilanswer
 

Merci pour toutes ces infos.  
Je vais essayer de m'en sortir avec.
Je tiens a signaler que cet Installer sera en Open Source et hebergé certainement sur SourceForge (savannah refusant d 'heberger des projets en Java utilisant SWING), donc a l'occasion si j'ai fait une bourde vous pourrez directement me conseiller sur le code, voir le modifier.
 
a+


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

  Java et question technique pour génération de Panels à la volée

 

Sujets relatifs
[dxf] Conversion de dxf en image à la volée[Java][Swing] Double événement de sélection de valeur
[Java][Swing] Layout continu d'une fenêtre[Java] On maurait menti? (jdk)
Generation de villagesJava/XML : Le Parser de Sun ?
Interet de JAVA pour le web comparé au PHP ou a l'ASP[Java] Conversion Jpg, Gif, Bmp
[Python]Question sur les listes de listes de listes ...Editer une bd + question sur les liens
Plus de sujets relatifs à : Java et question technique pour génération de Panels à la volée


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