public MonInterface (Lanceur lanceur){

		this.lanceur = lanceur;

		conteneurNiv1_1 = new JPanel();
		conteneurNiv2_1 = new JPanel();
		conteneurNiv3_1 = new JPanel();
		conteneurNiv4_1 = new JPanel();
		conteneurNiv4_2 = new JPanel();
		//disign5_1 = new JPanel();
		conteneurNiv5_1 =  Box.createVerticalBox();
		conteneurNiv6_4 = Box.createHorizontalBox();
		//conteneurNiv6_5 = Box.createHorizontalBox();
		//flowNom = new JPanel();
		//flowDate = new JPanel();
		disignNom = Box.createHorizontalBox();
		disignDate = Box.createHorizontalBox();
		//disignDate.setPreferredSize(new Dimension(0, 0));
		//disign5_2 = Box.createVerticalBox();
		conteneurNiv5_2 = new JPanel();
		disign5_3 = Box.createHorizontalBox();
		conteneurNiv5_3 = Box.createHorizontalBox();
		conteneurNiv5_4 = new JPanel();
		designBenregistrer = new JPanel();
		conteneurNiv4_8 = new JPanel();
		conteneurNiv2_2 = new JTabbedPane();
		conteneurNiv3_2 = new JPanel();
		conteneurNiv4_3 = new JPanel();
		conteneurNiv5_9 = new JPanel();
		conteneurNiv5_10 = new JPanel();
		design4_7 = new JPanel();
		designfichiers = new JPanel();
		designconnexion = new JPanel();
		designdownload = new JPanel();
		conteneurNiv4_7 = new JPanel();
		conteneurNiv4_4 = new JPanel();
		conteneurNiv5_5 = new JPanel();
		conteneurNiv6_1 = new JPanel();
		disignBrep_source = new JPanel();
		conteneurNiv7_1 = new JPanel();
		conteneurNiv5_6 = new JPanel();
		disignTrep_source = new JPanel();
		conteneurNiv5_7 = new JPanel();
		conteneurNiv5_8 = new JPanel();
		conteneurNiv3_7 = new JPanel();

		conteneurNiv2_3 = new JPanel();
		conteneurNiv3_3 = new JPanel();
		conteneurNiv3_4 = new JPanel();
		conteneurNiv2_4 = new JPanel();
		conteneurNiv3_5 = new JPanel();
		conteneurNiv4_5 = new JPanel();
		conteneurNiv4_6 = new JPanel();
		conteneurNiv3_6 = new JPanel();
		conteneurNiv1_2 = new JPanel();
		conteneurNiv2_5 = new JPanel();



		conteneurNiv1_1.setLayout(new BorderLayout());
		conteneurNiv2_1.setLayout(new BorderLayout());
		conteneurNiv2_1.setLayout(new GridLayout(1,2));
		conteneurNiv3_1.setLayout(new BorderLayout());
		conteneurNiv4_1.setLayout(new BorderLayout());
		conteneurNiv4_2.setLayout(new BorderLayout());
		conteneurNiv5_2.setLayout(new FlowLayout());
		conteneurNiv5_4.setLayout(new BorderLayout());				
		designBenregistrer.setLayout(new FlowLayout());
		conteneurNiv4_8.setLayout(new BorderLayout());
		conteneurNiv3_2.setLayout(new BorderLayout());
		conteneurNiv4_3.setLayout(new GridLayout(3,1));
		conteneurNiv5_9.setLayout(new GridLayout(1,2));
		conteneurNiv5_10.setLayout(new GridLayout(1,2));
		design4_7.setLayout(new FlowLayout());
		designfichiers.setLayout(new FlowLayout());
		designconnexion.setLayout(new FlowLayout());
		designdownload.setLayout(new FlowLayout());
		conteneurNiv4_7.setLayout(new BorderLayout());
		conteneurNiv4_4.setLayout(new GridLayout(3,1));
		conteneurNiv5_5.setLayout(new BorderLayout());
		conteneurNiv6_1.setLayout(new GridLayout(1,2));
		disignBrep_source.setLayout(new FlowLayout());
		conteneurNiv7_1.setLayout(new BorderLayout());
		conteneurNiv3_7.setLayout(new BorderLayout());

		conteneurNiv5_6.setLayout(new BorderLayout());
		conteneurNiv5_7.setLayout(new GridLayout(1,4));
		conteneurNiv5_8.setLayout(new BorderLayout());
		conteneurNiv2_3.setLayout(new BorderLayout());
		conteneurNiv3_3.setLayout(new BorderLayout());

		// #2 MODIFIER ICI LE GRIDLAYOUT POUR LA LISTE DES CAPTEURS
		conteneurNiv3_3.setLayout(new GridLayout(13,2));

		conteneurNiv3_4.setLayout(new BorderLayout());
		conteneurNiv2_4.setLayout(new BorderLayout());
		conteneurNiv3_5.setLayout(new BorderLayout());
		conteneurNiv3_5.setLayout(new GridLayout(1,2));				
		conteneurNiv4_5.setLayout(new BorderLayout());
		conteneurNiv4_6.setLayout(new BorderLayout());
		conteneurNiv3_6.setLayout(new BorderLayout());
		conteneurNiv1_2.setLayout(new GridLayout(2,1));
		conteneurNiv2_5.setLayout(new GridLayout(2,1));

		groupe1 = new ButtonGroup();
		tmpReel = new JRadioButton("Espionnage Temps Réel", true);
		hrLigne = new JRadioButton("Espionnage Hors Ligne");	

		download = new JButton ("Download");
		connexion = new JButton ("Connexion");
		connexion_deconnexion = new JButton ("Connexion");
		Benregistrer = new JButton("Enregistrer");
		Bsend = new JButton("SEND");
		Bsend.setEnabled(false);

		new JButton ("Charger");
		new JButton ("Parcourir");
		Brep_source = new JButton ("Charger fichier");

		rep_source.setFileFilter(new FileNameExtensionFilter("Fichier XML", "xml"));
		enregistrer.setFileFilter(new FileNameExtensionFilter("Fichier XML", "xml"));

		MAJ_ports = new JButton(new ImageIcon("Images/refresh_icon.png"));

		BLecture = new JButton(new ImageIcon("Images/bouton lecture.png"));
		BPause = new JButton(new ImageIcon("Images/bouton pause.png"));
		BSuivant = new JButton(new ImageIcon("Images/bouton suivant.png"));
		BPrecedent = new JButton(new ImageIcon("Images/bouton précédent.png"));


		fichiers = new JComboBox<String>();
		fichiers.addItem("sélectionner fichier");
		ip = new JTextField("raspberry-pi");
		ip2 = new JTextField("raspberry-pi");
		ip2.setPreferredSize(new Dimension(150, 25));
		dateftp = new JLabel();

		aff_date = new JLabel("Affichage de la date");
		//aff_lieu = new JLabel("Affichage du lieu");

		groupe1.add(tmpReel);
		groupe1.add(hrLigne);




		Trep_source = new JLabel("Fichier à charger");
		Trep_ip2 = new JLabel("@ip: ");
		Trep_ip = new JLabel("@ip:    ");
		Trep_Nom = new JLabel("Nom:  ");
		Trep_Date = new JLabel("Date: ");

		Date = new JLabel("");
		Nom = new JTextField("");	
		Nom.setPreferredSize(new Dimension(0, 20));
		send = new JTextField();
		send.setEnabled(false);

		ms = new JLabel("ms");
		S = new JLabel("S");

		val_S = new JTextField("00");
		val_ms = new JTextField("000");

		tele_laz.setForeground(Color.yellow);
		son_av1.setForeground(Color.yellow);
		son_av2.setForeground(Color.yellow);

		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// #4 Modification du titre de la fenàtre
		this.setTitle("Espion CAN Raspberry PI");
		this.setBounds(10,40,1125,700);

		conteneurPrincipal = (JPanel) getContentPane();					

		conteneurPrincipal.add(conteneurNiv1_1, BorderLayout.CENTER);				

		conteneurNiv1_1.add(conteneurNiv2_1, BorderLayout.NORTH);

		conteneurNiv2_1.add(conteneurNiv3_1, BorderLayout.WEST);
		TitledBorder panneau_controle;
		panneau_controle = BorderFactory.createTitledBorder("Panneau de controle");
		conteneurNiv2_1.setBorder(panneau_controle);

		conteneurNiv3_1.add(conteneurNiv4_1, BorderLayout.NORTH);
		conteneurNiv4_1.add(tmpReel);

						

		conteneurNiv6_4.add(Trep_ip);
		conteneurNiv6_4.add(ip);
		conteneurNiv5_1.add(conteneurNiv6_4);
		
		
		
		disignNom.add(Trep_Nom);
		disignNom.add(Nom);
			
		conteneurNiv5_1.add(disignNom);
		
		
				
		disignDate.add(Trep_Date);
		disignDate.add(Date);
		conteneurNiv5_1.add(disignDate);

		conteneurNiv4_2.add(conteneurNiv5_1, BorderLayout.NORTH);
		
		
		disign5_3.add(connexion_deconnexion);
		
		conteneurNiv5_3.add(connexion_deconnexion);
		 
		
		penregistrer.setIcon(new ImageIcon("Images/carre_noire.png"));
		conteneurNiv4_2.add(conteneurNiv5_4, BorderLayout.SOUTH); 
		conteneurNiv5_3.add(penregistrer);
		conteneurNiv5_3.add(Benregistrer);
		//designBenregistrer.add(Benregistrer);
		conteneurNiv4_2.add(conteneurNiv5_3);
		conteneurNiv3_1.add(conteneurNiv4_2, BorderLayout.CENTER);
			
		conteneurNiv4_8.add(send, BorderLayout.CENTER);
		conteneurNiv4_8.add(Bsend, BorderLayout.EAST);
		conteneurNiv3_1.add(conteneurNiv4_8, BorderLayout.SOUTH);

		/*conteneurNiv3_2.add(conteneurNiv4_3, BorderLayout.NORTH);
				   	TitledBorder enregistre;
				   	enregistre = BorderFactory.createTitledBorder("Espionnage Enregistré");
					conteneurNiv3_2.setBorder(enregistre);
						conteneurNiv4_3.add(hrLigne);*/

		conteneurNiv3_2.add(conteneurNiv4_4, BorderLayout.CENTER);						

		conteneurNiv4_4.add(conteneurNiv5_5);
		conteneurNiv5_5.add(conteneurNiv6_1, BorderLayout.SOUTH);
		conteneurNiv6_1.add(disignBrep_source);
		disignBrep_source.add(Brep_source);

		conteneurNiv6_1.add(conteneurNiv7_1, BorderLayout.CENTER);
		conteneurNiv7_1.add(aff_date, BorderLayout.NORTH);
		//conteneurNiv7_1.add(aff_lieu, BorderLayout.SOUTH);

		conteneurNiv4_4.add(conteneurNiv5_6);				   		
		conteneurNiv5_6.add(disignTrep_source, BorderLayout.SOUTH);
		disignTrep_source.add(Trep_source);


		conteneurNiv3_7.add(conteneurNiv4_3, BorderLayout.CENTER);

		
		
		conteneurNiv4_7.add(Trep_ip2, BorderLayout.WEST);
		conteneurNiv4_7.add(ip2, BorderLayout.CENTER);
		design4_7.add(conteneurNiv4_7);
		conteneurNiv5_9.add(design4_7);
		
		
		
		conteneurNiv5_9.add(designfichiers);
		designfichiers.add(fichiers);
		
		conteneurNiv4_3.add(conteneurNiv5_9);
		nDateftp = new JLabel("Date : ");
		conteneurNiv5_2.add(nDateftp);
		conteneurNiv5_2.add(dateftp);
		
		conteneurNiv4_3.add(conteneurNiv5_2);
	
		conteneurNiv5_10.add(designconnexion);
		designconnexion.add(connexion);

		conteneurNiv5_10.add(designdownload);
		designdownload.add(download);

		conteneurNiv4_3.add(conteneurNiv5_10);

		conteneurNiv2_2.addTab("Horsligne", conteneurNiv3_2); 
		conteneurNiv2_2.addTab("Raspberry-Pi", conteneurNiv3_7); 
		conteneurNiv5_8.add(hrLigne, BorderLayout.NORTH);
		conteneurNiv5_8.add(conteneurNiv2_2, BorderLayout.CENTER);
		conteneurNiv5_8.add(conteneurNiv5_7, BorderLayout.SOUTH);
		conteneurNiv5_7.add(BPrecedent);
		conteneurNiv5_7.add(BLecture);
		conteneurNiv5_7.add(BPause);		    		
		conteneurNiv5_7.add(BSuivant );
		conteneurNiv2_1.add(conteneurNiv5_8, BorderLayout.EAST);

		conteneurNiv1_1.add(conteneurNiv2_3, BorderLayout.WEST);

		conteneurNiv2_3.add(conteneurNiv3_3, BorderLayout.CENTER);

		// #3 AJOUTER ICI CHAQUE CAPTEUR AU CONTENEUR 3_3

		conteneurNiv3_3.add(new JLabel ("Télémétre Laser"));
		conteneurNiv3_3.add(tele_laz);
		conteneurNiv3_3.add(new JLabel ("Sonar avant 1"));
		conteneurNiv3_3.add(son_av1);
		conteneurNiv3_3.add(new JLabel ("Sonar avant 2"));
		conteneurNiv3_3.add(son_av2);
		conteneurNiv3_3.add(new JLabel ("Capteur de couleurs"));
		conteneurNiv3_3.add(pcapt_coul, BorderLayout.CENTER);		
		conteneurNiv3_3.add(new JLabel ("Sonar arrière 1"));
		conteneurNiv3_3.add(psonar_ar_1, BorderLayout.CENTER);
		conteneurNiv3_3.add(new JLabel ("Sonar arrière 2"));
		conteneurNiv3_3.add(psonar_ar_2);
		conteneurNiv3_3.add(new JLabel ("Capteur 1"));
		conteneurNiv3_3.add(pcapt1);
		conteneurNiv3_3.add(new JLabel ("Capteur 2"));
		conteneurNiv3_3.add(pcapt2);
		conteneurNiv3_3.add(new JLabel ("Capteur 3"));
		conteneurNiv3_3.add(pcapt3);
		conteneurNiv3_3.add(new JLabel ("Capteur 4"));
		conteneurNiv3_3.add(pcapt4);
		conteneurNiv3_3.add(new JLabel ("Capteur à lame 1"));
		conteneurNiv3_3.add(pcapt_lame_1);
		conteneurNiv3_3.add(new JLabel ("Capteur à lame 2"));
		conteneurNiv3_3.add(pcapt_lame_2);
		conteneurNiv3_3.add(new JLabel ("Capteur de distributeur"));
		conteneurNiv3_3.add(pcapt_distrib);
		TitledBorder etat_capt;
		etat_capt = BorderFactory.createTitledBorder("Etat des Capteurs");
		conteneurNiv3_3.setBorder(etat_capt);


		conteneurNiv2_3.add(conteneurNiv3_4, BorderLayout.SOUTH);
		robot_lab.setSize(conteneurNiv3_4.getWidth(),conteneurNiv3_4.getHeight());
		conteneurNiv3_4.add(robot_lab, BorderLayout.CENTER);


		terrain = new Table("Images/terrain.png");

		conteneurNiv1_1.add(terrain);
		val_S = new JTextField("00");
		val_ms = new JTextField("000");

		val_S.addKeyListener(new java.awt.event.KeyAdapter() {   
			public void keyTyped(java.awt.event.KeyEvent e) {    
				if (e.getKeyChar() == 10){
					slider.setValue((Integer.decode(val_S.getText())*1000) + (Integer.decode(val_ms.getText()) ));
					//gére l'affichage dans le cas ou on est en mode hors ligne
					afficher_horsligne(false, slider.getValue());
				}
			}
		});
		val_ms.addKeyListener(new java.awt.event.KeyAdapter() {   
			public void keyTyped(java.awt.event.KeyEvent e) {    
				if (e.getKeyChar() == 10){
					slider.setValue((Integer.decode(val_S.getText())*1000) + (Integer.decode(val_ms.getText()) ));
					//gére l'affichage dans le cas ou on est en mode hors ligne
					afficher_horsligne(false, slider.getValue());
				}
			}
		});
		conteneurNiv1_1.add(conteneurNiv2_4, BorderLayout.SOUTH);
		conteneurNiv2_4.add(conteneurNiv3_5, BorderLayout.WEST);
		conteneurNiv3_5.add(conteneurNiv4_5);
		conteneurNiv4_5.add(val_S, BorderLayout.CENTER);
		conteneurNiv4_5.add(S, BorderLayout.EAST);
		conteneurNiv3_5.add(conteneurNiv4_6);				
		conteneurNiv4_6.add(val_ms, BorderLayout.CENTER);
		conteneurNiv4_6.add(ms, BorderLayout.EAST);

		conteneurNiv2_4.add(conteneurNiv3_6, BorderLayout.CENTER);


		final int slide_MIN = 0;
		final int slide_MAX = 90000;
		final int slide_INIT = 0;

		slider = new JSlider(JSlider.HORIZONTAL, slide_MIN, slide_MAX, slide_INIT);
		slider.setMajorTickSpacing(10000);
		slider.setMinorTickSpacing(1000);
		slider.setPaintTicks(true);
		slider.setPaintLabels(true);

		//permet de redefinir l'affichage par dàfaut du slider, afin d'avoir l'echelle en secondes
		Hashtable<Integer, JLabel> labelTable = new Hashtable<Integer, JLabel>();
		labelTable.put(new Integer(0), new JLabel("0"));
		labelTable.put(new Integer(10000), new JLabel("10"));
		labelTable.put(new Integer(20000), new JLabel("20"));
		labelTable.put(new Integer(30000), new JLabel("30"));
		labelTable.put(new Integer(40000), new JLabel("40"));
		labelTable.put(new Integer(50000), new JLabel("50"));
		labelTable.put(new Integer(60000), new JLabel("60"));
		labelTable.put(new Integer(70000), new JLabel("70"));
		labelTable.put(new Integer(80000), new JLabel("80"));
		labelTable.put(new Integer(90000), new JLabel("90"));

		slider.setLabelTable(labelTable);
		slider.setPaintLabels(true);
		conteneurNiv3_6.add(slider);
		conteneurPrincipal.add(conteneurNiv1_2, BorderLayout.EAST);



		aff_derniers_mess = new JTextArea(20,15);
		ordre_intel = new JTextArea(10,15);
		etat_robot = new JTextArea(10,15);

		conteneurNiv1_2.add(aff_derniers_mess);
		TitledBorder der_mess;
		der_mess = BorderFactory.createTitledBorder("Derniers messages");
		aff_derniers_mess.setBorder(der_mess);
		conteneurNiv1_2.add(conteneurNiv2_5);
		conteneurNiv2_5.add(ordre_intel);
		TitledBorder ordre_inteli;
		ordre_inteli = BorderFactory.createTitledBorder("Ordres intelligence");
		ordre_intel.setBorder(ordre_inteli);
		conteneurNiv2_5.add(etat_robot);
		TitledBorder et_rob;
		et_rob = BorderFactory.createTitledBorder("Etat du robot");
		etat_robot.setBorder(et_rob);

		//ajouts des bouttons aux diffàrents listeners
		Brep_source.addActionListener(this);
		Benregistrer.addActionListener(this);
		connexion_deconnexion.addActionListener(this);
		slider.addMouseListener(this);
		tmpReel.addActionListener(this);
		hrLigne.addActionListener(this);
		MAJ_ports.addActionListener(this);
		BLecture.addActionListener(this);
		BPause.addActionListener(this);
		BSuivant.addActionListener(this);
		BPrecedent.addActionListener(this);
		connexion.addActionListener(this);
		Bsend.addActionListener(this);
		download.addActionListener(this);
		fichiers.addActionListener(this);

		//appel de la fonction au démarage pour que le le temps réel soit activé
		tempsreel_active();

	}