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