import java.util.*;
import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

import Composants.*;
public class SimplePaintApp {
		public static void main(String[] args) {
				JFrame f = new JFrame("Dessin");
				f.addWindowListener(new Fermeur());
				f.setContentPane(new SimplePaint());
				f.setSize(400,300);
				f.setVisible(true);
		}
}

class SimplePaint extends JPanel {
  protected Vector formes = new Vector();
  protected PaintCanvas canvas = new PaintCanvas(formes);
	protected int width = 50;
  protected int height = 50;

  public SimplePaint() {
		setLayout(new BorderLayout());
    add(new Label("Do it",Label.CENTER), BorderLayout.NORTH);
    add(canvas, BorderLayout.CENTER);
    canvas.addMouseListener(new AjouterForme());  
  }
		
  class AjouterForme extends MouseAdapter {
    public void mousePressed(MouseEvent e) {
      Shape shape;
			if (e.isShiftDown())
				shape = new Ellipse2D.Double(e.getX(), e.getY(), width, height);
			else
				shape = new Rectangle2D.Double(e.getX(), e.getY(), width, height);
			formes.addElement(shape);
			canvas.repaint();
		}
	}
}

class PaintCanvas extends JPanel {
  Vector formes;

  public PaintCanvas(Vector formes) {
    super();
    this.formes = formes;
    setOpaque(true);
    setBackground(Color.white);
  }

  public void paintComponent(Graphics g) {
		Graphics2D g2 = (Graphics2D) g;
    super.paintComponent(g2);
    g2.setColor(Color.black);
    Enumeration enum = formes.elements();
    while(enum.hasMoreElements()) {
      Shape shape = (Shape) enum.nextElement();
      g2.draw(shape);
    }
  }
}




