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

using INT_LKD_2.Forms;
using INT_LKD_2.DialogForms;
using INT_LKD_2.DataStore;
using SmartX;

namespace INT_LKD_2.Controls
{
    public partial class ControlMenuSystemEthernet : UserControl
    {
        #region Field
        private FormMenu m_ParentForm;
        private bool IsServerON;
        string[] HexArray;

        private delegate void ConnetedIPStatusCallback(string value);
        #endregion

        #region Constructor
        public ControlMenuSystemEthernet(FormMenu parent)
        {
            InitializeComponent();

            this.ParentForm = parent;

            this.Initialize();
            this.InitializeDesign();
            this.DefaultSetting();
        }
        #endregion

        #region Property
        public FormMenu ParentForm
        {
            get { return this.m_ParentForm; }
            private set { this.m_ParentForm = value; }
        }
        #endregion

        #region Method
        private void Initialize()
        {
            this.smartGroupBox1.Text = "System > Ethernet";
        }
        public void InitializeDesign()
        {
            if (this.ParentForm.ParentForm.SystemConfig.LANGUAGE == Define.E_LanguageID.English)
            {
                this.labelHelp.Text = "※ After setup, reboot is required.";

                this.labelTitleIPConfiguration.Text = "IP Configuration";
                this.labelTitleIPAddress.Text = "IP Address";
                this.labelTitleSubnetMask.Text = "Subnet mask";
                this.labelTitleGateway.Text = "Gateway";
            }
            else
            {
                this.labelHelp.Text = "※ 설정 후, 재부팅 필수";

                this.labelTitleIPConfiguration.Text = "IP Configuration";
                this.labelTitleIPAddress.Text = "IP Address";
                this.labelTitleSubnetMask.Text = "Subnet mask";
                this.labelTitleGateway.Text = "Gateway";
            }
        }
        private void DefaultSetting()
        {
            string[] sValue;

            this.IsServerON = false;

            this.comboBoxEthernetOpMode.Items.Clear();
            this.comboBoxEthernetOpMode.SelectedIndexChanged -= new EventHandler(this.comboBoxEthernetOpMode_SelectedIndexChanged);
            this.comboBoxEthernetOpMode.Items.Add("None");
            this.comboBoxEthernetOpMode.Items.Add("Server");
            this.comboBoxEthernetOpMode.Items.Add("Client");
            this.comboBoxEthernetOpMode.SelectedIndex = 0;
            this.comboBoxEthernetOpMode.SelectedIndexChanged += new EventHandler(this.comboBoxEthernetOpMode_SelectedIndexChanged);

            this.comboBoxEthernetMode.Items.Clear();
            this.comboBoxEthernetMode.SelectedIndexChanged -= new EventHandler(this.comboBoxEthernetMode_SelectedIndexChanged);
            this.comboBoxEthernetMode.Items.Add("None");
            this.comboBoxEthernetMode.Items.Add("Modbus");
            this.comboBoxEthernetMode.SelectedIndexChanged += new EventHandler(this.comboBoxEthernetMode_SelectedIndexChanged);

            if (this.ParentForm.ParentForm.SystemConfig.IsEthernetEnable == true)
            {
                this.buttonStartServer.Enabled = true;
                this.buttonStopServer.Enabled = true;
                this.buttonStartClient.Enabled = true;
                this.buttonStopClient.Enabled = true;
            }
            else
            {
                this.buttonStartServer.Enabled = false;
                this.buttonStopServer.Enabled = false;
                this.buttonStartClient.Enabled = false;
                this.buttonStopClient.Enabled = false;
            }

            this.labelServerStatus.Text = "-";
            this.labelClientStatus.Text = "-";
            this.labelConnectedIP.Text = "-";

            // Host IP
            sValue = this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_IP.Split('.');
            this.labelHostIP1.Text = sValue[0];
            this.labelHostIP2.Text = sValue[1];
            this.labelHostIP3.Text = sValue[2];
            this.labelHostIP4.Text = sValue[3];

            this.labelHostPort.Text = this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_PORT.ToString();
            this.labelLocalPort.Text = this.ParentForm.ParentForm.SystemConfig.ETHERNET_LOCAL_PORT.ToString();

            this.buttonSaveServer.Visible = false;
            this.buttonSaveClient.Visible = false;
            this.buttonSaveMode.Visible = false;
            this.buttonSaveLocal.Visible = false;
            this.buttonSaveModbus.Visible = false;
        }

        private string ReturnCommunicationModeName(int num)
        {
            #region 한국어
            switch (num)
            {
                case 0:
                    return "None";
                case 1:
                    return "Modbus";
                default:
                    return "None";
            }
            #endregion
        }

        public void DisplayLabelLocalPort(bool bValue)
        {
            if (bValue == false)
            {
                this.labelLocalPort.Enabled = false;
                this.labelLocalPort.BackColor = Color.Silver;
            }
            else
            {
                this.labelLocalPort.Enabled = true;
                this.labelLocalPort.BackColor = Color.White;
            }
        }
        public void UpdateEthernetStatusDisplay(string value)
        {
            if (this.labelClientStatus.Text != value)
                this.labelClientStatus.Text = value;
        }

