using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace AgvClientTest
{
    public partial class Form1 : Form
    {
        Asa.AgvClient client;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            CboAction1.SelectedIndex = 0;
            CboLevel1.SelectedIndex = 0;
            CboAction2.SelectedIndex = 0;
            CboLevel2.SelectedIndex = 0;
            CboAction3.SelectedIndex = 0;
            CboLevel3.SelectedIndex = 0;
            CboAction4.SelectedIndex = 0;
            CboLevel4.SelectedIndex = 0;
            client = new Asa.AgvClient("127.0.0.1");
            client.SetStatus("A1");
            client.SetStatus("B1");
            client.Log += Client_Log;
          
        }

        private void Client_Log(string s)
        {
            Invoke(new Action(() => { TxtLog.AppendText(s + "\r\n"); }));
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
           if(client.IsConn)
                client.Close();
        }

        private void BtnSend_Click(object sender, EventArgs e)
        {
            string id = (sender as Button).Name.Replace("BtnSend", "");
            string name = Controls["TxtName" + id].Text;
            string mark = Controls["TxtMark" + id].Text;
            string rfid = Controls["TxtRFID" + id].Text;
            int action = ((ComboBox)Controls["CboAction" + id]).SelectedIndex;
            int level = ((ComboBox)Controls["CboLevel" + id]).SelectedIndex;
            client.SetStatus(name, mark, rfid, (Asa.ClientAction)action, (Asa.ClientLevel)level);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            client.Connect();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            client.Close();
        }

    }
}