Editor.java_



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

public class Editor extends JFrame
{
	JMenu MenuArchivo, MenuAyuda;
	JMenuItem Archivo_Nuevo, Archivo_Salir, Ayuda;
	AreaEditable AE;
	
	public Editor ()
	{
		this.getContentPane().setLayout(null);	// Contenedor nulo
		this.setTitle("Editor 1.0");	// Titulo de la ventana
		this.setResizable(true);			// Si es redimensionable
		this.setLocation(100, 100);			// Posicion
		this.setSize(new Dimension(600, 450));	// Dimensiones
		this.toFront();

		JMenuBar BarraMenu = new JMenuBar();		// Barra de menU
		
			MenuArchivo = InsertaMenu("Archivo");
				MenuArchivo.setMnemonic(KeyEvent.VK_A);		// Se accesa con Alt-A
				InsertaItem(MenuArchivo, Archivo_Nuevo, "Nuevo", KeyEvent.VK_N);	// Se accesa con Alt-N
				InsertaItem(MenuArchivo, Archivo_Salir, "Salir", KeyEvent.VK_S);	// Se accesa con Alt-S
			MenuAyuda = InsertaMenu("Ayuda");
				MenuAyuda.setMnemonic(KeyEvent.VK_Y);		// Se accesa con Alt-Y
				InsertaItem(MenuAyuda, Ayuda, "Acerca de", KeyEvent.VK_A);	// Se accesa con Alt-A
			BarraMenu.add(MenuArchivo);
			BarraMenu.add(MenuAyuda);
		setJMenuBar(BarraMenu);

		AE = new AreaEditable();
		AE.setBounds(10, 10, 550, 390);
		getContentPane().add(AE);
		AE.addMouseListener(new EventoRaton());

		this.show();
	}

	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 Editor(); }

	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("Nuevo"))
			{
				
			}
			if (e.getActionCommand().equals("Acerca de"))
				JOptionPane.showMessageDialog(null,
				"Autor: J. Rafael R. Ochoa\nSID - FIE - UMSNH\nJunio del 2004", "Animación Versión 2",
				JOptionPane.INFORMATION_MESSAGE);
		}
	}
	
	class EventoRaton implements MouseListener
	{
		public void mouseEntered(MouseEvent e) {}	// no me interesa
		public void mouseExited(MouseEvent e) {}	// no me interesa
		public void mousePressed(MouseEvent e) {}	// no me interesa
		public void mouseReleased(MouseEvent e) {}	// no me interesa
		public void mouseClicked(MouseEvent e)
		{
			String boton = "";
			switch (e.getButton())
			{
				case MouseEvent.BUTTON1: boton = "izquierdo"; break;
				case MouseEvent.BUTTON2: boton = "centro"; break;
				case MouseEvent.BUTTON3: boton = "derecho"; break;
			}
			AE.setText("Area " + boton);
		}
	}
}

class AreaEditable extends TextArea // implements ActionListener, KeyListener
{
	PseudoCodigo PC;

	public AreaEditable()
	{
		PC = new PseudoCodigo(this);
		// PC.addMouseListener(new Evento());
	}


	class Evento implements MouseListener
	{
		public void mouseEntered(MouseEvent e) {}	// no me interesa
		public void mouseExited(MouseEvent e) {}	// no me interesa
		public void mousePressed(MouseEvent e) {}	// no me interesa
		public void mouseReleased(MouseEvent e) {}	// no me interesa
		public void mouseClicked(MouseEvent e) { setText("Puntos"); }
	}
}

class PseudoCodigo extends Thread
{
	Thread Hilo;
	String Prompt = "<...>";
	String Contenido = "";
	AreaEditable AE;

	public PseudoCodigo(AreaEditable AE)
	{
		this.AE = AE;
		start();
	}

	public void run( )
	{
		boolean TipoPrompt = true;

		while(true)
		{
			try { Thread.sleep(200); } catch(InterruptedException r) { }

			if (TipoPrompt) { Prompt = "<...>"; TipoPrompt = false; }
			else { Prompt = "{...}"; TipoPrompt = true; }
			AE.setText(Prompt);
		}
	}
}