import java.net.*;
import java.io.*;
import java.applet.*;
import java.awt.*;
import java.util.Date;

public class Mud extends java.applet.Applet
{
        Client connection = null;
        TextField log;
        TextArea out;
        MudInput in;
        Panel controls;
        Panel logs;
        Panel inputs;

        public void init() {
           resize(500,450);
           //GridBagLayout gridbag = new GridBagLayout();
           //GridBagConstraints c = new GridBagConstraints(); 
           //setLayout( gridbag );
           //c.fill = GridBagConstraints.NORTH;
           //c.weightx = 1.0;
           setLayout(new BorderLayout());
           out =  new TextArea("Output Box", 20,40);
           add(new Label("Mud Output"));
           add("North",out);

           //c.weightx = 0.0;
           //c.gridwidth = GridBagConstraints.NORTHEAST;

           logs = new Panel(); 
           logs.setLayout(new GridLayout(20,20,1,1));
           add("East",logs);
           log = new TextField("Log Box",40);
           
           //c.gridwidth = GridBagConstraints.SOUTHWEST;
           logs.add(new Label("Connection Log"));
           logs.add(log);


           inputs = new Panel(); 
           inputs.setLayout(new GridLayout(20,20,1,1));
           add("West",inputs);

           in =  new MudInput(80, this);
           in.setEditable(true);
           //c.gridwidth = GridBagConstraints.SOUTHEAST;
           inputs.add(new Label("Input Tools"));
           inputs.add("West",in);


           controls = new Panel(); 
           add("Center",controls);
/*
           controls.setLayout(new FlowLayout());
           MudButton n = new MudButton("north", "north", this);
           controls.add(n);
           MudButton s = new MudButton("south", "south", this);
           controls.add(s);
           MudButton l = new MudButton("look", "look", this);
           controls.add(l);
           MudButton h = new MudButton("help", "help", this);
           controls.add(h);
           MudButton wh = new MudButton("who", "who", this);
           controls.add(wh);
           MudButton e = new MudButton("east", "east", this);
           controls.add(e);
           MudButton w = new MudButton("west", "west", this);
           controls.add(w);
           MudButton d = new MudButton("down", "down", this);
           controls.add(d);
           MudButton r = new MudButton("recall", "recall", this);
           controls.add(r);
           MudButton en = new MudButton("enter", "\n\r", this);
           controls.add(en);
*/
           RoomMenu roomMenu = new RoomMenu(this);
           //controls.add(window); 
           roomMenu.setTitle("Area Editor");
           roomMenu.pack();
           roomMenu.show();

           connection = new Client("realms.game.org",4000,this);
           /* connection = new Client("maryann.lagoon.com",4000);  */
           log.setText("Connection established\n");
           connection.WriteString("Demitrius\n");
           connection.WriteString("banzai\n");
           connection.WriteString("\n\r\n\r\n\r");
           log.setText("Sent login sequence\n");
           out.appendText(connection.ReadString() + "\n");
           out.appendText(connection.ReadString() + "\n");
        }

        public void run() {
          String str;
          Date d = new Date();

           while(true){
              log.setText("["+ d + "updating...\n");
              out.appendText(connection.ReadString() + "\n");
           }
        }

        public void paint(Graphics g) {

          String str;
          Date d = new Date();
          //connection.WriteString("look\n\r");

          log.setText("["+ d + "updating...\n");
          out.appendText(connection.ReadString() + "\n");


        }
}