import tools.*;
import java.awt.*;
import java.awt.event.*;

class ShowFile extends Program {
  // Componentes o widgets
  Frame vent;      // La ventana
  Panel panel;     // Un panel para colocar la etiqueta, el campo y el boton
  Label etiq;      // una etiqueta que dice "Archivo: "
  TextField campo; // Un campo de texto para el ingreso del nombre del archivo
  Button boton;    // Un boton para indicar cuando se debe mostrar el archivo
  Button salir;    // Un boton para terminar la aplicacion
  TextArea texto;  // Un area de texto en donde se mostrara el archivo

  void run() {
    // Crear la ventana
    vent= new Frame("Type");
    // Establecer una politica de organizacion (layout) de la ventana
    vent.setLayout(new BorderLayout());
    // Crear los widgets
    panel= new Panel();
    panel.setLayout(new FlowLayout());
    etiq= new Label("Archivo: ");
    campo= new TextField(15);
    boton= new Button("mostrar");
    salir= new Button("salir");
    texto= new TextArea(5, 15);
    // Colocarlos en el panel y la ventana
    panel.add(etiq);
    panel.add(campo);
    panel.add(boton);
    panel.add(salir);
    vent.add("Center", texto);
    vent.add("South", panel);
    // Agregar oyentes
    ActionListener oyente= new MuestraArchivo(this);
    boton.addActionListener(oyente);
    campo.addActionListener(oyente);
    salir.addActionListener(new Salir());
    // Mostrar la ventana
    vent.pack();
    vent.show();
  }
}

class MuestraArchivo extends Program
                     implements ActionListener {
  ShowFile show;
  MuestraArchivo(ShowFile show) {
    this.show= show;
  }
  public void actionPerformed(ActionEvent e) {
    String nomArch= show.campo.getText();
    show.campo.setText("");
    TextReader lect= new TextReader(nomArch);
    StringBuffer buff= new StringBuffer();
    while(true) {
      String lin= lect.readLine();
      if (lect.eofReached())
        break;
      buff.append(lin);
      buff.append("\n");
    }
    show.texto.setText(buff.toString());
  }
}

class Salir extends Program
                    implements ActionListener {
  public void actionPerformed(ActionEvent e) {
    System.exit(0);
  }
}
