Edicion.java_



import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Edicion extends JFrame
{
	JMenu MenuFig, MenuColor, MenuEdita, MenuFactor, MenuAyuda;
	JMenuItem Figuras_Circ, Figuras_Cuadro, Figuras_Triang, Figuras_Salir, menuItem;
	JMenuItem Color_Rojo, Color_Verde, Color_Azul;
	JMenuItem Edit_Mover, Edit_Escala, Edit_Rotar;
	JMenuItem Factor_50, Factor_100;
	int TipoDibujo = 0, X=0, Y=0, Editar=0;
	Color MyColor = Color.black;
	Eventos canvas;

	public Edicion ()
	{
		this.getContentPane().setLayout(null);	// Contenedor nulo
		this.setTitle("TOpicos de la animaciOn");	// Titulo de la ventana
		this.setResizable(false);			// No es redimensionable
		this.setLocation(50, 100);			// Posicion
		this.setSize(new Dimension(1200, 750));	// Dimensiones
		this.toFront();

		JMenuBar BarraMenu = new JMenuBar();		// Barra de menU
		
			MenuFig = InsertaMenu("Figuras");
				MenuFig.setMnemonic(KeyEvent.VK_A);		// Se accesa con Alt-A
				InsertaItem(MenuFig, Figuras_Circ, "Circulo", KeyEvent.VK_I);	// Se accesa con Alt-N
				InsertaItem(MenuFig, Figuras_Cuadro, "Cuadro", KeyEvent.VK_U);
				InsertaItem(MenuFig, Figuras_Triang, "Triangulo", KeyEvent.VK_T);
				InsertaItem(MenuFig, Figuras_Salir, "Salir", KeyEvent.VK_S);	// Se accesa con Alt-S
			MenuColor = InsertaMenu("Colores");
				MenuColor.setMnemonic(KeyEvent.VK_P);		// Se accesa con Alt-P
				InsertaItem(MenuColor, Color_Rojo, "Rojo", KeyEvent.VK_T);	// Se accesa con Alt-T
				InsertaItem(MenuColor, Color_Verde, "Verde", KeyEvent.VK_R);	// Se accesa con Alt-R
				InsertaItem(MenuColor, Color_Azul, "Azul", KeyEvent.VK_N);
			MenuEdita = InsertaMenu("Edicion");
				MenuEdita.setMnemonic(KeyEvent.VK_E);           // Se accesa con Alt-E
				InsertaItem(MenuEdita, Edit_Mover, "Mover", KeyEvent.VK_N);
				InsertaItem(MenuEdita, Edit_Escala, "Escalar", KeyEvent.VK_N);
				InsertaItem(MenuEdita, Edit_Rotar, "Rotar", KeyEvent.VK_N);

			 MenuFactor = InsertaMenu("Factor");
                         MenuFactor.setMnemonic(KeyEvent.VK_F);           // Se accesa con Alt-E
	                         InsertaItem(MenuFactor, Factor_50, "50 %", KeyEvent.VK_N);
	                         InsertaItem(MenuFactor, Factor_100, "100 %", KeyEvent.VK_N);
			MenuAyuda = InsertaMenu("Ayuda");	
				
				JMenuItem Ayuda_Eins = new JMenuItem(new ImageIcon("Einstein_17.jpg"));
				Ayuda_Eins.setMnemonic(KeyEvent.VK_E);			// Se accesa con Alt-E
				MenuAyuda.add(Ayuda_Eins);
			BarraMenu.add(MenuFig);
			BarraMenu.add(MenuColor);
			BarraMenu.add(MenuEdita);
			BarraMenu.add(MenuFactor);
			BarraMenu.add(MenuAyuda);
		setJMenuBar(BarraMenu);
		canvas = new Eventos();
		canvas.setBounds(0,0,1000,600);
		this.add(canvas);
		this.setVisible(true);
	}

	JMenu InsertaMenu(String CAD) { return new JMenu(CAD); }

	void InsertaItem(JMenu MENU, JMenuItem ITEM, String CAD, int KEY_EVENT)
	{
		ITEM = new JMenuItem(CAD);
		ITEM.setMnemonic(KEY_EVENT);
		MENU.add(ITEM);
		ITEM.addActionListener(new Evento_Opciones());
	}

	public static void main(String R[]) { new Edicion(); }

	protected void processWindowEvent(WindowEvent e)
	{ if (e.getID() == WindowEvent.WINDOW_CLOSING) System.exit(0); }

	class Evento_Opciones implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			if (e.getActionCommand().equals("Salir")) System.exit(0);
			if (e.getActionCommand().equals("Circulo")) TipoDibujo = 1;
			if (e.getActionCommand().equals("Cuadro")) TipoDibujo = 2;
			if (e.getActionCommand().equals("Triangulo")) TipoDibujo = 3;
			if (e.getActionCommand().equals("Rojo")) MyColor = Color.red;
			if (e.getActionCommand().equals("Verde")) MyColor = Color.green;
			if (e.getActionCommand().equals("Azul")) MyColor = Color.blue;
			if (e.getActionCommand().equals("Mover")) Editar = 1;
			if (e.getActionCommand().equals("Escalar")) Editar = 2;
			if (e.getActionCommand().equals("Rotar")) Editar = 3;
			if (e.getActionCommand().equals("50 %")) canvas.Actualiza(50);
			if (e.getActionCommand().equals("100 %")) canvas.Actualiza(100);
			canvas.Actualiza(TipoDibujo, MyColor, Editar);
			canvas.repaint();
		}
	}
}

class Eventos extends JPanel implements MouseListener
{
	int X=0, Y=0, TipoDibujo=0, Editar=0, Ancho=0, Alto=0;
	double Escala=0.0;
	Color MyColor;
	
	public Eventos()
	{
		setBackground(Color.blue);
		addMouseListener(this);
		Ancho = Alto = 100;
	}
	
	void Actualiza(int TipoDibujo, Color MyColor, int Editar)
	{
		this.TipoDibujo = TipoDibujo;
		this.MyColor = MyColor;
		this.Editar = Editar;
	}

	void Actualiza(int Escala) { if (this.Escala != Escala) this.Escala = Escala; Edicion(); }
	
	public void mouseClicked(MouseEvent e){ System.out.println("OK"); X = e.getX(); Y = e.getY(); Edicion(); }
	public void mousePressed(MouseEvent e){};
	public void mouseReleased(MouseEvent e){};
	public void mouseEntered(MouseEvent e){};
	public void mouseExited(MouseEvent e){};

	void Edicion()
	{
		if (Editar == 1) { }		// MOVER
		if (Editar == 2)
		{
			if (Escala == 50) { Ancho *= .5; Alto *= .5; }
			else { Ancho *= 2; Alto *= 2; }
		}
		repaint();	
	}
	public void paint(Graphics G)
        {
                int XPoints[] = {X, X-Ancho, X+Alto, X};
                int YPoints[] = {Y, Y+Ancho, Y+Alto, Y};
                G.setColor(Color.white);
                G.clearRect(80, 80, 1000, 600);
                G.setColor(MyColor);
                switch(TipoDibujo)
                {
                        case 1:
                              G.drawOval(X, Y, Ancho, Alto);
                              break;
                        case 2:
                              G.drawRect(X, Y, Ancho, Alto);
                              break;
                        case 3:
                              G.drawPolyline(XPoints, YPoints, 4);
                              break;
                }
        }
}