/* Learning Net - shlomy boshy 031868912
 * Reinforcement Learning network simulation  
 */
package learnnet;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;

public class NetApplet extends Applet {
  String[] args=new String[9];
  NetworkThread NTT;

  TextArea T=new TextArea();
  
  class NetworkThread extends Thread {
    NetApplet myapplet;    
    NetworkThread(NetApplet myapplet){
      this.myapplet=myapplet;      
    }   
    public void run(){
     try {
       Network.main_func(myapplet,args);
     } catch (Exception e){
      e.printStackTrace(); 
     } 
    }    
  } /*end class NetworkThread */

  public String getParameter(String key, String def) {
    return
      (getParameter(key) != null ? getParameter(key) : def);
  }



  public NetApplet() {
  }


  public void init() {    
    try { args[0] = this.getParameter("TOPOLOGY", ""); } catch (Exception e) { e.printStackTrace(); }    
    try { args[1] = this.getParameter("INPUTPATTERN", ""); } catch (Exception e) { e.printStackTrace(); }    
    try { args[2] = this.getParameter("ROUTINGALG", ""); } catch (Exception e) { e.printStackTrace(); }    
    try { args[3] = this.getParameter("LOOKUPTABLE", ""); } catch (Exception e) { e.printStackTrace(); }    
    try { args[4] = this.getParameter("MSGNUM", ""); } catch (Exception e) { e.printStackTrace(); }    
    try { args[5] = this.getParameter("STARTCOUNT", ""); } catch (Exception e) { e.printStackTrace(); }    
    try { args[6] = this.getParameter("DEBUGNODES", ""); } catch (Exception e) { e.printStackTrace(); }    
    try { args[7] = this.getParameter("DEBUGROUTING", ""); } catch (Exception e) { e.printStackTrace(); }    
    try { args[8] = this.getParameter("DEBUGRESULTS", ""); } catch (Exception e) { e.printStackTrace(); }    
  
  }


  public void start() {
       add(T); 
       NTT=new NetworkThread(this);                     
       NTT.start();
  }
    
     public synchronized void appendPrint(String str) {
       T.appendText("           "+str+"\n"); /* using deprecated API for compitability with old browsers */
       repaint();
       //T.repaint();
     }


  public void stop() {
  }

  public void run(){
    while (true) {
       //repaint();
       //T.repaint();
    }
  }

  public void destroy() {
  }


  public String getAppletInfo() {
    return "Applet Information";
  }


  public String[][] getParameterInfo() {
    String pinfo[][] =
    {
      {"TOPOLOGY", "String", ""},
      {"INPUTPATTERN", "String", ""},
      {"ROUTINGALG", "String", ""},
      {"LOOKUPTABLE", "String", ""},
      {"MSGNUM", "String", ""},
      {"STARTCOUNT", "String", ""},
      {"DEBUGNODES", "String", ""},
      {"DEBUGROUTING", "String", ""},
      {"DEBUGRESULTS", "String", ""}            
    };
    return pinfo;
  }


}