        private void LocalIPEnable(bool enable)
        {
            Color tempColor;

            if (enable == true)
                tempColor = Color.Black;
            else
                tempColor = Color.Gray;

            #region Color
            this.labelLocalIP1.ForeColor = tempColor;
            this.labelLocalIP2.ForeColor = tempColor;
            this.labelLocalIP3.ForeColor = tempColor;
            this.labelLocalIP4.ForeColor = tempColor;

            this.labelLocalSubnetMask1.ForeColor = tempColor;
            this.labelLocalSubnetMask2.ForeColor = tempColor;
            this.labelLocalSubnetMask3.ForeColor = tempColor;
            this.labelLocalSubnetMask4.ForeColor = tempColor;

            this.labelLocalGateway1.ForeColor = tempColor;
            this.labelLocalGateway2.ForeColor = tempColor;
            this.labelLocalGateway3.ForeColor = tempColor;
            this.labelLocalGateway4.ForeColor = tempColor;
            #endregion

            #region Enable
            this.labelLocalIP1.Enabled = enable;
            this.labelLocalIP2.Enabled = enable;
            this.labelLocalIP3.Enabled = enable;
            this.labelLocalIP4.Enabled = enable;

            this.labelLocalSubnetMask1.Enabled = enable;
            this.labelLocalSubnetMask2.Enabled = enable;
            this.labelLocalSubnetMask3.Enabled = enable;
            this.labelLocalSubnetMask4.Enabled = enable;

            this.labelLocalGateway1.Enabled = enable;
            this.labelLocalGateway2.Enabled = enable;
            this.labelLocalGateway3.Enabled = enable;
            this.labelLocalGateway4.Enabled = enable;
            #endregion
        }
        private void UpdateLocalIPAddressDisplay()
        {
            string[] sValue;

            // Local IP
            sValue = this.ParentForm.ParentForm.smartConfigs.IPSettings.DeviceIP.Split('.');
            if (sValue.Length == 4)
            {
                this.labelLocalIP1.Text = sValue[0];
                this.labelLocalIP2.Text = sValue[1];
                this.labelLocalIP3.Text = sValue[2];
                this.labelLocalIP4.Text = sValue[3];
            }

            // Local Subnet Mask
            sValue = this.ParentForm.ParentForm.smartConfigs.IPSettings.SubNetMask.Split('.');
            if (sValue.Length == 4)
            {
                this.labelLocalSubnetMask1.Text = sValue[0];
                this.labelLocalSubnetMask2.Text = sValue[1];
                this.labelLocalSubnetMask3.Text = sValue[2];
                this.labelLocalSubnetMask4.Text = sValue[3];
            }

            // Local GateWay
            sValue = this.ParentForm.ParentForm.smartConfigs.IPSettings.GateWay.Split('.');
            if (sValue.Length == 4)
            {
                this.labelLocalGateway1.Text = sValue[0];
                this.labelLocalGateway2.Text = sValue[1];
                this.labelLocalGateway3.Text = sValue[2];
                this.labelLocalGateway4.Text = sValue[3];
            }
        }
        private void UpdateLocalIPConfigurationDisplay()
        {
            // Local IP DHCP
            if (this.ParentForm.ParentForm.smartConfigs.IPSettings.DHCPEnable == 1)
            {
                this.radioButtonLocalIpDHCP.Checked = true;
                this.LocalIPEnable(false);
            }
            else
            {
                this.radioButtonLocalIpStatic.Checked = true;
                this.LocalIPEnable(true);
            }
        }
        private void UpdateMACAddressDisplay()
        {
            byte[] currentMAC = this.ParentForm.ParentForm.smartConfigs.IPSettings.GetMACAddress();
            string hex = BitConverter.ToString(currentMAC);
            this.HexArray = hex.Split('-');

            if (this.HexArray.Length >= 6)
            {
                this.labelMACAddress1.Text = this.HexArray[0] + ":" + this.HexArray[1] + ":" + this.HexArray[2] + ":";
                this.labelMACAddress4.Text = this.HexArray[3];
                this.labelMACAddress5.Text = this.HexArray[4];
                this.labelMACAddress6.Text = this.HexArray[5];
            }
        }

        private void ConnectedIPStatusOut(string value)
        {
            this.labelConnectedIP.Text = value;
        }
        private void DelegateConnectedIPStatusOut(string value)
        {
            this.Invoke(new ConnetedIPStatusCallback(this.ConnectedIPStatusOut), value);
        }

        private void ModbusSetting()
        {
            if (this.ParentForm.ParentForm.SystemConfig.ETHERNET_COMM_MODE == 1)
            {
                if (this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE == 1)
                {
                    this.ParentForm.ParentForm.ChildFormMainDisplay.MainButtonModbusAdd(true);
                    this.groupBoxModbusSetting.Visible = true;

                    this.labelModbusRole.Text = "Slave";
                    this.labelFunctions.Text = "04: Read input register";

                    this.labelTitleStartAddress.Visible = false;
                    this.labelStartAddress.Visible = false;
                }
                else if (this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE == 2)
                {
                    this.ParentForm.ParentForm.ChildFormMainDisplay.MainButtonModbusAdd(true);
                    this.groupBoxModbusSetting.Visible = true;

                    this.labelModbusRole.Text = "Master";
                    this.labelFunctions.Text = "16: Write multiple register";

                    this.labelTitleStartAddress.Visible = true;
                    this.labelStartAddress.Visible = true;
                    this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig.MODBUS_TCP_START_ADDRESS.ToString();
                }
                else
                {
                    this.ParentForm.ParentForm.ChildFormMainDisplay.MainButtonModbusAdd(false);
                    this.groupBoxModbusSetting.Visible = false;
                }
            }
            else
            {
                this.ParentForm.ParentForm.ChildFormMainDisplay.MainButtonModbusAdd(false);
                this.groupBoxModbusSetting.Visible = false;
            }

            this.ParentForm.ParentForm.ChildFormMainDisplay.InitialEthernetIcon();
        }

        public void DisplayRefresh()
        {
            this.ParentForm.ParentForm.CurrentSystemStatus.CurrentDisplayMode = Define.E_DisplayModeStore.Ethernet;
            this.ParentForm.ParentForm.SetDisplayMode(Define.E_EquipmentMode.Menu);

            this.comboBoxEthernetMode.SelectedIndexChanged -= new EventHandler(this.comboBoxEthernetMode_SelectedIndexChanged);
            this.comboBoxEthernetOpMode.SelectedIndexChanged -= new EventHandler(this.comboBoxEthernetOpMode_SelectedIndexChanged);

            this.comboBoxEthernetOpMode.SelectedIndex = this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE;
            this.comboBoxEthernetMode.SelectedIndex = this.ParentForm.ParentForm.SystemConfig.ETHERNET_COMM_MODE;

            this.comboBoxEthernetMode.SelectedIndexChanged += new EventHandler(this.comboBoxEthernetMode_SelectedIndexChanged);
            this.comboBoxEthernetOpMode.SelectedIndexChanged += new EventHandler(this.comboBoxEthernetOpMode_SelectedIndexChanged);

            this.ModbusSetting();

            if (this.comboBoxEthernetOpMode.SelectedIndex == 1)
            {
                this.buttonStartServer.Enabled = true;
                this.buttonStopServer.Enabled = true;

                if (string.Compare(this.ParentForm.ParentForm.smartConfigs.IPSettings.DeviceIP, "0.0.0.0") == 0)
                {
                    if (this.labelServerStatus.Text != ">Addr Err")
                        this.labelServerStatus.Text = ">Addr Err";

                    this.timerServer.Enabled = false;
                }
                else
                {
                    this.ParentForm.ParentForm.EthernetServerStart();

                    if (this.timerServer.Enabled != true)
                        this.timerServer.Enabled = true;
                }
            }
            else if (this.comboBoxEthernetOpMode.SelectedIndex == 2)
            {
                this.buttonStartClient.Enabled = true;
                this.buttonStopClient.Enabled = true;

                this.ParentForm.ParentForm.EthernetClientConnect();
            }
            else
            {
                this.buttonStartServer.Enabled = false;
                this.buttonStopServer.Enabled = false;
                this.buttonStartClient.Enabled = false;
                this.buttonStopClient.Enabled = false;

                this.labelServerStatus.Text = "-";
                this.labelClientStatus.Text = "-";
                this.labelConnectedIP.Text = "-";
            }
            this.labelLocalPort.Text = this.ParentForm.ParentForm.SystemConfig.ETHERNET_LOCAL_PORT.ToString();

            // Local IP DHCP
            this.UpdateLocalIPConfigurationDisplay();

            // Local IP
            this.UpdateLocalIPAddressDisplay();

            // MAC Address
            this.UpdateMACAddressDisplay();

            this.buttonSaveMode.Visible = false;

            switch (this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.Group)
            {
                case Define.E_UserGroup.None:
                    this.Enabled = false;
                    break;
                case Define.E_UserGroup.Level1:
                    this.Enabled = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMenuEthernet;
                    break;
                case Define.E_UserGroup.Level2:
                    this.Enabled = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMenuEthernet;
                    break;
                case Define.E_UserGroup.Level3:
                    this.Enabled = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMenuEthernet;
                    break;
                case Define.E_UserGroup.Admin:
                    this.Enabled = true;
                    break;
                case Define.E_UserGroup.Developer:
                    this.Enabled = true;
                    break;
                case Define.E_UserGroup.NotLogin:
                    this.Enabled = false;
                    break;
                case Define.E_UserGroup.LogOut:
                    this.Enabled = false;
                    break;
                default:
                    break;
            }
        }
        #endregion

        #region Event Handler
        private void buttonSaveMode_Click(object sender, EventArgs e)
        {
            int mode = 0;
            string beforeLocalPort = "", afterLocalPort = "";
            string beforeOpMode = "", afterOpMode = "";
            string beforeComMode = "", afterComMode = "";

            beforeLocalPort = this.labelLocalPort.Text;
            if (this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE == 1)
                beforeOpMode = "Server";
            else if (this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE == 2)
                beforeOpMode = "Client";
            else
                beforeOpMode = "None";
            beforeComMode = this.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig.ETHERNET_COMM_MODE);

            if (this.comboBoxEthernetOpMode.SelectedIndex == 1)
            {
                this.ParentForm.ParentForm.SystemConfig.MODBUS_TCP_SELECTFUNCTION = (int)Define.E_ModbusFunction._04_ReadInputRegister;
                this.ParentForm.ParentForm.EthernetClientDisconnect();
                this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE = 1;
                afterOpMode = "Server";

                this.buttonStartServer.Enabled = true;
                this.buttonStopServer.Enabled = true;
                this.buttonStartClient.Enabled = false;
                this.buttonStopClient.Enabled = false;
            }
            else if (this.comboBoxEthernetOpMode.SelectedIndex == 2)
            {
                this.ParentForm.ParentForm.SystemConfig.MODBUS_TCP_SELECTFUNCTION = (int)Define.E_ModbusFunction._16_WriteMultipleRegister;
                this.labelServerStatus.Text = "-";
                this.timerServer.Enabled = false;
                this.ParentForm.ParentForm.EthernetServerStop();
                this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE = 2;
                this.ParentForm.ParentForm.EthernetClientDisconnect();
                afterOpMode = "Client";

                    this.ParentForm.ParentForm.ChildFormMainDisplay.TimerServer(false);

                this.labelConnectedIP.Text = "-";

                this.buttonStartClient.Enabled = true;
                this.buttonStopClient.Enabled = true;
                this.buttonStartServer.Enabled = false;
                this.buttonStopServer.Enabled = false;
            }
            else
            {
                this.timerServer.Enabled = false;
                this.ParentForm.ParentForm.EthernetServerStop();
                this.ParentForm.ParentForm.EthernetClientDisconnect();
                this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE = 0;
                afterOpMode = "None";

                    this.ParentForm.ParentForm.ChildFormMainDisplay.TimerServer(false);

                this.buttonStartServer.Enabled = false;
                this.buttonStopServer.Enabled = false;
                this.buttonStartClient.Enabled = false;
                this.buttonStopClient.Enabled = false;

                this.labelServerStatus.Text = "-";
                this.labelClientStatus.Text = "-";
                this.labelConnectedIP.Text = "-";
            }

            mode = this.comboBoxEthernetMode.SelectedIndex;
            this.ParentForm.ParentForm.SystemConfig.ETHERNET_COMM_MODE = mode;
            afterComMode = this.ReturnCommunicationModeName(mode);

            this.ParentForm.ParentForm.SaveSystemConfigurationFile(this.ParentForm.ParentForm.SystemConfig);
            this.ModbusSetting();

            this.buttonSaveMode.Visible = false;

            afterLocalPort = this.labelLocalPort.Text;

            if (beforeLocalPort != afterLocalPort)
                this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalPort, "", beforeLocalPort, afterLocalPort);
            if (beforeOpMode != afterOpMode)
                this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPOpMode, "", beforeOpMode, afterOpMode);
            if (beforeComMode != afterComMode)
                this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPComMode, "", beforeComMode, afterComMode);
        }
        private void buttonTestSend_Click(object sender, EventArgs e)
        {
            int tempStringLength = 0;
            string tempString = "";
            string str = "";

            StringBuilder sb = new StringBuilder();
            byte[] byteArray = new byte[12];
            byte[] weightBytes = new byte[4];
            byte[] bytes = new byte[100];

            if (this.comboBoxEthernetMode.SelectedIndex == 0)
                return;

            switch (this.comboBoxEthernetMode.SelectedIndex)
            {
                case 1:
                    #region Modbus TCP(16. Write Multiple Registers)
                    if (this.ParentForm.ParentForm.SystemConfig.MODBUS_TCP_SELECTFUNCTION == (int)Define.E_ModbusFunction._16_WriteMultipleRegister)
                    {
                        byte[] sendData = this.ParentForm.ParentForm.Modbus.MakeTCPSendAllData(this.ParentForm.ParentForm.Transfer_1_Modbus_Write(), this.ParentForm.ParentForm.SystemConfig.MODBUS_TCP_START_ADDRESS);

                        this.ParentForm.ParentForm.EthernetWeightDataForModbus(sendData);
                    }
                    #endregion
                    break;
                default:
                    break;
            }

            switch (this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE)
            {
                case 1:

                    if (this.ParentForm.ParentForm.smartTCPMultiServer.ClientInfoList != null)
                    {
                        foreach (SmartTCPMultiServer.CLIENTSINFOS client in this.ParentForm.ParentForm.smartTCPMultiServer.ClientInfoList)
                        {
                            if (sb.ToString() == "")
                                this.ParentForm.ParentForm.EthernetServerSendMessage(client, byteArray);
                            else
                                this.ParentForm.ParentForm.EthernetServerSendMessage(client, sb.ToString());
                        }
                    }
                    break;
                case 2:
                    if (sb.ToString() == "")
                        this.ParentForm.ParentForm.EthernetWeightData(byteArray);
                    else
                        this.ParentForm.ParentForm.EthernetWeightData(sb.ToString());
                    break;
                default:
                    break;
            }
        }
        private void comboBoxEthernetMode_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.buttonSaveMode.Visible == false)
                this.buttonSaveMode.Visible = true;
        }
        private void comboBoxEthernetOpMode_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.buttonSaveMode.Visible == false)
                this.buttonSaveMode.Visible = true;
        }

        // Server
        private void labelLocalPort_Click(object sender, EventArgs e)
        {
            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalPort.Text, 5, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                this.labelLocalPort.Text = myKeyPad.StringValue;

                if (this.buttonSaveServer.Visible == false)
                    this.buttonSaveServer.Visible = true;
            }
        }
        private void buttonStartServer_Click(object sender, EventArgs e)
        {
            this.buttonStartServer.Enabled = true;
            this.buttonStopServer.Enabled = true;

            if (string.Compare(this.ParentForm.ParentForm.smartConfigs.IPSettings.DeviceIP, "0.0.0.0") == 0)
            {
                if (this.labelServerStatus.Text != ">Addr Err")
                    this.labelServerStatus.Text = ">Addr Err";

                if (this.timerServer.Enabled != false)
                    this.timerServer.Enabled = false;

                this.ParentForm.ParentForm.ChildFormMainDisplay.TimerServer(false);
            }
            else
            {
                this.ParentForm.ParentForm.EthernetServerStart();

                if (this.timerServer.Enabled != true)
                    this.timerServer.Enabled = true;

                this.ParentForm.ParentForm.ChildFormMainDisplay.TimerServer(true);
            }

            this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.TryEthernetStart, "Server");
        }
        private void buttonStopServer_Click(object sender, EventArgs e)
        {
            this.timerServer.Enabled = false;
            this.ParentForm.ParentForm.EthernetServerStop();

            if (this.labelServerStatus.Text != ">Stop")
                this.labelServerStatus.Text = ">Stop";

            this.ParentForm.ParentForm.ChildFormMainDisplay.TimerServer(false);
            this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.TryEthernetStop, "Server");
        }
        private void buttonSaveServer_Click(object sender, EventArgs e)
        {
            string before = "", after = "";

            before = this.ParentForm.ParentForm.SystemConfig.ETHERNET_LOCAL_PORT.ToString();
            this.ParentForm.ParentForm.SystemConfig.ETHERNET_LOCAL_PORT = int.Parse(this.labelLocalPort.Text);
            this.ParentForm.ParentForm.smartTCPMultiServer.Port = this.ParentForm.ParentForm.SystemConfig.ETHERNET_LOCAL_PORT;
            after = this.labelLocalPort.Text;

            if (before != after)
                this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalPort, "", before, after);

            this.ParentForm.ParentForm.SaveSystemConfigurationFile(this.ParentForm.ParentForm.SystemConfig);

            this.buttonSaveServer.Visible = false;
        }

        // Client
        private void buttonSaveClient_Click(object sender, EventArgs e)
        {
            string beforeServerIP = "", afterServerIP = "";
            string beforeServerPort = "", afterServerPort = "";

            beforeServerIP = this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_IP;
            beforeServerPort = this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_PORT.ToString();
            try
            {
                this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_PORT = int.Parse(this.labelHostPort.Text);
                afterServerPort = this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_PORT.ToString();
            }
            catch
            {
                this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_PORT = 0;
                afterServerPort = "0";
            }

            this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_IP = string.Format("{0}.{1}.{2}.{3}",
                this.labelHostIP1.Text, this.labelHostIP2.Text, this.labelHostIP3.Text, this.labelHostIP4.Text);

            afterServerIP = this.ParentForm.ParentForm.SystemConfig.ETHERNET_SERVER_IP;

            this.ParentForm.ParentForm.SaveSystemConfigurationFile(this.ParentForm.ParentForm.SystemConfig);
            this.ParentForm.ParentForm.EthernetClientDisconnect();
            this.buttonSaveClient.Visible = false;

            if (beforeServerIP != afterServerIP)
                this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPServerIPAddress, "", beforeServerIP, afterServerIP);
            if (beforeServerPort != afterServerPort)
                this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPServerPort, "", beforeServerPort, afterServerPort);
        }
        private void labelHostIP1_Click(object sender, EventArgs e)
        {
            string temp = "";

            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelHostIP1.Text, 3, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.IntValue > 255)
                {
                    temp = "0 ~ 255";
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.labelHostIP1.Text = myKeyPad.StringValue;
                    this.buttonSaveClient.Visible = true;
                }
            }
        }
        private void labelHostIP2_Click(object sender, EventArgs e)
        {
            string temp = "";

            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelHostIP2.Text, 3, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.IntValue > 255)
                {
                    temp = "0 ~ 255";
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.labelHostIP2.Text = myKeyPad.StringValue;
                    this.buttonSaveClient.Visible = true;
                }
            }
        }
        private void labelHostIP3_Click(object sender, EventArgs e)
        {
            string temp = "";

            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelHostIP3.Text, 3, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.IntValue > 255)
                {
                    temp = "0 ~ 255";
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.labelHostIP3.Text = myKeyPad.StringValue;
                    this.buttonSaveClient.Visible = true;
                }
            }
        }
        private void labelHostIP4_Click(object sender, EventArgs e)
        {
            string temp = "";

            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelHostIP4.Text, 3, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.IntValue > 255)
                {
                    temp = "0 ~ 255";
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.labelHostIP4.Text = myKeyPad.StringValue;
                    this.buttonSaveClient.Visible = true;
                }
            }
        }
        private void labelHostPort_Click(object sender, EventArgs e)
        {
            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelHostPort.Text, 5, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                this.labelHostPort.Text = myKeyPad.StringValue;
                this.buttonSaveClient.Visible = true;
            }
        }
        private void buttonStartClient_Click(object sender, EventArgs e)
        {
            this.buttonStartClient.Enabled = true;
            this.buttonStopClient.Enabled = true;

            this.ParentForm.ParentForm.EthernetClientConnect();

            this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.TryEthernetStart, "Client");
        }
        private void buttonStopClient_Click(object sender, EventArgs e)
        {
            this.ParentForm.ParentForm.EthernetClientDisconnect();
            this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.TryEthernetStop, "Client");
        }

        // Local
        private void labelLocalIP1_Click(object sender, EventArgs e)
        {
            string temp = "";

            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalIP1.Text, 3, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.IntValue > 255)
                {
                    temp = "0 ~ 255";
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.labelLocalIP1.Text = myKeyPad.StringValue;
                    this.buttonSaveLocal.Visible = true;
                }
            }
        }
        private void labelLocalIP2_Click(object sender, EventArgs e)
        {
            string temp = "";

            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalIP2.Text, 3, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.IntValue > 255)
                {
                    temp = "0 ~ 255";
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.labelLocalIP2.Text = myKeyPad.StringValue;
                    this.buttonSaveLocal.Visible = true;
                }
            }
        }
        private void labelLocalIP3_Click(object sender, EventArgs e)
        {
            string temp = "";

            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalIP3.Text, 3, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.IntValue > 255)
                {
                    temp = "0 ~ 255";
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.labelLocalIP3.Text = myKeyPad.StringValue;
                    this.buttonSaveLocal.Visible = true;
                }
            }
        }
        private void labelLocalIP4_Click(object sender, EventArgs e)
        {
            string temp = "";

            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalIP4.Text, 3, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.IntValue > 255)
                {
                    temp = "0 ~ 255";
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.labelLocalIP4.Text = myKeyPad.StringValue;
                    this.buttonSaveLocal.Visible = true;
                }
            }
        }

        private void labelLocalSubnetMask1_Click(object sender, EventArgs e)
        {
            string temp = "";

            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalSubnetMask1.Text, 3, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.IntValue > 255)
                {
                    temp = "0 ~ 255";
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.labelLocalSubnetMask1.Text = myKeyPad.StringValue;
                    this.buttonSaveLocal.Visible = true;
                }
            }
        }
        private void labelLocalSubnetMask2_Click(object sender, EventArgs e)
        {
            string temp = "";

            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalSubnetMask2.Text, 3, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.IntValue > 255)
                {
                    temp = "0 ~ 255";
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.labelLocalSubnetMask2.Text = myKeyPad.StringValue;
                    this.buttonSaveLocal.Visible = true;
                }
            }
        }
        private void labelLocalSubnetMask3_Click(object sender, EventArgs e)
        {
            string temp = "";

            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalSubnetMask3.Text, 3, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.IntValue > 255)
                {
                    temp = "0 ~ 255";
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.labelLocalSubnetMask3.Text = myKeyPad.StringValue;
                    this.buttonSaveLocal.Visible = true;
                }
            }
        }
        private void labelLocalSubnetMask4_Click(object sender, EventArgs e)
        {
            string temp = "";

            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalSubnetMask4.Text, 3, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.IntValue > 255)
                {
                    temp = "0 ~ 255";
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.labelLocalSubnetMask4.Text = myKeyPad.StringValue;
                    this.buttonSaveLocal.Visible = true;
                }
            }
        }

        private void labelLocalGateway1_Click(object sender, EventArgs e)
        {
            string temp = "";

            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalGateway1.Text, 3, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.IntValue > 255)
                {
                    temp = "0 ~ 255";
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.labelLocalGateway1.Text = myKeyPad.StringValue;
                    this.buttonSaveLocal.Visible = true;
                }
            }
        }
        private void labelLocalGateway2_Click(object sender, EventArgs e)
        {
            string temp = "";

            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalGateway2.Text, 3, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.IntValue > 255)
                {
                    temp = "0 ~ 255";
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.labelLocalGateway2.Text = myKeyPad.StringValue;
                    this.buttonSaveLocal.Visible = true;
                }
            }
        }
        private void labelLocalGateway3_Click(object sender, EventArgs e)
        {
            string temp = "";

            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalGateway3.Text, 3, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.IntValue > 255)
                {
                    temp = "0 ~ 255";
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.labelLocalGateway3.Text = myKeyPad.StringValue;
                    this.buttonSaveLocal.Visible = true;
                }
            }
        }
        private void labelLocalGateway4_Click(object sender, EventArgs e)
        {
            string temp = "";

            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelLocalGateway4.Text, 3, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.IntValue > 255)
                {
                    temp = "0 ~ 255";
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE, temp);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.labelLocalGateway4.Text = myKeyPad.StringValue;
                    this.buttonSaveLocal.Visible = true;
                }
            }
        }

        private void radioButtonLocalIpDHCP_Click(object sender, EventArgs e)
        {
            string before = "", after = "";
            DialogFormYesNo myDlg;

            if (this.ParentForm.ParentForm.smartConfigs.IPSettings.DHCPEnable == 0)
                before = "Static";
            else
                before = "DHCP";

            if (this.radioButtonLocalIpStatic.Checked == true)
                myDlg = new DialogFormYesNo(this.ParentForm.ParentForm.SystemConfig.LANGUAGE, 21); // 로컬IP주소 수동으로 설정하시겠습니까?
            else
                myDlg = new DialogFormYesNo(this.ParentForm.ParentForm.SystemConfig.LANGUAGE, 22); // 로컬IP주소 자동으로 설정하시겠습니까?

            if (myDlg.ShowDialog() == DialogResult.Yes)
            {
                if (this.radioButtonLocalIpDHCP.Checked == true)
                {
                    this.ParentForm.ParentForm.smartConfigs.IPSettings.DHCPEnable = 1;

                    this.LocalIPEnable(false);
                    this.UpdateLocalIPAddressDisplay();
                }
                else
                {
                    this.ParentForm.ParentForm.smartConfigs.IPSettings.DHCPEnable = 0;

                    this.LocalIPEnable(true);

                    try
                    {
                        this.UpdateLocalIPAddressDisplay();
                    }
                    catch
                    {
                        this.ParentForm.ParentForm.smartConfigs.IPSettings.DeviceIP = "192.168.3.10";
                        this.ParentForm.ParentForm.smartConfigs.IPSettings.SubNetMask = "255.255.255.0";
                        this.ParentForm.ParentForm.smartConfigs.IPSettings.GateWay = "192.168.3.1";

                        this.UpdateLocalIPAddressDisplay();
                    }
                }

                this.ParentForm.ParentForm.smartConfigs.IPSettings.Save();
                this.ParentForm.ParentForm.smartConfigs.IPSettings.SetApply();

                if (this.ParentForm.ParentForm.smartConfigs.IPSettings.DHCPEnable == 0)
                    after = "Static";
                else
                    after = "DHCP";

                this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalIPConfig, "", before, after);
            }
            else
            {
                this.DisplayRefresh();
            }
        }
        private void labelMACAddress_Click(object sender, EventArgs e)
        {
            SmartX.SmartLabel label = sender as SmartX.SmartLabel;

            DialogFormHexKeyPad myKeyPad = new DialogFormHexKeyPad(label.Text, 2, this.ParentForm.ParentForm.SystemConfig.LANGUAGE);
            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                label.Text = myKeyPad.StringValue;
                this.buttonSaveLocal.Visible = true;
            }
        }

        private void buttonSaveLocal_Click(object sender, EventArgs e)
        {
            string beforeIP = "", afterIP = "";
            string beforeSubnetMask = "", afterSubnetMask = "";
            string beforeGateway = "", afterGateway = "";

            this.buttonSaveLocal.Visible = false;

            byte[] changeMAC = new byte[6];

            changeMAC[0] = Convert.ToByte(this.HexArray[0], 16);
            changeMAC[1] = Convert.ToByte(this.HexArray[1], 16);
            changeMAC[2] = Convert.ToByte(this.HexArray[2], 16);
            changeMAC[3] = Convert.ToByte(this.labelMACAddress4.Text, 16);
            changeMAC[4] = Convert.ToByte(this.labelMACAddress5.Text, 16);
            changeMAC[5] = Convert.ToByte(this.labelMACAddress6.Text, 16);

            this.ParentForm.ParentForm.smartConfigs.IPSettings.SetMACAddress(changeMAC);

            beforeIP = this.ParentForm.ParentForm.smartConfigs.IPSettings.DeviceIP;
            beforeSubnetMask = this.ParentForm.ParentForm.smartConfigs.IPSettings.SubNetMask;
            beforeGateway = this.ParentForm.ParentForm.smartConfigs.IPSettings.GateWay;

            if (this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE == 1)
                this.ParentForm.ParentForm.EthernetServerStop();
            else if (this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE == 2)
                this.ParentForm.ParentForm.EthernetClientDisconnect();

            this.ParentForm.ParentForm.smartConfigs.IPSettings.DeviceIP = string.Format("{0}.{1}.{2}.{3}",
                this.labelLocalIP1.Text, this.labelLocalIP2.Text, this.labelLocalIP3.Text, this.labelLocalIP4.Text);
            this.ParentForm.ParentForm.smartConfigs.IPSettings.SubNetMask = string.Format("{0}.{1}.{2}.{3}",
                this.labelLocalSubnetMask1.Text, this.labelLocalSubnetMask2.Text, this.labelLocalSubnetMask3.Text, this.labelLocalSubnetMask4.Text);
            this.ParentForm.ParentForm.smartConfigs.IPSettings.GateWay = string.Format("{0}.{1}.{2}.{3}",
                this.labelLocalGateway1.Text, this.labelLocalGateway2.Text, this.labelLocalGateway3.Text, this.labelLocalGateway4.Text);

            afterIP = this.ParentForm.ParentForm.smartConfigs.IPSettings.DeviceIP;
            afterSubnetMask = this.ParentForm.ParentForm.smartConfigs.IPSettings.SubNetMask;
            afterGateway = this.ParentForm.ParentForm.smartConfigs.IPSettings.GateWay;

            this.ParentForm.ParentForm.smartConfigs.IPSettings.Save();
            this.ParentForm.ParentForm.smartConfigs.IPSettings.SetApply();

            if (this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE == 1)
                this.ParentForm.ParentForm.EthernetServerStart();
            else if (this.ParentForm.ParentForm.SystemConfig.ETHERNET_OP_MODE == 2)
                this.ParentForm.ParentForm.EthernetClientConnect();

            if (beforeIP != afterIP)
                this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalIPAddress, "", beforeIP, afterIP);
            if (beforeSubnetMask != afterSubnetMask)
                this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalSubnetMask, "", beforeSubnetMask, afterSubnetMask);
            if (beforeGateway != afterGateway)
                this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalGateway, "", beforeGateway, afterGateway);
        }

        // Modbus Settings
        private void labelStartAddress_Click(object sender, EventArgs e)
        {

            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelStartAddress.Text, 5, 0, false);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.doubleValue < 0 || myKeyPad.doubleValue > 99999)
                {
                    // 입력범위를 확인하세요
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig.LANGUAGE);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.labelStartAddress.Text = myKeyPad.StringValue;

                    if (this.buttonSaveModbus.Visible == false)
                        this.buttonSaveModbus.Visible = true;
                }
            }
        }
        private void buttonSaveModbus_Click(object sender, EventArgs e)
        {
            string before = "", after = "";

            before = this.ParentForm.ParentForm.SystemConfig.MODBUS_TCP_START_ADDRESS.ToString();
            this.ParentForm.ParentForm.SystemConfig.MODBUS_TCP_START_ADDRESS = int.Parse(this.labelStartAddress.Text);
            after = this.labelStartAddress.Text;

            if (before != after)
                this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_StartAddr, "TCP", before, after);

            this.ParentForm.ParentForm.SaveSystemConfigurationFile(this.ParentForm.ParentForm.SystemConfig);

            this.buttonSaveModbus.Visible = false;
        }

        private void timerServer_Tick(object sender, EventArgs e)
        {
            if (this.ParentForm.ParentForm.smartTCPMultiServer.IsStart == true)
            {
                if (this.labelServerStatus.Text != ">Start")
                    this.labelServerStatus.Text = ">Start";

                if (this.IsServerON == false)
                {
                    this.IsServerON = true;
                    this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.ServerON, "");
                }

                this.labelConnectedIP.Text = "-";
                this.smartListBoxClientList.ClearAll();
                this.labelClientCount.Text = "-";

                if (this.ParentForm.ParentForm.smartTCPMultiServer.ClientInfoList != null)
                {
                    int length = this.ParentForm.ParentForm.smartTCPMultiServer.ClientInfoList.Length;
                    for (int i = 0; i < length; i++)
                    {
                        this.smartListBoxClientList.AddItem(
                            this.ParentForm.ParentForm.smartTCPMultiServer.ClientInfoList[i].strID + ", " +
                            this.ParentForm.ParentForm.smartTCPMultiServer.ClientInfoList[i].strIPAddress);
                    }

                    this.labelClientCount.Text = length.ToString();
                    if (this.ParentForm.ParentForm.smartTCPMultiServer.ClientInfoList == null)
                        this.labelConnectedIP.Text = "-";
                    else
                        this.labelConnectedIP.Text = this.ParentForm.ParentForm.smartTCPMultiServer.ClientInfoList[0].strIPAddress;
                }
            }
            else
            {
                if (this.labelServerStatus.Text != ">Stop")
                    this.labelServerStatus.Text = ">Stop";

                if (this.IsServerON == true)
                {
                    this.IsServerON = false;
                    this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.ServerOFF, "");
                }

                this.smartListBoxClientList.ClearAll();
                this.labelClientCount.Text = "-";
            }
        }
        #endregion
    }
}
