Package vues.editeurTerrain

Source Code of vues.editeurTerrain.Panel_CreationEquipes

/*
  Copyright (C) 2010 Aurelien Da Campo
 
  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 3 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/

package vues.editeurTerrain;

import i18n.Langue;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
import vues.GestionnaireDesPolices;
import vues.LookInterface;
import vues.commun.Panel_Table;
import models.jeu.Jeu;
import models.joueurs.EmplacementJoueur;
import models.joueurs.Equipe;
import models.terrains.Terrain;

/**
* Panel de création d'équipes.
*
* Ce panel permet de gerer la creation des equipes. Le terrain contient les
* equipes qu'il peut accueillir pour une partie.
*
* @author Aurelien Da Campo
* @version 1.0 | juillet 2010
* @since jdk1.6.0_16
* @see Terrain
* @see Equipe
*/
public class Panel_CreationEquipes extends JPanel implements ActionListener
{
    private static final long serialVersionUID = 1L;
   
    // Images
    private static final ImageIcon I_AJOUTER_EQUIPE = new ImageIcon("img/icones/flag_add.gif");
    private static final ImageIcon I_AJOUTER = new ImageIcon("img/icones/add.png");
    private static final ImageIcon I_SUPPRIMER = new ImageIcon("img/icones/delete.png");
    private static final ImageIcon I_PARAMETRES = new ImageIcon("img/icones/wrench.png");
    private static final ImageIcon I_SELECTION_ZONE = new ImageIcon("img/icones/shape_handles.png");
   
    /**
     * Le jeu
     */
    private Jeu jeu;
    
    /**
     * id d'autoincrementation des equipes
     */
    private int idAutoIncrEquipe;
   
    /**
     * Tableau des equipes (visualisation)
     */
    private Panel_Table pTabEquipes = new Panel_Table();  
   
    /**
     * id d'autoincrementation des emplacements de joueurs
     */
    private int idAutoIncrEJ;
   
    /**
     * Le panel de creation du terrain (pour modification direct)
     *
     * Ce serait peut-etre mieux de faire un ecouteur...
     */
    private Panel_CreationTerrain panelCreationTerrain;
   
    /**
     * Bouton de creation d'une equipe
     */
    private JButton bCreerEquipe = new JButton(Langue.getTexte(Langue.ID_TXT_BTN_CREER),I_AJOUTER_EQUIPE);
   
    /**
     * Constructeur
     *
     * @param jeu le jeu
     * @param panelCreationTerrain le panel de creation du terrain
     */
    public Panel_CreationEquipes(Jeu jeu,Panel_CreationTerrain panelCreationTerrain)
    {
        super(new BorderLayout());
        setOpaque(false);
       
        this.jeu = jeu;
        this.panelCreationTerrain = panelCreationTerrain;
       
        // Initialisation des id au cas ou le terrain du jeu contient deja des equipes
        initIds();

        // Bouton d'ajout d'une equipe
        GestionnaireDesPolices.setStyle(bCreerEquipe);
        bCreerEquipe.addActionListener(this);
        bCreerEquipe.setBorder(new EmptyBorder(10, 10, 10, 10));
        add(bCreerEquipe,BorderLayout.NORTH);
       
        // Tableau des equipes
        pTabEquipes.setBackground(LookInterface.COULEUR_DE_FOND_SEC);
        JScrollPane jsTest = new JScrollPane(pTabEquipes);
        jsTest.setBorder(new EmptyBorder(0,0,0,0));
        jsTest.setOpaque(false);
        add(jsTest,BorderLayout.CENTER);
       
        // Remplissage du panel des equipes
        construirePanelEquipes();
       
        // Taille du panel
        setPreferredSize(new Dimension(400,200));
    }

