@Override
    /**
     * Méthode appelée a chaque fois que le dessin doit etre redessine
     * C'est ici que l'on peint tous les composants
     */
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
              
        ZoneGeographique zg = Controleur.getInstance().getZone();

        Graphics2D g2 = (Graphics2D) g;
        
        for(VueTroncon vTr : vueTroncons){
            vTr.setOrigViewX(border + this.getX() + zg.getNoeudById(vTr.getTronconModel().getIdOrigine()).getXMetre()*(this.getWidth() - 2*border) / XVille);
            vTr.setOrigViewY(border + this.getY() + zg.getNoeudById(vTr.getTronconModel().getIdOrigine()).getYMetre()*(this.getHeight() -2*border) / YVille);
            vTr.setDestViewX(border + this.getX() + zg.getNoeudById(vTr.getTronconModel().getIdDestination()).getXMetre()*(this.getWidth() - 2*border) / XVille);
            vTr.setDestViewY(border + this.getY() + zg.getNoeudById(vTr.getTronconModel().getIdDestination()).getYMetre()*(this.getHeight() -2*border) / YVille);

            g2.setStroke(new BasicStroke(3));
            g2.drawLine(vTr.origViewX, vTr.origViewY, vTr.destViewX, vTr.destViewY);
        }


        if (vueTournee != null){
            for (VueTroncon vTr : getVueTournee().vTroncons) {

                vTr.setOrigViewX(border + this.getX() + zg.getNoeudById(vTr.getTronconModel().getIdOrigine()).getXMetre()*(this.getWidth() - 2*border) / XVille);
                vTr.setOrigViewY(border + this.getY() + zg.getNoeudById(vTr.getTronconModel().getIdOrigine()).getYMetre()*(this.getHeight() -2*border) / YVille);
                vTr.setDestViewX(border + this.getX() + zg.getNoeudById(vTr.getTronconModel().getIdDestination()).getXMetre()*(this.getWidth() - 2*border) / XVille);
                vTr.setDestViewY(border + this.getY() + zg.getNoeudById(vTr.getTronconModel().getIdDestination()).getYMetre()*(this.getHeight() -2*border) / YVille);

                g2.setStroke(new BasicStroke(5));
                g2.setColor(Color.BLUE);
                g2.drawLine(vTr.origViewX, vTr.origViewY, vTr.destViewX, vTr.destViewY);
                
                g2.setStroke(new BasicStroke(3));
                new Fleche(vTr).draw(g2);
            }
        }
        
        for(VueNoeud vN : vueNoeuds){
                vN.setVueX(border + this.getX() + vN.getNoeudModele().getXMetre()*(this.getWidth() - 2*border) / XVille);
                vN.setVueY(border + this.getY() + vN.getNoeudModele().getYMetre()*(this.getHeight() - 2*border) / YVille);

                g2.setColor(vN.getCouleur());
                if (vN.getEtatLivraison()==EtatNoeud.LIVRAISON)
                {
                    g2.fillOval(vN.getVueX()-VueNoeud.DIAMETRE_LIVRAISON/2, vN.getVueY()-VueNoeud.DIAMETRE_LIVRAISON/2, VueNoeud.DIAMETRE_LIVRAISON, VueNoeud.DIAMETRE_LIVRAISON);
                }
                else if (vN.getCouleur() == Color.ORANGE){
                    g2.draw(new Rectangle2D.Double((vN.getVueX()-7.5),(vN.getVueY()-7.5),15,15));
                }
                else {
                    g2.fillOval(vN.getVueX()-VueNoeud.DIAMETRE/2, vN.getVueY()-VueNoeud.DIAMETRE/2, VueNoeud.DIAMETRE, VueNoeud.DIAMETRE);
                }
        }
    }