import java.io.*;
import java.awt.*;
import java.awt.event.*;

public class Editor extends Frame implements ActionListener
{
  Menu arq = new Menu("Arquivo");
  Menu editar = new Menu("Editar");
  Menu ajuda = new Menu("Ajuda");

  MenuBar mbar = new MenuBar();

  String conteudo= "";

  TextArea tx = new TextArea(conteudo,25,80);

  MenuItem novo = new MenuItem("Novo");
  MenuItem abrir = new MenuItem("Abrir");
  MenuItem salvar = new MenuItem("Salvar");
  MenuItem salvarcomo = new MenuItem("Salvar Como...");
  MenuItem separa = new MenuItem("-");
  MenuItem sair   = new MenuItem("Sair");

  MenuItem selecionartudo = new MenuItem("Selecionar Tudo");

  MenuItem ajd = new MenuItem("Ajuda");
  MenuItem sobre = new MenuItem("Sobre...");



  public Editor()
  {
    super();
    inicio();
  }

  public Editor(String titulo)
  {
    super(titulo);
    inicio();
  }

  public void inicio()
  {
    setMenuBar(mbar);
 //--------------------adicionando componentes MenuItem
    arq.add(novo);
    arq.add(abrir);
    arq.add(salvar);
    arq.add(salvarcomo);
    arq.add(separa);
    arq.add(sair);

    editar.add(selecionartudo);

    ajuda.add(ajd);
    ajuda.add(sobre);
//---------------------adicionando os Eventos dos MenuItem
//---------------------utilizo ActionListener pois são MenuItem
    novo.addActionListener(this);
    abrir.addActionListener(this);
    salvar.addActionListener(this);
    salvarcomo.addActionListener(this);
    sair.addActionListener(this);

    ajd.addActionListener(this);
    sobre.addActionListener(this);

    selecionartudo.addActionListener(this);

 //--------------------adicao das duas barras
    mbar.add(arq);
    mbar.add(editar);
    mbar.add(ajuda);

//---------------------adiciono TextArea
    add(tx);
    tx.setBackground(Color.green );
       pack();
//---------------------habilito eventos da janela
    enableEvents(WindowEvent.WINDOW_CLOSING);

    //CheckBoxMenuItem coords = new CheckBoxMenuItem("Mostra Coordenadas");
    //meumenu.add(coords);

    //Como utilizo o Canvas?
    //Canvas cv = new Canvas();
   // add(cv);
   salvar.disable();
  }
  public void processWindowEvent(WindowEvent e)
  {
    if(e.getID()==WindowEvent.WINDOW_CLOSING)
    {
     System.exit(0);
    }
  }

  public void actionPerformed(ActionEvent evt)
  {
    if(evt.getSource()==novo)
    {
       tx.setText(" ");
       salvar.disable();
    }

    if(evt.getSource()==abrir)
    {
      tx.setText(" ");
      FileDialog fd1 = new FileDialog(this,"Abrir",FileDialog.LOAD);
      fd1.setVisible(true);

    try
	  {
     String texto;
		 String strFileName = fd1.getDirectory()+ fd1.getFile();
		 FileReader fr=new FileReader(strFileName );
		 BufferedReader br = new BufferedReader(fr);
	  	do
  	  {
			   texto=br.readLine();
         if(texto!=null)
         tx.append(texto+"\n");
		  }while(texto!=null);
	   fr.close();
    }
	  catch( IOException e )
	  {
		  System.out.println( "Erro" );
	  }

    }

    if(evt.getSource()==selecionartudo)
    {
      tx.selectAll();
    }

    if(evt.getSource() ==sair)
    {
       System.exit(0);
    }

    if(evt.getSource()==salvar)
    {
      FileDialog fd = new FileDialog(this,"Salvar",FileDialog.SAVE);
      //fd.setFile("semnome.txt");
    //fd.setVisible(true);
    try
	  {
    String strFileName = fd.getDirectory()+ fd.getFile();
		FileWriter fr=new FileWriter(strFileName );
    fr.write(tx.getText());
	  fr.close();
    }
	  catch( IOException e )
	  {
		  System.out.println( "Erro" );
	  }

  }
    if(evt.getSource()==salvarcomo)
    {
      salvar.enable(true);
      FileDialog fd = new FileDialog(this,"SalvarComo",FileDialog.SAVE);
      fd.setFile("semnome.txt");
     fd.setVisible(true);
    try
	  {
    String strFileName = fd.getDirectory()+ fd.getFile()+".txt";
		FileWriter fr=new FileWriter(strFileName );
    fr.write(tx.getText());
	  fr.close();
    }
	  catch( IOException e )
	  {
		  System.out.println( "Erro" );
	  }
  }
 }
  public static void main(String marcelo[]) throws Exception
  {
    Editor ed = new Editor("Notes-Puc");
    ed.setVisible(true);
   }
}