    /**
     * Permet de contruire le panel des equipes.
     *
     * Le panel est dabord vide puis reconstruit
     */
    private void construirePanelEquipes()
    {
        // vidage
        pTabEquipes.removeAll();

        // ligne courante
        int ligne=0;
       
        // reinitialisation des ids des emplacements de joueurs
        idAutoIncrEJ = 1;
       
        // Pour chaque equipe du jeu...
        for(final Equipe equipe : jeu.getEquipes())
        {
            // Separateur
            JPanel lTrait = new JPanel();
            lTrait.setBorder(new LineBorder(LookInterface.COULEUR_DE_FOND_PRI, 4));
            lTrait.setPreferredSize(new Dimension(380,8));
            pTabEquipes.add(lTrait,0,ligne++,5,1);
           
            // Nom de l'équipe
            final JLabel lNomEquipe = new JLabel(equipe.getNom());
            lNomEquipe.setFont(GestionnaireDesPolices.POLICE_TITRE);
            lNomEquipe.setForeground(equipe.getCouleur());
            pTabEquipes.add(lNomEquipe,0,ligne);
           
            // Edition de l'equipe
            final JButton bEditerEquipe = new JButton(I_PARAMETRES);
            GestionnaireDesPolices.setStyle(bEditerEquipe);
            final Panel_CreationEquipes pce = this;
            bEditerEquipe.addActionListener(new ActionListener()
            {
                @Override
                public void actionPerformed(ActionEvent e)
                {
                    new Fenetre_EditionEquipe(pce,equipe);
                }
            });
            pTabEquipes.add(bEditerEquipe,1,ligne);
           
            // Suppression de l'equipe
            final JButton bSupprimerEquipe = new JButton(I_SUPPRIMER);
            GestionnaireDesPolices.setStyle(bSupprimerEquipe);
            pTabEquipes.add(bSupprimerEquipe,3,ligne);
           
            if(jeu.getEquipes().size() < 2) // Minimum 1 equipe
                bSupprimerEquipe.setEnabled(false);
            else
            {
                bSupprimerEquipe.addActionListener(new ActionListener()
                {
                    @Override
                    public void actionPerformed(ActionEvent e)
                    {
                        jeu.supprimerEquipe(equipe);
                       
                        construirePanelEquipes();
                    }
                });
            }
           
            ligne++;
           
            // Arrivee et departs
            // TODO Traduire
            JLabel lZonesDepart = new JLabel("Arrivee et departs");
            lZonesDepart.setFont(GestionnaireDesPolices.POLICE_SOUS_TITRE);
            pTabEquipes.add(lZonesDepart,0,ligne);
           
            JButton bAjouterZonesDepart = new JButton(I_AJOUTER);
            GestionnaireDesPolices.setStyle(bAjouterZonesDepart);
            bAjouterZonesDepart.addActionListener(new ActionListener()
            {
                @Override
                public void actionPerformed(ActionEvent e)
                {
                    equipe.ajouterZoneDepartCreatures(new Rectangle(0,0,40,40));
                   
                    construirePanelEquipes();
                }
            });
           
            pTabEquipes.add(bAjouterZonesDepart,1,ligne);
           
            ligne++;
           
           
            // Zone d'arrivée
            final JLabel bZoneArrive = new JLabel(Langue.getTexte(Langue.ID_TXT_BTN_ARRIVEE));
            GestionnaireDesPolices.setStyle(bZoneArrive);
            pTabEquipes.add(bZoneArrive,0,ligne);
           
            final JButton bSelectionZoneArrive = new JButton(I_SELECTION_ZONE);
            GestionnaireDesPolices.setStyle(bSelectionZoneArrive);
            pTabEquipes.add(bSelectionZoneArrive,2,ligne);
           
            bSelectionZoneArrive.addActionListener(new ActionListener()
            {
                @Override
                public void actionPerformed(ActionEvent e)
                {
                    panelCreationTerrain.setRecEnTraitement(equipe.getZoneArriveeCreatures());
                }
            });

            ligne++;
           
           
            // Pour chaque zones de depart
            for(int noZD=0;noZD<equipe.getNbZonesDepart();noZD++)
            {
                final Rectangle z = equipe.getZoneDepartCreatures(noZD);

                // Zone de depart
                final JLabel bZoneDepart = new JLabel(Langue.getTexte(Langue.ID_TXT_BTN_DEPART) + " - " + noZD);
                GestionnaireDesPolices.setStyle(bZoneDepart);
                pTabEquipes.add(bZoneDepart,0,ligne);               
               
                final JButton bSelectionZoneDepart = new JButton(I_SELECTION_ZONE);
                GestionnaireDesPolices.setStyle(bSelectionZoneDepart);
                pTabEquipes.add(bSelectionZoneDepart,2,ligne);
               
                bSelectionZoneDepart.addActionListener(new ActionListener()
                {
                    @Override
                    public void actionPerformed(ActionEvent e)
                    {
                        panelCreationTerrain.setRecEnTraitement(z);
                    }
                });
             
                final JButton bSupprimerZoneDepart = new JButton(I_SUPPRIMER);
                GestionnaireDesPolices.setStyle(bSupprimerZoneDepart);
                pTabEquipes.add(bSupprimerZoneDepart,3,ligne);
               
                if(equipe.getNbZonesDepart() == 1)
                    bSupprimerZoneDepart.setEnabled(false);
               
                bSupprimerZoneDepart.addActionListener(new ActionListener()
                {
                    @Override
                    public void actionPerformed(ActionEvent e)
                    {
                        if(equipe.getNbZonesDepart() > 1)
                        {
                            equipe.suppimerZoneDepart(z);
                           
                            construirePanelEquipes();
                        }    
                    }
                });
               
                ligne++;
            }     
            ligne++; 
           
            // -----------------------------
            // -- Emplacements de joueurs --
            // -----------------------------
            JLabel lEmplacementsDeJoueurs = new JLabel("Empl. Joueurs");
            lEmplacementsDeJoueurs.setFont(GestionnaireDesPolices.POLICE_SOUS_TITRE);
            pTabEquipes.add(lEmplacementsDeJoueurs,0,ligne);
           
            final JButton bNouvelEmplacement = new JButton(I_AJOUTER);
            GestionnaireDesPolices.setStyle(bNouvelEmplacement);
            pTabEquipes.add(bNouvelEmplacement,1,ligne);
           
            bNouvelEmplacement.addActionListener(new ActionListener()
            {
                @Override
                public void actionPerformed(ActionEvent e)
                {
                    equipe.ajouterEmplacementJoueur(new EmplacementJoueur(idAutoIncrEJ++, new Rectangle(0,0,jeu.getTerrain().getLargeur(),jeu.getTerrain().getHauteur())));
               
                    construirePanelEquipes();
                }
            });
            ligne++;

            for(final EmplacementJoueur ej : equipe.getEmplacementsJoueur())
            {
               
                JLabel lNomEmplacement = new JLabel(Langue.getTexte(Langue.ID_TXT_ZONE_JOUEUR)+ej.getId());
                GestionnaireDesPolices.setStyle(lNomEmplacement);
                pTabEquipes.add(lNomEmplacement,0,ligne);
               
                // Couleur
                final JButton bCouleurEmplacement = new JButton(I_PARAMETRES);
                GestionnaireDesPolices.setStyle(bCouleurEmplacement);
                pTabEquipes.add(bCouleurEmplacement,1,ligne);
                bCouleurEmplacement.addActionListener(new ActionListener()
                {
                    @Override
                    public void actionPerformed(ActionEvent e)
                    {
                        Color couleur = JColorChooser.showDialog(
                                null,"",ej.getCouleur());
                         
                        if(couleur != null)
                        {
                            ej.setCouleur(couleur);
                            bCouleurEmplacement.setBackground(couleur);
                        }
                    }
                });
               
                // Selection
                final JButton bSelectionnerEmplacement = new JButton(I_SELECTION_ZONE);
                GestionnaireDesPolices.setStyle(bSelectionnerEmplacement);
                pTabEquipes.add(bSelectionnerEmplacement,2,ligne);
                bSelectionnerEmplacement.addActionListener(new ActionListener()
                {
                    @Override
                    public void actionPerformed(ActionEvent e)
                    {
                        panelCreationTerrain.setRecEnTraitement(ej.getZoneDeConstruction());
                    }
                });
               
                if(ej.getId() >= idAutoIncrEJ)
                    idAutoIncrEJ = ej.getId() + 1;
               
               
                // Suppression
                final JButton bSupprimerEmplacement = new JButton(I_SUPPRIMER);
                GestionnaireDesPolices.setStyle(bSupprimerEmplacement);
                pTabEquipes.add(bSupprimerEmplacement,3,ligne);
               
                if(equipe.getNbEmplacements() == 1)
                    bSupprimerEmplacement.setEnabled(false);
               
                bSupprimerEmplacement.addActionListener(new ActionListener()
                {
                    @Override
                    public void actionPerformed(ActionEvent e)
                    {
                        equipe.supprimerEmplacement(ej);
                       
                        construirePanelEquipes();
                    }
                });
               
                ligne++;
            }
        }

        pTabEquipes.repaint();
        pTabEquipes.revalidate();
        pTabEquipes.validate();
    }

