ApplicationClient.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

class ApplicationClient extends JFrame implements ActionListener
     {
     private JTextArea zoneDeTexte;
     private JScrollPane ascenseur;
     private JMenuBar barreMenu;
     private JMenu affichage,classerPar,options,aide,fichier;
     private JMenuItem aideBis,aPropos,requete,suppression,actualiser,preferences;
     private JCheckBoxMenuItem adresse,nbConnections,date,barreOutils;
     private JRadioButtonMenuItem adresseRB,nbConnectionsRB,dateRB;
     public GestionBaseClient base;
     public int longueurURL, longueurDate, longueurNB;
     public int positionURL, positionDate, positionNB;
     public String argumentOptionel;
     public JMenuItem recharger;
     public BarreOutilsComptage barre;
          
     public ApplicationClient()
          {
          //Création de la fenêtre
          setTitle("Exploitation de la base de données"); //affecte un titre à la fenetre
          setBounds(150,150,1000,700);  //affecte les dimensions par défaut de la fenetre
          setDefaultCloseOperation(EXIT_ON_CLOSE);  //definit le comportement de la fenetre à la fermeture (fin du programme)
          
          //Definition du container principal
          Container conteneur=getContentPane(); //definit le conteneur de la fenetre
          conteneur.setLayout(new BorderLayout()); //affectation du type de container
                    
          //declaration de la Jmenu Barre
          barreMenu=new JMenuBar();
          
          //declaration des différentes parties du menu et creation des options de ces menus
          
          //**********************
          //Menu Fichier
          fichier=new JMenu("Fichier");
          fichier.setMnemonic('F');
          
          actualiser=new JMenuItem("Actualiser");
          actualiser.setMnemonic('A');
          fichier.add(actualiser);
          actualiser.addActionListener(this);
          
          recharger=new JMenuItem("Recharger Tout");
          recharger.setMnemonic('R');
          recharger.setEnabled(false);
          fichier.add(recharger);
          recharger.addActionListener(this);
          
          barreMenu.add(fichier);
          //**********************
          //Menu Affichage
          affichage=new JMenu("Affichage");
          affichage.setMnemonic('A');           // affectation de la lettre de racoourcit A
          
               //creation des différentes JCheckBox du menu Adresse
          adresse=new JCheckBoxMenuItem("Adresse"); 
          adresse.setMnemonic('A');
          affichage.add(adresse);
          adresse.addActionListener(this);
          
          nbConnections=new JCheckBoxMenuItem("Nbr connections");
          adresse.setMnemonic('N');
          affichage.add(nbConnections);
          nbConnections.addActionListener(this);
          
          date=new JCheckBoxMenuItem("Date");
          adresse.setMnemonic('D');
          affichage.add(date);
          date.addActionListener(this);
          
          barreMenu.add(affichage);     //ajout de la rubrique affichage au menu
          
          //**********************
          //Menu Classer par
          classerPar=new JMenu("Classer par");
          classerPar.setMnemonic('C');
          
          adresseRB=new JRadioButtonMenuItem("Adresse");
          adresseRB.setMnemonic('A');
          classerPar.add(adresseRB);
          adresseRB.addActionListener(this);
          
          nbConnectionsRB=new JRadioButtonMenuItem("Nbr Connections");
          nbConnectionsRB.setMnemonic('N');
          classerPar.add(nbConnectionsRB);
          nbConnectionsRB.addActionListener(this);
          
          dateRB=new JRadioButtonMenuItem("Date");
          dateRB.setMnemonic('D');
          classerPar.add(dateRB);
          dateRB.addActionListener(this);
                    
          ButtonGroup groupeClasserPar=new ButtonGroup();     //creation du groupe de boutons
          groupeClasserPar.add(adresseRB);
          groupeClasserPar.add(nbConnectionsRB);
          groupeClasserPar.add(dateRB);
          
          barreMenu.add(classerPar);
          
          //**********************
          //Menu options
          options=new JMenu("Options");
          options.setMnemonic('O');
          
          preferences=new JMenuItem("Preférences");
          preferences.setMnemonic('P');
          options.add(preferences);
          preferences.addActionListener(this);
          
          barreOutils=new JCheckBoxMenuItem("Barre d'outils comptage");
          barreOutils.setMnemonic('B');
          options.add(barreOutils);          
          barreOutils.addActionListener(this);
          
          options.addSeparator();
          
          requete=new JMenuItem("Requete");
          requete.setMnemonic('R');
          options.add(requete);               //ajout de requete à la rubrique options
          requete.addActionListener(this);     //ajout de requete à l'ecouteur d'action
                    
          suppression=new JMenuItem("Suppression");
          suppression.setMnemonic('S');
          options.add(suppression);          //ajout de suppression à la rubrique options
          suppression.addActionListener(this);     //ajout de supression à l'ecouteur d'action
          
          barreMenu.add(options);
          
          //**********************
          //Menu aide
          aide=new JMenu("Aide");      //affectation du titre de la rubrique     
          aide.setMnemonic('i');           // affectation de la lettre de racoourcit i
          
          aideBis=new JMenuItem("???"); //creation de l'option aide
          aideBis.setMnemonic('?');                     //affectation de la lettre de raccourcit ?     
          aide.add(aideBis);                         //ajout de l'option aide
          aideBis.addActionListener(this);
          
          aPropos=new JMenuItem("A Propos");     //creation de l'option à propos
          aPropos.setMnemonic('A');                    //affectation de la lettre de raccourcit ?
          aide.add(aPropos);                         //ajout de l'option aide
          aPropos.addActionListener(this);
          
          barreMenu.add(aide);           //ajout de la rubrique aide au menu
          
          //ajout de la JMenuBar au container
          conteneur.add(barreMenu,"North");
          
          Container conteneurBis=new Container();
          conteneurBis.setLayout(new BorderLayout());
                              
          //ajout de la zone de texte
          zoneDeTexte=new JTextArea(10,10);
          zoneDeTexte.setFont(new Font("Monospaced",Font.PLAIN,14));
          ascenseur=new JScrollPane(zoneDeTexte,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
                    
          conteneurBis.add(ascenseur,"Center");
          
          //Etat par défault des différents éléments
          adresse.setSelected(true);
          nbConnections.setSelected(true);
          date.setSelected(true);
          adresseRB.setSelected(true);
          barreOutils.setSelected(true);
          
          longueurURL=60;
          longueurDate=30;
          longueurNB=5;
          
          positionURL=1;
          positionNB=2;
          positionDate=3;
          
          argumentOptionel="";
          
          //création de la base
          base = new GestionBaseClient("projet","information","daillyn");
          
          //Création et ajout de la barre d'outils
          barre=new BarreOutilsComptage(this);
          conteneurBis.add(barre,"North");
          
          conteneur.add(conteneurBis,"Center");
                    
          //affichage de la page
          actualise();
          
          setVisible(true);
          }
     
     public void actionPerformed(ActionEvent ev)
          {
          Object provoque=ev.getSource();  //recuperation de l'objet qui à provoqué l'evennement
          
          if ( (provoque).equals(suppression) )  //appui sur suppression
               {
               new MenuSupprimer(this);
               }
          else if ( (provoque).equals(barreOutils) )  //appui sur barre d'outils
               {
               //System.out.println("Changement d'etat");
               if (barreOutils.isSelected())
                    {
                    barre.setVisible(true);
                    }
               else
                    {
                    barre.setVisible(false);
                    }
               }
          else if ( (provoque).equals(recharger) )  //appui sur recharger
               {
               argumentOptionel="";
               barre.initialise();
               actualise();
               recharger.setEnabled(false);
               barre.arobase.setEnabled(false);
               }
          else if ( (provoque).equals(aideBis) )  //appui sur aideBis
               {
               JOptionPane.showMessageDialog(this,"Aide : Reste à faire");
               }
          else if ( (provoque).equals(aPropos) )  //appui sur aPropos
               {
               JOptionPane.showMessageDialog(this,"Projet I4-GRIT \n    N.Dailly \n    S.Selerier \nSuivi par\n    I.Lebouc","A Propos",JOptionPane.PLAIN_MESSAGE);
               }
          else if ( (provoque).equals(requete) )  //appui sur requete
               {
               new MenuRequete(this);
               }
          else if ( (provoque).equals(actualiser) )  //appui sur actualise
               {
               actualise();
               }
          else if ( (provoque).equals(nbConnectionsRB) )  //appui sur nbConnectionsRB
               {
               actualise();
               }
          else if ( (provoque).equals(adresseRB) )  //appui sur adresseRB
               {
               actualise();
               }
          else if ( (provoque).equals(dateRB) )  //appui sur dateRB
               {
               actualise();
               }
          else if ( (provoque).equals(adresse) )  //appui sur adresses
               {
               actualise();
               }
          else if ( (provoque).equals(nbConnections) )  //appui sur nbConnections
               {
               actualise();
               }
          else if ( (provoque).equals(date) )  //appui sur date
               {
               actualise();
               }
          else if ( (provoque).equals(preferences) )  //appui sur prefences
               {
               new MenuPreferences(this);
               }
          else
               {
               JOptionPane.showMessageDialog(this,"Erreur dans actionPerformed, option "+ev.getActionCommand()+" non implementée","Erreur",JOptionPane.ERROR_MESSAGE);
               }     
          }
     
     public void actualise() //génére la requete SQL est la met dans le JTextField
          {
          int NBInfos=0;
          int posURL, posDate, posNB;
          
          String orderBy="";
          orderBy=adresseRB.isSelected()?"url":orderBy;
          orderBy=nbConnectionsRB.isSelected()?"nbconnection":orderBy;
          orderBy=dateRB.isSelected()?"dernier_acces":orderBy;
          
          if (adresse.isSelected())
               {
               NBInfos++;
               }
          
          if (nbConnections.isSelected())
               {
               NBInfos++;
               }
          
          if (date.isSelected())
               {
               NBInfos++;
               }
          
          posURL=positionURL;
          posNB=positionNB;
          posDate=positionDate;
          
          if (!adresse.isSelected())
               {
               if (posURL==1) 
                    {
                    posNB--;
                    posDate--;
                    }
               if (posURL==2) 
                    {
                    if (posNB==3) posNB--;
                    if (posDate==3) posDate--;
                    }
               posURL=0;
               }
          
          if (!nbConnections.isSelected())
               {
               if (posNB==1) 
                    {
                    posURL--;
                    posDate--;
                    }
               if (posNB==2) 
                    {
                    if (posURL==3) posURL--;
                    if (posDate==3) posDate--;
                    }
               posNB=0;
               }
          
          if (!date.isSelected())
               {
               if (posDate==1) 
                    {
                    posURL--;
                    posNB--;
                    }
               if (posDate==2) 
                    {
                    if (posURL==3) posURL--;
                    if (posNB==3) posNB--;
                    }
               posDate=0;
               }
          
          if (posURL<0) posURL=0;
          if (posDate<0) posDate=0;
          if (posNB<0) posNB=0;
          
          String ResultRequete;
          //System.out.println("pos url "+posURL+" posdate "+posDate+" posNB "+posNB);          
          if (NBInfos>0)
               {
               ResultRequete=base.executeRequete("SELECT * FROM information"+argumentOptionel+" ORDER BY "+orderBy,NBInfos,posURL,posNB,posDate,longueurURL,longueurNB,longueurDate);
               }
          else
               {
               ResultRequete="";
               }
          zoneDeTexte.setText(ResultRequete);
          barre.miseAJourCompteur();
          }
     
     }

//************************************************************************************************************************
     
class MenuPreferences extends JFrame implements ActionListener
     {
     private ApplicationClient fenetreAssociee;
     private JButton valider;
     private JButton annuler;
     private JTextField champ1, champ2, champ3, champ4, champ5, champ6;
     private JLabel label1, label2, label3, label4, label5, label6;
     
     public MenuPreferences(ApplicationClient fenetreAssos)
          {
          fenetreAssociee=fenetreAssos;
          
          fenetreAssociee.setEnabled(false);
          setBounds(300,300,500,400);
          setDefaultCloseOperation(DISPOSE_ON_CLOSE);
          setTitle("Préférences");
          
          Container conteneur=getContentPane();
     //     conteneur.setLayout(new GridLayout(5,2)); //definit le conteneur de la fenetre
          
          Box boite=Box.createVerticalBox();
          conteneur.add(boite);          
          
          Container contient1=new Container();
           contient1.setLayout(new FlowLayout());
          Container contient2=new Container();
           contient2.setLayout(new FlowLayout());
           Container contient3=new Container();
           contient3.setLayout(new FlowLayout());
           Container contient4=new Container();
           contient4.setLayout(new FlowLayout());
           Container contient5=new Container();
           contient5.setLayout(new FlowLayout());
           Container contient6=new Container();
           contient6.setLayout(new FlowLayout());
          Container contient7=new Container();
           contient7.setLayout(new FlowLayout());
          
          boite.add(contient1);
          boite.add(contient2);
          boite.add(contient3);
          boite.add(contient4);
          boite.add(contient5);
          boite.add(contient6);
          boite.add(contient7);
          
          //Création des différents champs
            label1=new JLabel("Longueur du champ URL (<200) : ");
          champ1=new JTextField(3);
          contient1.add(label1);
          contient1.add(champ1);
                    
          label2=new JLabel("Longeur du champ nombre de connections (<10) : ");
          champ2=new JTextField(3);
          contient2.add(label2);
          contient2.add(champ2);
          
          label3=new JLabel("longueur du champ date (<100) : ");
          champ3=new JTextField(3);
          contient3.add(label3);
          contient3.add(champ3);
          
          label4=new JLabel("Position du champ URL (1, 2 ou 3): ");
          champ4=new JTextField(2);
          contient4.add(label4);
          contient4.add(champ4);
                    
          label5=new JLabel("Position du champ nombre de connections (1, 2 ou 3):");
          champ5=new JTextField(2);
          contient5.add(label5);
          contient5.add(champ5);
          
          label6=new JLabel("Position du champ date (1, 2 ou 3):");
          champ6=new JTextField(2);
          contient6.add(label6);
          contient6.add(champ6);
                    
          //Création des boutons          
          valider=new JButton("Valider");
          valider.setMnemonic('V');
          contient7.add(valider);
          valider.addActionListener(this);
          
          annuler=new JButton("Annuler");
          annuler.setMnemonic('A');
          contient7.add(annuler);
          annuler.addActionListener(this);
          
          //mise à jour par défaul des champs
          champ1.setText(""+fenetreAssociee.longueurURL);
          champ2.setText(""+fenetreAssociee.longueurNB);
          champ3.setText(""+fenetreAssociee.longueurDate);
          champ4.setText(""+fenetreAssociee.positionURL);
          champ5.setText(""+fenetreAssociee.positionNB);
          champ6.setText(""+fenetreAssociee.positionDate);
          
          
           //affichage de la fenetre
          setVisible(true);
          }
     
     public void dispose()
          {
          fenetreAssociee.setEnabled(true);
          super.dispose();
          }
     
     public void actionPerformed(ActionEvent ev)
          {
          Object provoque=ev.getSource();  //recuperation de l'objet qui à provoqué l'evennement
          boolean passe=false;
          
          if ( (provoque).equals(annuler) )  //appui sur annuler
               {
               dispose();          
               }
          else if ( (provoque).equals(valider) )  //appui sur annuler
               {
               int val1, val2, val3, val4, val5, val6;
                    
               try
                    {
                    val1=(Integer.valueOf(champ1.getText())).intValue();
                    val2=(Integer.valueOf(champ2.getText())).intValue();
                    val3=(Integer.valueOf(champ3.getText())).intValue();
                    val4=(Integer.valueOf(champ4.getText())).intValue();
                    val5=(Integer.valueOf(champ5.getText())).intValue();
                    val6=(Integer.valueOf(champ6.getText())).intValue();
                    
                    if ((val1<201)&&(val2<11)&&(val3<101)&&(val4<4)&&(val5<4)&&(val6<4))
                         {
                         if ((val4<1) || (val5<1) || (val6<1))
                              {
                              JOptionPane.showMessageDialog(this,"Erreur de taille des nombres, veuillez vérifier vos données","Erreur",JOptionPane.ERROR_MESSAGE);
                              }
                         else
                              {
                              if ( (val4==val5) || (val4==val6) || (val5==val6) )
                                   {
                                   JOptionPane.showMessageDialog(this,"Erreur dans la position des champs : deux champs ne peuvent être à la même position","Erreur",JOptionPane.ERROR_MESSAGE);
                                   }
                              else
                                   {
                                   fenetreAssociee.longueurURL=val1;
                                   fenetreAssociee.longueurNB=val2;
                                   fenetreAssociee.longueurDate=val3;
                                   fenetreAssociee.positionURL=val4;
                                   fenetreAssociee.positionNB=val5;
                                   fenetreAssociee.positionDate=val6;
                                   passe=true;
                                   }
                              }
                         }
                    else
                         {
                         JOptionPane.showMessageDialog(this,"Erreur de taille des nombres, veuillez vérifier vos données","Erreur",JOptionPane.ERROR_MESSAGE);
                         }
                    }
               catch (Exception e)
                    {
                    JOptionPane.showMessageDialog(this,"Erreur de format des nombres, veuillez vérifier vos données","Erreur",JOptionPane.ERROR_MESSAGE);
                    }
               
               if (passe==true)
                    {
                    fenetreAssociee.actualise();
                    dispose();
                    }
               }
          
          }
     }

//**************************************************************************

class MenuSupprimer extends JFrame     implements ActionListener
     {
     private ApplicationClient fenetreAssociee;
     private JButton valider;
     private JButton annuler;
     private JRadioButton bouton1, bouton2, bouton3, bouton4, bouton5;
     private JTextField champ1;//, champ2, champ3, champ4, champ5, champ6;
     //private JLabel label1, label2, label3, label4, label5, label6;
     
     public MenuSupprimer(ApplicationClient fenetreAssos)
          {
          fenetreAssociee=fenetreAssos;
          
          fenetreAssociee.setEnabled(false);
          setBounds(300,300,500,400);
          setDefaultCloseOperation(DISPOSE_ON_CLOSE);
          setTitle("Supression");
          
          Container conteneur=getContentPane();
               
          Box boite=Box.createVerticalBox();
          conteneur.add(boite);          
          
          ButtonGroup groupe1=new ButtonGroup();
          ButtonGroup groupe2=new ButtonGroup();
          
          bouton1=new JRadioButton("URL",false);
          bouton2=new JRadioButton("Nombre de connections",false);
          bouton3=new JRadioButton("Commençant par ",false);
          bouton4=new JRadioButton("Contenant ",false);
          bouton5=new JRadioButton("Valant ",false);
          
          groupe1.add(bouton1);
          groupe1.add(bouton2);
          groupe2.add(bouton3);
          groupe2.add(bouton4);
          groupe2.add(bouton5);
          
          JLabel label1=new JLabel("Motif de comparaison pour la suppression :");
          JLabel label2=new JLabel("Suppression de type :");
          JLabel label3=new JLabel("Valeur de comparaison :");
          
          champ1=new JTextField(20);
          
          Container contient1=new Container();
           contient1.setLayout(new FlowLayout());
     /*     Container contient2=new Container();
           contient2.setLayout(new FlowLayout());
           Container contient3=new Container();
           contient3.setLayout(new FlowLayout());
           Container contient4=new Container();
           contient4.setLayout(new FlowLayout());
           Container contient5=new Container();
           contient5.setLayout(new FlowLayout());
           Container contient6=new Container();
           contient6.setLayout(new FlowLayout());*/
          Container contient7=new Container();
           contient7.setLayout(new FlowLayout()); 
          
          boite.add(label1);
          boite.add(bouton1);
          boite.add(bouton2);
          boite.add(label2);
          boite.add(bouton3);
          boite.add(bouton4);
          boite.add(bouton5);
          
          contient1.add(label3);
          contient1.add(champ1);
          boite.add(contient1);
          
          //Création des boutons          
          valider=new JButton("Valider");
          valider.setMnemonic('V');
          contient7.add(valider);
          valider.addActionListener(this);
          
          annuler=new JButton("Annuler");
          annuler.setMnemonic('A');
          contient7.add(annuler);
          annuler.addActionListener(this);
          
          boite.add(contient7);
          
          //affichage de la fenetre
          setVisible(true);
          }

     public void dispose()
          {
          fenetreAssociee.setEnabled(true);
          super.dispose();
          }
     
     public void actionPerformed(ActionEvent ev)
          {
          Object provoque=ev.getSource();  //recuperation de l'objet qui à provoqué l'evennement
          boolean passe=false;
          
          
          if ( (provoque).equals(annuler) )  //appui sur annuler
               {
               dispose();          
               }
          else if ( (provoque).equals(valider) )  //appui sur valider
               {
               String valeur1="";
               String valeur2="";
               String valeur3=champ1.getText();
                         
               if ( (bouton1.isSelected()) || (bouton2.isSelected()) )
                    {
                    if (bouton1.isSelected()) 
                         {
                         valeur1="url";
                         }
                    else 
                         {
                         valeur1="nbconnection";
                         }
                    passe=true;
                    //System.out.println("coucou "+ valeur1);
                    }
               else
                    {
                    JOptionPane.showMessageDialog(this,"Veuillez cocher un motif de comparaison","Information",JOptionPane.INFORMATION_MESSAGE);
                    passe=false;
                    }
               
               if (passe)
                    {
                    if ( (bouton3.isSelected()) || (bouton4.isSelected()) || (bouton5.isSelected()) )
                         {
                         if (bouton3.isSelected()) valeur2="'%"+valeur3+"'";
                         else if (bouton4.isSelected()) valeur2="'%"+valeur3+"%'";
                         else valeur2="'"+valeur3+"'";
                         passe=true;
                         //System.out.println("coucou "+ valeur2);
                         }
                    else
                         {
                         JOptionPane.showMessageDialog(this,"Veuillez choisir un type de supression","Information",JOptionPane.INFORMATION_MESSAGE);
                         passe=false;
                         }
                    }
               
               if (passe)
                    {
                    int dialogue=JOptionPane.showConfirmDialog(this,"Etes vous sur de vouloir effectuer cette suppression ?","Confirmation de la supression",JOptionPane.YES_NO_OPTION);
                    if (dialogue==0)
                         {
                         //System.out.println("Choix confirmé");
                         if (fenetreAssociee.base.supprimerEnregistrement(valeur1,valeur2))
                              {
                              JOptionPane.showMessageDialog(this,"La supression à bien été effectuée","Information",JOptionPane.INFORMATION_MESSAGE);
                              }
                         else
                              {
                              JOptionPane.showMessageDialog(this,"Erreur au cours de la supression","Erreur",JOptionPane.ERROR_MESSAGE);
                              }
                         fenetreAssociee.actualise();
                         dispose();
                         }
                    
                    }          
               }
          }
               
     }

//*********************************************************************************************     
//menu requete

class MenuRequete extends JFrame implements ActionListener
     {
     private ApplicationClient fenetreAssociee;
     private JButton valider;
     private JButton annuler;
     private JRadioButton bouton1, bouton2, bouton3, bouton4, bouton5;
     private JTextField champ1;//, champ2, champ3, champ4, champ5, champ6;
     //private JLabel label1, label2, label3, label4, label5, label6;
     
     public MenuRequete(ApplicationClient fenetreAssos)
          {
          fenetreAssociee=fenetreAssos;
          
          fenetreAssociee.setEnabled(false);
          setBounds(300,300,500,400);
          setDefaultCloseOperation(DISPOSE_ON_CLOSE);
          setTitle("Construction de requete");
          
          Container conteneur=getContentPane();
               
          Box boite=Box.createVerticalBox();
          conteneur.add(boite);          
          
          ButtonGroup groupe1=new ButtonGroup();
          ButtonGroup groupe2=new ButtonGroup();
          
          bouton1=new JRadioButton("URL",false);
          bouton2=new JRadioButton("Nombre de connections",false);
          bouton3=new JRadioButton("Commençant par ",false);
          bouton4=new JRadioButton("Contenant ",false);
          bouton5=new JRadioButton("Valant ",false);
          
          groupe1.add(bouton1);
          groupe1.add(bouton2);
          groupe2.add(bouton3);
          groupe2.add(bouton4);
          groupe2.add(bouton5);
          
          JLabel label1=new JLabel("Motif de comparaison pour la requete :");
          JLabel label2=new JLabel("Requete de type :");
          JLabel label3=new JLabel("Valeur de comparaison :");
          
          champ1=new JTextField(20);
          
          Container contient1=new Container();
           contient1.setLayout(new FlowLayout());
          Container contient7=new Container();
           contient7.setLayout(new FlowLayout()); 
          
          boite.add(label1);
          boite.add(bouton1);
          boite.add(bouton2);
          boite.add(label2);
          boite.add(bouton3);
          boite.add(bouton4);
          boite.add(bouton5);
          
          contient1.add(label3);
          contient1.add(champ1);
          boite.add(contient1);
          
          //Création des boutons          
          valider=new JButton("Valider");
          valider.setMnemonic('V');
          contient7.add(valider);
          valider.addActionListener(this);
          
          annuler=new JButton("Annuler");
          annuler.setMnemonic('A');
          contient7.add(annuler);
          annuler.addActionListener(this);
          
          boite.add(contient7);
          
          //affichage de la fenetre
          setVisible(true);
          }
          
     public void dispose()
          {
          fenetreAssociee.setEnabled(true);
          super.dispose();
          }

     public void actionPerformed(ActionEvent ev)
          {
          Object provoque=ev.getSource();  //recuperation de l'objet qui à provoqué l'evennement
          boolean passe=false;
          
          
          if ( (provoque).equals(annuler) )  //appui sur annuler
               {
               dispose();          
               }
          else if ( (provoque).equals(valider) )  //appui sur valider
               {
               String valeur1="";
               String valeur2="";
               String valeur3=champ1.getText();
                         
               if ( (bouton1.isSelected()) || (bouton2.isSelected()) )
                    {
                    if (bouton1.isSelected()) 
                         {
                         valeur1="url";
                         }
                    else 
                         {
                         valeur1="nbconnection";
                         }
                    passe=true;
                    //System.out.println("coucou "+ valeur1);
                    }
               else
                    {
                    JOptionPane.showMessageDialog(this,"Veuillez cocher un motif de comparaison","Information",JOptionPane.INFORMATION_MESSAGE);
                    passe=false;
                    }
               
               if (passe)
                    {
                    if ( (bouton3.isSelected()) || (bouton4.isSelected()) || (bouton5.isSelected()) )
                         {
                         if (bouton3.isSelected()) valeur2="'%"+valeur3+"'";
                         else if (bouton4.isSelected()) valeur2="'%"+valeur3+"%'";
                         else valeur2="'"+valeur3+"'";
                         passe=true;
                         //System.out.println("coucou "+ valeur2);
                         }
                    else
                         {
                         JOptionPane.showMessageDialog(this,"Veuillez choisir un type de requete","Information",JOptionPane.INFORMATION_MESSAGE);
                         passe=false;
                         }
                    }
               
               if (passe)
                    {
                    fenetreAssociee.argumentOptionel=" WHERE "+valeur1+" LIKE "+valeur2;
                    fenetreAssociee.actualise();
                    if (bouton5.isSelected()||(!valeur3.equals("")))
                         {
                         fenetreAssociee.recharger.setEnabled(true);
                         fenetreAssociee.barre.arobase.setEnabled(true);
                         }
                    dispose();
                    }
                    
                    }          
               }
          }
               
//*********************************************************************************************     
//Barre d'outils

class BarreOutilsComptage extends JToolBar implements ActionListener
     {
     private JButton go;
     public JButton arobase;
     private JComboBox liste;
     private ApplicationClient fenetreAssociee;
     private JTextField champTexte;
     private JLabel reponse;
          
     public BarreOutilsComptage(ApplicationClient fenetreAssos)
          {
          fenetreAssociee=fenetreAssos;
          setVisible(true);
          setFloatable(true);
          
          //creation du label de réponse
          reponse=new JLabel("<"+fenetreAssociee.base.sommeConnections(fenetreAssociee.argumentOptionel)+">");
          add(reponse);
          
          //création de la liste
          String listeOptions[]={"commençant par","valant","contenant"};
          liste=new JComboBox(listeOptions);
          liste.setSelectedIndex(0);
          add(liste);          
          
          //création du champ où on entre l'URL
          champTexte=new JTextField(20);
          add(champTexte);
          
          //création du bouton go;
          go=new JButton("Go");
          add(go);
          go.addActionListener(this);
          go.setToolTipText("Execution de la requete");
          
          //creation du bouton recharger (initialement arobase)
          ImageIcon icone=new ImageIcon("recharger.jpg");
          arobase=new JButton(icone);
          add(arobase);
          arobase.addActionListener(this);
          arobase.setToolTipText("Recharger tout");
          arobase.setEnabled(false);
          }
     
     public void actionPerformed(ActionEvent ev)
          {
          Object provoque=ev.getSource();  //recuperation de l'objet qui à provoqué l'evennement
          
          if (provoque.equals(go))
               {
               String requete="";
               if (liste.getSelectedIndex()==0)
                    {
                    requete=champTexte.getText()+"%";
                    }
               else if (liste.getSelectedIndex()==1)
                    {
                    requete=champTexte.getText();
                    }
               else     if (liste.getSelectedIndex()==2)
                    {
                    requete="%"+champTexte.getText()+"%";
                    }
               fenetreAssociee.argumentOptionel=" WHERE url LIKE '"+requete+"'";
               reponse.setText("<"+fenetreAssociee.base.sommeConnections(fenetreAssociee.argumentOptionel)+">");
               fenetreAssociee.actualise();
               if (!champTexte.getText().equals("") && liste.getSelectedIndex()!=1)
                    {
                    fenetreAssociee.recharger.setEnabled(true);
                    arobase.setEnabled(true);
                    }
               else
                    {
                    fenetreAssociee.recharger.setEnabled(true);
                    arobase.setEnabled(true);
                    }
               }
          else if (provoque.equals(arobase))
               {
               initialise();
               fenetreAssociee.recharger.setEnabled(false);
               arobase.setEnabled(false);
               fenetreAssociee.argumentOptionel="";
               fenetreAssociee.actualise();
               }
          }
     
     public void initialise()
          {
          reponse.setText("<"+fenetreAssociee.base.sommeConnections(fenetreAssociee.argumentOptionel)+">");
          champTexte.setText("");
          }
     
     public void miseAJourCompteur()
          {
          reponse.setText("<"+fenetreAssociee.base.sommeConnections(fenetreAssociee.argumentOptionel)+">");
          }
     }