/**
 *
 * <p>Titulo: Servidor de respuestas a preguntas</p>
 * <p>Descripcion: Este programa permite mostrar y gestionar acciones del menu
 * y recepcionar las respuestas a esta.
 * </p>
 * @author Diego Gonzalez Barrientos
 * @version 1.0
 */


//Paquete en el que se encapsula todo el codigo del servidor
package servidorpreguntas;
import java.util.Vector;
import java.io.*;
/**Basicamente administra el menu que se imprime en la linea de comandos.
*Por lo tanto permite el manejo de eventos
*/
public class MessageUI
{


  public void addCommand( String s )
  {
    commands.add( s );
  }
/**Metodo Constructor.
*@param l Referencia a objeto que se hara cargo de los eventos
*/
  public void setCommandListener( CommandListener l )
  {
    listener = l;
  }
/**Metodo principal de la clase. Muestra en pantalla el menu. Y espera respuestas a traves de la entrada estandar
*/
  public void showui()
  {
    for ( int i=0; i< commands.size(); i++ )
    {
      String s = (String) commands.elementAt( i );
      System.out.println("["+i+"]"+s);
    }

    Thread t = new Thread()
    {
      public void run()
      {
        // we need to wait for user input from console,
        // so fork a new thread to be blocked
        try
        {
          BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
          String s = in.readLine();
          if ( listener != null )
            listener.commandAction( (String)commands.elementAt(Integer.parseInt(s)), MessageUI.this);
        } catch (Exception e)
        {
          e.printStackTrace();
        }

      }
    };
    t.start();
  }
/** Vector de Strings
*/
  Vector commands = new Vector(); // Vector of String
/**Referencia a receptor de eventos
*/
  protected CommandListener listener = null;

}