    @Override
    public void actionPerformed(ActionEvent e)
    {
        Object src = e.getSource();
       
        if(src == bCreerEquipe)
        {
            Equipe equipe = new Equipe(idAutoIncrEquipe, Langue.getTexte(Langue.ID_TXT_EQUIPE)+" "+idAutoIncrEquipe, Color.BLACK);
           
            jeu.ajouterEquipe(equipe);
           
            // TODO positionner au milieu du viewport
            equipe.ajouterZoneDepart(new Rectangle(40,40,40,40));
            equipe.setZoneArriveeCreatures(new Rectangle(140,140,40,40));
           
            equipe.ajouterEmplacementJoueur(new EmplacementJoueur(idAutoIncrEJ++, new Rectangle(0,0,jeu.getTerrain().getLargeur(),jeu.getTerrain().getHauteur())));

            idAutoIncrEquipe++;
           
            construirePanelEquipes();
        }
    }

    /**
     * Permet de mettre a jour tout le panel
     */
    public void miseAJour()
    {
        initIds();
        construirePanelEquipes();
    }

    /**
     * Initilise les ids en fonction de l'etat actuel du jeu
     */
    private void initIds() {
       
        // initialisation de l'id courant -> recupere l'id le plus grand + 1
        idAutoIncrEquipe = 0;
        for(Equipe e : jeu.getEquipes())
            if(e.getId() > idAutoIncrEquipe)
                idAutoIncrEquipe = e.getId();
        idAutoIncrEquipe++;
    }
}
TOP

Related Classes of vues.editeurTerrain.Panel_CreationEquipes

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.