package animationPersonnages; import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.ArrayList; import java.util.Vector; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import personnages.Balle; import personnages.Bonhomme; import personnages.Chien; import personnages.Personnage; public class IHMPersonnages extends JPanel implements KeyListener, ActionListener, ListSelectionListener, ItemListener , MouseListener{ public static final long serialVersionUID = 1; private int largeur = 600; private int hauteur = 400; private JButton creer = new JButton("Creer"); private JButton pas = new JButton("Un pas"); private JButton tuer = new JButton("Tuer"); private JCheckBox rectangle = new JCheckBox("rectangle"); private JCheckBox cyclique= new JCheckBox("cyclique"); private JList listeCouleurs; private JTextField saisie=new JTextField(4); private JCheckBox droite = new JCheckBox("droite"); private JCheckBox gauche = new JCheckBox("gauche"); private int taille = 40; private Color couleur = Color.BLACK; private int direction = Personnage.DROITE; JMenuBar menuBarre = new JMenuBar(); private JMenu menu1 = new JMenu("personnage"); private JMenuItem itemBonhomme=new JMenuItem("bonhomme"); private JMenuItem itemChien =new JMenuItem("chien"); private JMenuItem itemBalle =new JMenuItem("balle"); private int genre = BONHOMME; private static int BONHOMME = 100; private static final int BALLE = 101; private static final int CHIEN = 102; protected JPanel panneauBoutons; protected Box panneauTextes; private Personnage personnageSelectionne; DessinPersonnages panneauDessin = new DessinPersonnages(this); ArrayList personnages = new ArrayList(); public IHMPersonnages() { JPanel zone; ButtonGroup groupe; Vector liste; setLayout(new BorderLayout(5, 5)); addKeyListener(this); creer.addActionListener(this); pas.addActionListener(this); saisie.addActionListener(this); tuer.addActionListener(this); itemBonhomme.addActionListener(this); itemChien.addActionListener(this); itemBalle.addActionListener(this); droite.addItemListener(this); gauche.addItemListener(this); rectangle.addItemListener(this); cyclique.addItemListener(this); panneauBoutons = new JPanel(); zone = new JPanel(); zone.setLayout(new GridLayout(3, 1)); zone.add(creer); zone.add(pas); zone.add(tuer); panneauBoutons.add(zone); groupe = new ButtonGroup(); groupe.add(droite); groupe.add(gauche); droite.setSelected(true); zone = new JPanel(); zone.setLayout(new BoxLayout(zone, BoxLayout.Y_AXIS)); zone.add(gauche); zone.add(droite); zone.add(rectangle); zone.add(cyclique); panneauBoutons.add(zone); liste = new Vector(); liste.add(Couleur.ROUGE); liste.add(Couleur.VERT); liste.add(Couleur.BLEU); liste.add(Couleur.MAGENTA); liste.add(Couleur.JAUNE); liste.add(Couleur.ORANGE); liste.add(Couleur.ROSE); liste.add(Couleur.CYAN); liste.add(Couleur.NOIR); listeCouleurs = new JList(liste); listeCouleurs.addListSelectionListener(this); JScrollPane listeAvecAscenseurs = new JScrollPane(listeCouleurs); panneauBoutons.add(listeAvecAscenseurs); saisie.setText(Integer.toString(taille)); panneauTextes = Box.createVerticalBox(); panneauTextes.add(new JLabel("valider avec entree")); zone = new JPanel(); zone.add(new JLabel("taille")); zone.add(saisie); panneauTextes.add(zone); panneauBoutons.add(panneauTextes); add(panneauBoutons, BorderLayout.NORTH); add(panneauDessin, BorderLayout.CENTER); menuBarre.add(menu1); menu1.add(itemBonhomme); menu1.add(itemChien); menu1.add(itemBalle); setBackground(Color.WHITE); setSize(largeur, hauteur); setVisible(true); } public void setHauteur(int hauteur) { this.hauteur = hauteur; } public int getLargeur() { return largeur; } public JMenuBar getMenuBarre() { return menuBarre; } public void setLargeur(int largeur) { this.largeur = largeur; } public int getHauteur() { return hauteur; } public Personnage getPersonnageSelectionne() { return personnageSelectionne; } public ArrayList getPersonnages() { return personnages; } public void actionPerformed(ActionEvent e) { if (e.getSource() == creer) { if (personnageSelectionne != null) personnageSelectionne.setTour(false); taille = Integer.parseInt(saisie.getText()); if (genre == BONHOMME) personnageSelectionne = new Bonhomme(panneauDessin,largeur/2, 2 * hauteur /3 , taille, couleur, cyclique.isSelected()); else if (genre == BALLE) personnageSelectionne = new Balle(panneauDessin, 3 * largeur / 4, 2 * hauteur / 3, taille, couleur,cyclique.isSelected()); else if (genre == CHIEN) personnageSelectionne = new Chien(panneauDessin,largeur / 4, 2 * hauteur / 3, taille, couleur, cyclique.isSelected()); personnages.add(personnageSelectionne); rectangle.setSelected(true); personnageSelectionne.setTour(true); personnageSelectionne.setDirection(direction); personnageSelectionne.setTaille(taille); panneauDessin.repaint(); } else if ((e.getSource() == pas) && (personnageSelectionne != null)) { personnageSelectionne.fairePas(); if (personnageSelectionne.estSupprime()) { personnages.remove(personnageSelectionne); personnageSelectionne = null; } panneauDessin.repaint(); } else if (e.getSource()==itemBonhomme) genre=BONHOMME; else if (e.getSource()==itemChien) genre=CHIEN; else if (e.getSource()==itemBalle) genre=BALLE; else if (e.getSource() == saisie) { try { taille = Integer.parseInt(saisie.getText()); if (personnageSelectionne != null) personnageSelectionne.setTaille(taille); } catch(NumberFormatException exc){}; } else if ((e.getSource() == tuer) && (personnageSelectionne != null)) { personnageSelectionne.supprimer(); personnages.remove(personnageSelectionne); personnageSelectionne = null; panneauDessin.repaint(); } requestFocus(); } public void valueChanged(ListSelectionEvent evt) { if (evt.getSource() == listeCouleurs) { couleur = (Couleur) listeCouleurs.getSelectedValue(); if (personnageSelectionne !=null) personnageSelectionne.setCouleur(couleur); } } public void itemStateChanged(ItemEvent evt) { if (evt.getSource()==droite) { direction = Personnage.DROITE; if (personnageSelectionne != null) personnageSelectionne.setDirection(direction); } else if (evt.getSource()==gauche) { direction = Personnage.GAUCHE; if (personnageSelectionne != null)personnageSelectionne.setDirection(direction); } else if (evt.getSource() == rectangle) { if(personnageSelectionne != null) { personnageSelectionne.setTour(rectangle.isSelected()); } } else if ((evt.getSource() == cyclique) && (personnageSelectionne != null)) { personnageSelectionne.setCyclique(!personnageSelectionne.getCyclique()); } requestFocus(); } public void mouseClicked(MouseEvent evt) { int x = evt.getX(); int y = evt.getY(); Personnage select = null; for (Personnage p : personnages) if (p.estDedans(x, y)) { select = p; break; } if (select != null) { if (personnageSelectionne != null) personnageSelectionne.setTour(false); personnageSelectionne = select; if (select.getDirection() == Personnage.DROITE) droite.setSelected(true); else gauche.setSelected(true); cyclique.setSelected(select.getCyclique()); personnageSelectionne.setTour(true); repaint(); } } public void mouseReleased(MouseEvent evt) {} public void mouseEntered(MouseEvent evt) {} public void mouseExited(MouseEvent evt) {} public void mousePressed(MouseEvent evt) {} public void keyPressed(KeyEvent evt) { if ((evt.getKeyCode() == ' ') && (personnageSelectionne != null)) personnageSelectionne.sauter(); } public void keyReleased(KeyEvent evt){} public void keyTyped(KeyEvent evt){} }