IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Bouton Valider dans une popup (modale)


Sujet :

AWT/Swing Java

  1. #1
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut Bouton Valider dans une popup (modale)
    Salut,

    Dans mon appli, j'ai une JFrame principale (MainJFrame) qui ouvre une popup (PopupJFrame) dans laquelle l'utilisateur peut saisir les attributs d'un objet. A la fin il clique sur le bouton "valider".

    Au clic sur le bouton, je fais des vérifs et tout. Par contre, il faut que j'enregistre tout ça en base. Et là je me demande qui doit faire l'appel. A priori, seule MainJFrame a accès au service correspondant. Mais alors qui déclenche l'action ?

    En gros est ce que mon bouton "valider" doit appeler MainJFrame. Ou est ce que le bouton doit lancer un événement et lorsque MainJFrame (qui l'écoute) l'intercepte, c'est MainJFrame qui va chercher tous les champs (ou l'objet déjà tout prêt) dans PopupJFrame ?

    C'est quoi le plus propre d'après vous ?
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Pour moi, le plus "propre", c'est qu'un dialogue de saisie se comporte uniquement comme un producteur/modifieur de "structure", ce qui permet de faire ce qu'on veut de cette structure indépendamment du dialogue (stockage en base, export fichier, etc...), sans rendre dépendant le dialogue des autres traitements.

    Ainsi, le processus peut se décrire comme suit

     
    data = lire structure ou créer nouvelle structure; 
    data = dialogueSaisie(data); // indépendant des processus d'accès à un dao, ou autre (en entrée comme en sortie)
    stocker(data); // ou autre (exporter, imprimer, calculs...)
    
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    En ce qui me concerne, le popup ne concernerait que l'objet à éditer, qui doit savoir comment se mettre à jour dans la DB...

  4. #4
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    heu, en fait je ne comprend pas vos réponses. Vous voulez dire que je dois passer le service à ma popup ?
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Je voulais dire que, d'après moi, de base, le dialogue ne doit savoir gérer que la structure de données (ce que tu appelles l'objet déjà tout prêt) : ses différentes données, leur validation éventuelle, leur format, type, etc...
    Ensuite, que le traitement se fasse par échange de structure entre l'appelant et le dialogue, par évènement( ou par injection d'un handler de traitement, ce qui, fonctionnellement, me semble identique à l'événementiel), etc... concerne, il me semble, un autre débat, concernant des notions de stateful/stateness. Si on veut être stateless, l'injection de handler semble être la plus adaptée, de mon point de vue (Mais est-ce qu'on peut vraiment dire que c'est plus propre ? Je parle plus par expérience que par connaissance de la théorie et de l'art ).

    Un truc dans le genre :
     afficher dialogue( data, handler de quoi faire sur valider ) 
    Le handler pouvant déléguer directement à ton service. Le handler peut d'ailleurs fournir le support pour déterminer comment continuer après l'action (par exemple, si le service refuse la sauvegarde, on ne ferme pas le dialogue, et on averti l'utilisateur que sa saisie ne peut être validée en l'état, pour telle ou telle raison)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    Heu, je ne suis toujours pas certain de comprendre.

    je donne un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
    public class MainJFrame extends JFrame  {
     
      // un tableau et son modele pour afficher des donnees
      private JTableModel monModele = ... ; 
      private JTable table = new JTable(monModele);
     
      // Service qui contient le code pour sauver
      private Service mon service; 
     
      // popup
      private PopupJFrame popup = ...;
     
     
      private void methodePourOuvrirLaPopup() {
        // Ici je dois faire quoi ?
     
        popup = new PopupJFrame(...);
        popup.setVisible(true);
      }
    }
    Et dans la popup :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class PopupJFrame extends JFrame {
     
      public PopupJFrame(Handler h) {
        // Heu ???
      }
     
      private void clic() {
        // Ici je dois faire un truc avec un handler ?
      }
    }
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Concrètement, ça pourrait être sous cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public class PopupJFrame extends JFrame {
     
       private IValidateHandler validateHandler;
     
      public PopupJFrame(IData data, IValidateHandler handler) {
        this.validateHandler=handler;
        buildDialog(data);
      }
     
      private void performOk() {
        // Ici je dois faire un truc avec un handler ?
        IData data = getData();
        if ( validateHandler!=null ) {
            IResponse response = validateHandler.validate(data);
            // traitement de response...
        }
      }
     
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
      private void methodePourOuvrirLaPopup() {
        // Ici je dois faire quoi ?
     
       IData data = lire data ... (créer la structure)
     
        popup = new PopupJFrame(data, new IValidateHandler {
             public IResponse validate(IData data) {
     
                try {
                     service.save(data); // exemple
                     return DefaultResponse.OK;
                } catch( ... ) {
                     return new ErrorResponse(...); // par exemple 
                }
            }
     
         });
        popup.setVisible(true);
      }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    Ah ok, donc je passe bien le service (inclus dans le handler) à la popup. En fait, je vais même passer le Jtablemodele, vu qu'il connait le service...

    Merci beaucoup.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Le handler, justement, permet de rendre le dialogue non dépendant du service, et, de, surtout, son appel : que tu utilises dans l'implémentation concrète de l'interface de handler, le service directement, le JTableModele, ou les deux, ou autre, ne change justement rien dans la façon de traiter le handler dans le dialogue. Que le service traite les datas en un bloc (un seul argument à la méthode), en plusieurs fois (plusieurs arguments à la méthode), sauvegarde une partie des données d'un coté et une autre de l'autre (plusieurs méthodes), ou fait quoi que ce soit d'autre avec les données, ne concernent pas le dialogue, et peut surtout évoluer sans impact sur le dialogue.

    Et si tu as besoin, plus tard, de faire un autre traitement qui utiliserait ce même dialogue, ce sera facile sans nécessairement toucher au dialogue.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD14] Deux boutons validation dans une seule fenêtre
    Par ilalaina dans le forum WinDev
    Réponses: 4
    Dernier message: 29/09/2009, 16h05
  2. Valider un formulaire dans une popup
    Par Seta-san dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 07/12/2008, 20h19
  3. passer valeur d'un textarea dans une popup avec un bouton html ?
    Par cuisto44000 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 07/09/2008, 12h44
  4. Réponses: 3
    Dernier message: 15/11/2006, 13h57
  5. Supprimer la croix dans une fenêtre modale
    Par AnneOlga dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/01/2004, 14h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo