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

using SmartX;
using ITC81DB_0H.Controls;
using ITC81DB_0H.DialogForms;
using ITC81DB_0H_ImageDll;

namespace ITC81DB_0H.Forms
{
    public partial class FormMainDisplay : Form
    {
        #region Field
        private FormMain m_ParentForm;

        private DataStore.MainDisplayStore CurrentDisplay;

        public ControlMainDisplayWeightBigScreen MainDisplayWeightBigScreen;
        public ControlMainDisplayWeightSmall MainDisplayWeightSmall;
        public ControlMainDisplayStopDataStatistics MainDisplayStopDataStatistics;
        public ControlMainDisplayStart MainDisplayStart;
        public ControlMainDisplayStartGraph MainDisplayStartGraph;
        public ControlMainDisplayStartList MainDisplayStartList;
        public ControlMainDisplayMenu MainDisplayMenu;
        public ControlMainDisplayAlarm MainDisplayAlarm;
        public ControlMainDisplayFeedback MainDisplayFeedback;
        #endregion

        #region Constructor
        public FormMainDisplay(FormMain parent)
        {
            InitializeComponent();

            this.ParentForm = parent;

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

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

        #region Method
        public void InitializeDesign()
        {
            Class1 images = new Class1();

            if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.English)
            {
                this.buttonZero.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.engFormMainDisplayZeroDisable));
                this.buttonZero.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engFormMainDisplayZeroDown));
                this.buttonZero.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engFormMainDisplayZeroUp));
                this.buttonPrint.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.engFormMainDisplayPrintDisable));
                this.buttonPrint.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engFormMainDisplayPrintDown));
                this.buttonPrint.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engFormMainDisplayPrintUp));
                this.buttonWeightInputMode.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engFormMainDisplayDeviationUp));
                this.buttonWeightInputMode.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engFormMainDisplayWeightUp));
                this.buttonClear.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.engFormMainDisplayClearDisable));
                this.buttonClear.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engFormMainDisplayClearDown));
                this.buttonClear.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engFormMainDisplayClearUp));
                this.buttonUser.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.engFormMainDisplayLoginDisable));
                this.buttonUser.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engFormMainDisplayLogOutDown));
                this.buttonUser.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engFormMainDisplayLoginUp));
            }
            else if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Chinese)
            {
                this.buttonZero.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnMainZeroDisable));
                this.buttonZero.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnMainZeroDown));
                this.buttonZero.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnMainZeroUp));
                this.buttonPrint.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnMainPrintDisable));
                this.buttonPrint.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnMainPrintDown));
                this.buttonPrint.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnMainPrintUp));
                this.buttonWeightInputMode.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnMainDeviationUp));
                this.buttonWeightInputMode.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnMainWeightUp));
                this.buttonClear.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnMainClearDisable));
                this.buttonClear.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnMainClearDown));
                this.buttonClear.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnMainClearUp));
                this.buttonUser.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnMainLoginDisable));
                this.buttonUser.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnMainLogOutDown));
                this.buttonUser.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnMainLoginUp));
            }
            else if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Czech)
            {
            }
            else if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Russian)
            {
                this.buttonZero.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusFormMainDisplayZeroDisable));
                this.buttonZero.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusFormMainDisplayZeroDown));
                this.buttonZero.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusFormMainDisplayZeroUp));
                this.buttonPrint.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusFormMainDisplayPrintDisable));
                this.buttonPrint.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusFormMainDisplayPrintDown));
                this.buttonPrint.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusFormMainDisplayPrintUp));
                this.buttonWeightInputMode.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusFormMainDisplayDeviationUp));
                this.buttonWeightInputMode.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusFormMainDisplayWeightUp));
                this.buttonClear.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusFormMainDisplayClearDisable));
                this.buttonClear.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusFormMainDisplayClearDown));
                this.buttonClear.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusFormMainDisplayClearUp));
                this.buttonUser.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusFormMainDisplayLoginDisable));
                this.buttonUser.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusFormMainDisplayLogOutDown));
                this.buttonUser.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusFormMainDisplayLoginUp));
            }
            else if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.German)
            {
                this.buttonZero.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerFormMainDisplayZeroDisable));
                this.buttonZero.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerFormMainDisplayZeroDown));
                this.buttonZero.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerFormMainDisplayZeroUp));
                this.buttonPrint.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerFormMainDisplayPrintDisable));
                this.buttonPrint.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerFormMainDisplayPrintDown));
                this.buttonPrint.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerFormMainDisplayPrintUp));
                this.buttonWeightInputMode.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerFormMainDisplayDeviationUp));
                this.buttonWeightInputMode.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerFormMainDisplayWeightUp));
                this.buttonClear.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerFormMainDisplayClearDisable));
                this.buttonClear.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerFormMainDisplayClearDown));
                this.buttonClear.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerFormMainDisplayClearUp));
                this.buttonUser.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerFormMainDisplayLoginDisable));
                this.buttonUser.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerFormMainDisplayLogOutDown));
                this.buttonUser.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerFormMainDisplayLoginUp));
            }
            else
            {
                this.buttonZero.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.korFormMainDisplayZeroDisable));
                this.buttonZero.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.korFormMainDisplayZeroDown));
                this.buttonZero.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.korFormMainDisplayZeroUp));
                this.buttonPrint.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.korFormMainDisplayPrintDisable));
                this.buttonPrint.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.korFormMainDisplayPrintDown));
                this.buttonPrint.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.korFormMainDisplayPrintUp));
                this.buttonWeightInputMode.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.korFormMainDisplayDeviationUp));
                this.buttonWeightInputMode.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.korFormMainDisplayWeightUp));
                this.buttonClear.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.korFormMainDisplayClearDisable));
                this.buttonClear.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.korFormMainDisplayClearDown));
                this.buttonClear.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.korFormMainDisplayClearUp));
                this.buttonUser.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.engFormMainDisplayLoginDisable));
                this.buttonUser.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engFormMainDisplayLogOutDown));
                this.buttonUser.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engFormMainDisplayLoginUp));
            }

            if (this.ParentForm.CurrentSystemStatus.CurrentWeightInputMode == DataStore.WeightInputMode.Deviation)
                this.buttonWeightInputMode.ButtonDown();
            else
                this.buttonWeightInputMode.ButtonUp();
        }
        private void InitializeControl()
        {
            this.MainDisplayWeightBigScreen = new ControlMainDisplayWeightBigScreen(this);
            this.MainDisplayWeightSmall = new ControlMainDisplayWeightSmall(this);
            this.MainDisplayStopDataStatistics = new ControlMainDisplayStopDataStatistics(this);
            this.MainDisplayStart = new ControlMainDisplayStart(this);
            this.MainDisplayStartGraph = new ControlMainDisplayStartGraph(this);
            this.MainDisplayStartList = new ControlMainDisplayStartList(this);
            this.MainDisplayMenu = new ControlMainDisplayMenu(this);
            this.MainDisplayAlarm = new ControlMainDisplayAlarm();
            this.MainDisplayFeedback = new ControlMainDisplayFeedback(this);

            this.MainDisplayWeightBigScreen.Location = new Point(0, 65);
            this.MainDisplayWeightSmall.Location = new Point(0, 65);
            this.MainDisplayStopDataStatistics.Location = new Point(0, 313);
            this.MainDisplayStart.Location = new Point(0, 313);
            this.MainDisplayStartGraph.Location = new Point(0, 313);
            this.MainDisplayStartList.Location = new Point(0, 213);
            this.MainDisplayMenu.Location = new Point(0, 213);
            this.MainDisplayAlarm.Location = new Point(390, 60);
            this.MainDisplayFeedback.Location = new Point(0, 313);

            this.Controls.Add(this.MainDisplayWeightBigScreen);
            this.Controls.Add(this.MainDisplayWeightSmall);
            this.Controls.Add(this.MainDisplayStopDataStatistics);
            this.Controls.Add(this.MainDisplayStart);
            this.Controls.Add(this.MainDisplayStartGraph);
            this.Controls.Add(this.MainDisplayStartList);
            this.Controls.Add(this.MainDisplayMenu);
            this.Controls.Add(this.MainDisplayAlarm);
            this.Controls.Add(this.MainDisplayFeedback);

            if (this.ParentForm.SystemConfig1.IsLogin == true)
            {
                this.labelUserID.Visible = true;
                this.labelUserLevel.Visible = true;
                this.buttonUser.Visible = true;
            }
            else
            {
                this.labelUserID.Visible = false;
                this.labelUserLevel.Visible = false;
                this.buttonUser.Visible = false;
            }
        }
        private void DefaultSetting()
        {
            if (this.ParentForm.IsBootingComplete == false)
                this.buttonProductNo.Text = "**";
            else
                this.buttonProductNo.Text = this.ParentForm.SystemConfig1.ProductNumber.ToString();

            this.pictureBoxStop.Visible = true;
            this.pictureBoxStart.Visible = false;

            this.InitializeControl();

            // 알람 표시
            this.pictureBoxIconAlarm.Visible = false;
            this.MainDisplayAlarm.Visible = false;
            this.MainDisplayAlarm.BringToFront();

            this.buttonPrint.Visible = this.ParentForm.SystemConfig1.IsPrinterEnable;
            if (this.ParentForm.SystemConfig1.IsPrintPerProductEnable == true)
                this.buttonPrint.ButtonDown();
            else
                this.buttonPrint.ButtonUp();

            if (int.Parse(this.ParentForm.CurrentSystemParameter1.EquipmentType) == 4)
                this.buttonConveyorUpDown.Visible = true;
            else
                this.buttonConveyorUpDown.Visible = false;

            if (this.ParentForm.SystemConfig1.IsLogin == true)
                this.UpdateDisplayUser(this.ParentForm.CurrentSystemStatus);
            else
                this.ParentForm.CurrentSystemStatus.CurrentUser.Group = DataStore.UserGroup.Level4Developer;

            this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartBarGraph;
            this.DisplayBottomMain(this.CurrentDisplay);
        }
        
        public void DisplayHiddenMenu(bool visible)
        {
            if (visible == false)
            {
                this.labelBarcode.Visible = false;
            }
            else
            {
                this.labelBarcode.Visible = true;
            }
        }

        public void UpdateDisplayAlarmView(WeightData data)
        {
            this.MainDisplayWeightBigScreen.UpdateDisplayAlarmView(this.ParentForm.CurrentWeightData);
            this.MainDisplayWeightSmall.UpdateDisplayAlarmView(this.ParentForm.CurrentWeightData);

            if (data.IsLoadCellError == true || data.IsInverterError == true || data.IsEmergencyStop == true || data.IsDoorInterlock == true
                || data.IsPressureSensingError == true || data.IsSorterError == true || data.IsStackUpSensorError == true
                || data.IsEntrySensorError == true)
            {
                if (this.pictureBoxIconAlarm.Visible == false)
                    this.pictureBoxIconAlarm.Visible = true;
            }
            else
            {
                this.pictureBoxIconAlarm.Visible = false;
                this.MainDisplayAlarm.Visible = false;
                this.labelSorterAlarm.Visible = false;

                if (this.ParentForm.SystemConfig1.IsExternalInputLamp == true && this.ParentForm.IsLampOnDataSend == true)
                    this.ParentForm.TransferData(CommunicationCommand.LampOnContinuousDisable, CommunicationID.MainBoard);
                if (this.ParentForm.SystemConfig1.IsExternalInputBuzzer == true && this.ParentForm.IsBuzzerOnDataSend == true)
                    this.ParentForm.TransferData(CommunicationCommand.BuzzerOnContinuousDisable, CommunicationID.MainBoard);

                this.ParentForm.IsLampOnDataSend = false;
                this.ParentForm.IsBuzzerOnDataSend = false;

                return;
            }

            this.MainDisplayAlarm.listBoxMessage.Items.Clear();

            if (data.IsLoadCellError == true)
                this.MainDisplayAlarm.listBoxMessage.Items.Add("LoadCell Error");
            if (data.IsInverterError == true)
                this.MainDisplayAlarm.listBoxMessage.Items.Add("Inverter Error");
            if (data.IsEmergencyStop == true)
                this.MainDisplayAlarm.listBoxMessage.Items.Add("Emergency Stop");
            if (data.IsDoorInterlock == true)
                this.MainDisplayAlarm.listBoxMessage.Items.Add("Door Interlock");
            if (data.IsPressureSensingError == true)
                this.MainDisplayAlarm.listBoxMessage.Items.Add("Low Pressure");
            if (data.IsEntrySensorError == true)
                this.MainDisplayAlarm.listBoxMessage.Items.Add("Entry Sensor Error");
            if (data.IsSorterError == true)
            {
                this.MainDisplayAlarm.listBoxMessage.Items.Add("Sorter Error");
                //if (this.ParentForm.IsBuzzerOnDataSend == false)
                //{
                //    this.ParentForm.IsBuzzerOnDataSend = true;
                //    this.ParentForm.TransferData(CommunicationCommand.BuzzerOnContinuousEnable, CommunicationID.MainBoard);
                //}
                if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Korean)
                    this.labelSorterAlarm.Text = "선별부 에러";
                else
                    this.labelSorterAlarm.Text = "Sorter Error";
                this.labelSorterAlarm.BringToFront();
                this.labelSorterAlarm.Visible = true;
            }
            if (data.IsStackUpSensorError == true)
                this.MainDisplayAlarm.listBoxMessage.Items.Add("Stack up");
        }
        public void ProductChange(int productNumber)
        {
            this.buttonProductNo.Text = "**";

            this.ParentForm.TransferProductParameter(productNumber);
        }
        public void RescaleControl(ProductItem item)
        {
            this.MainDisplayStart.RescaleProgressBar(item);
        }
        public void ClearCurrentData()
        {
            this.ParentForm.CurrentWeightData.ClearCount();
            this.ParentForm.SaveCounterFile(this.ParentForm.CurrentWeightData, this.ParentForm.SystemConfig1.ProductNumber - 1);

            if (this.MainDisplayStart != null)
                this.MainDisplayStart.Clear();

            if (this.MainDisplayStartGraph != null)
                this.MainDisplayStartGraph.Clear();

            if (this.MainDisplayStartList != null)
                this.MainDisplayStartList.Clear();

            if (this.MainDisplayStopDataStatistics != null)
                this.MainDisplayStopDataStatistics.Clear();

            this.ParentForm.ClearAlarm(0);
        }
        public void ClearAllData()
        {
            for (int i = 0; i < this.ParentForm.ProductCount; i++)
            {
                this.ParentForm.CollectionWeightData[i].ClearCount();
                this.ParentForm.SaveCounterFile(this.ParentForm.CollectionWeightData);
            }

            if (this.MainDisplayStart != null)
                this.MainDisplayStart.Clear();

            if (this.MainDisplayStartGraph != null)
                this.MainDisplayStartGraph.Clear();

            if (this.MainDisplayStartList != null)
                this.MainDisplayStartList.Clear();

            if (this.MainDisplayStopDataStatistics != null)
                this.MainDisplayStopDataStatistics.Clear();
        }

        private void UpdateDisplayUser(SystemStatus status) 
        {
            string id = "", group = "";

            switch (status.CurrentUser.Group)
            {
                case DataStore.UserGroup.LogOut:
                    id = "";
                    if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.German)
                        group = "AUS";
                    else if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Chinese)
                        group = "关闭";
                    else if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Russian)
                        group = "Выкл.";
                    else
                        group = "Off";
                    
                    if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOff)
                        this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOff;

                    this.buttonUser.ButtonUp();
                    this.buttonProductNo.Enabled = false;
                    this.buttonClear.Enabled = false;
                    this.labelProductName.Enabled = false;

                    this.buttonMenu.Enabled = false;
                    break;
                case DataStore.UserGroup.Level1Operator:
                    id = status.CurrentUser.ID;
                    if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.German)
                        group = "Stufe1";
                    else if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Chinese)
                        group = "级别1";
                    else if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Russian)
                        group = "Уровень1";
                    else
                        group = "Level1";
                 
                    if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn)
                        this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn;

                    this.buttonUser.ButtonDown();
                    this.buttonProductNo.Enabled = true;
                    this.buttonClear.Enabled = true;
                    this.labelProductName.Enabled = true;

                    if (status.Equipment == DataStore.EquipmentStatus.Stop)
                        this.buttonMenu.Enabled = true;
                    else
                        this.buttonMenu.Enabled = false;
                    break;
                case DataStore.UserGroup.Level2Engineer:
                    id = status.CurrentUser.ID;
                    if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.German)
                        group = "Stufe2";
                    else if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Chinese)
                        group = "级别2";
                    else if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Russian)
                        group = "Уровень2";
                    else
                        group = "Level2";
                   
                    if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn)
                        this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn;

                    this.buttonUser.ButtonDown();
                    this.buttonProductNo.Enabled = true;
                    this.buttonClear.Enabled = true;
                    this.labelProductName.Enabled = true;

                    if (status.Equipment == DataStore.EquipmentStatus.Stop)
                        this.buttonMenu.Enabled = true;
                    else
                        this.buttonMenu.Enabled = false;
                    break;
                case DataStore.UserGroup.Level3Manager:
                    id = status.CurrentUser.ID;
                    if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.German)
                        group = "Stufe3";
                    else if(this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Chinese)
                        group = "级别3";
                    else if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Russian)
                        group = "Уровень3";
                    else
                        group = "Level3";
                   
                    if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn)
                        this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn;

                    this.buttonUser.ButtonDown();
                    this.buttonProductNo.Enabled = true;
                    this.buttonClear.Enabled = true;
                    this.labelProductName.Enabled = true;

                    if (status.Equipment == DataStore.EquipmentStatus.Stop)
                        this.buttonMenu.Enabled = true;
                    else
                        this.buttonMenu.Enabled = false;
                    break;
                case DataStore.UserGroup.Level4Developer:
                    id = status.CurrentUser.ID;
                    if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.German)
                        group = "Stufe4";
                    else if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Chinese)
                        group = "级别4";
                    else if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Russian)
                        group = "Уровень4";
                    else
                        group = "Level4";

                    if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn)
                        this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn;

                    this.buttonUser.ButtonDown();
                    this.buttonProductNo.Enabled = true;
                    this.buttonClear.Enabled = true;
                    this.labelProductName.Enabled = true;

                    if (status.Equipment == DataStore.EquipmentStatus.Stop)
                        this.buttonMenu.Enabled = true;
                    else
                        this.buttonMenu.Enabled = false;
                    break;
                default:
                    id = "";
                    if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.German)
                        group = "AUS";
                    else if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Chinese)
                        group = "关闭";
                    else if (this.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Russian)
                        group = "Выкл.";
                    else
                        group = "Off";

                    if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOff)
                        this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOff;

                    this.buttonUser.ButtonUp();
                    this.buttonProductNo.Enabled = false;
                    this.buttonClear.Enabled = false;
                    this.buttonMenu.Enabled = false;
                    this.labelProductName.Enabled = false;
                    break;
            }

            if (this.labelUserLevel.Text != group)
                this.labelUserLevel.Text = group;
            if (this.labelUserID.Text != id)
                this.labelUserID.Text = id;
        }
        public void UpdateEquipmentStatusDisplay(DataStore.EquipmentStatus status)
        {
            if (status == DataStore.EquipmentStatus.Start)
            {
                this.pictureBoxStart.Visible = true;
                this.pictureBoxStop.Visible = false;
                this.buttonProductNo.Enabled = false;
                this.labelProductName.Enabled = false;

                this.buttonConveyorUpDown.Enabled = false;

                this.MainDisplayStart.UpdateEquipmentStatusDisplay(status);
                this.MainDisplayStartGraph.UpdateEquipmentStatusDisplay(status);
                this.MainDisplayStartList.UpdateEquipmentStatusDisplay(status);
                this.MainDisplayWeightBigScreen.UpdateEquipmentStatusDisplay(status);
                this.MainDisplayWeightSmall.UpdateEquipmentStatusDisplay(status);

                //this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartBarGraph;
                //this.DisplayBottomMain(this.CurrentDisplay);

                this.CurrentBottomMenuControlEnable(status);
            }
            else
            {
                this.pictureBoxStart.Visible = false;
                this.pictureBoxStop.Visible = true;

                this.buttonConveyorUpDown.Enabled = true;
                this.buttonConveyorUpDown.ButtonUp();

                if (this.ParentForm.CurrentSystemStatus.CurrentUser.Group == DataStore.UserGroup.LogOut)
                {
                    this.buttonProductNo.Enabled = false;
                    this.labelProductName.Enabled = false;
                }
                else
                {
                    this.buttonProductNo.Enabled = true;
                    this.labelProductName.Enabled = true;
                }

                this.MainDisplayStart.UpdateEquipmentStatusDisplay(status);
                this.MainDisplayStartGraph.UpdateEquipmentStatusDisplay(status);
                this.MainDisplayStartList.UpdateEquipmentStatusDisplay(status);
                this.MainDisplayWeightBigScreen.UpdateEquipmentStatusDisplay(status);
                this.MainDisplayWeightSmall.UpdateEquipmentStatusDisplay(status);

                //this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartBarGraph;
                //this.DisplayBottomMain(this.CurrentDisplay);

                this.CurrentBottomMenuControlEnable(status);
            }
        }
        public void UpdateCurrentProductDisplay(DataStore.EquipmentStatus status, ProductItem pItem, WeightData wData)
        {
            string value = "";

            value = pItem.Number.ToString();
            if (this.buttonProductNo.Text != value)
                this.buttonProductNo.Text = value;

            value = pItem.Name;
            if (this.labelProductName.Text != value)
                this.labelProductName.Text = value;

            value = pItem.LotNo;
            if (this.labelLotNo.Text != value)
                this.labelLotNo.Text = value;

            if (this.MainDisplayWeightBigScreen != null)
                this.MainDisplayWeightBigScreen.UpdateCurrentProductDisplay(status, pItem, wData);
            if (this.MainDisplayWeightSmall != null)
                this.MainDisplayWeightSmall.UpdateCurrentProductDisplay(status, pItem, wData);
            if (this.MainDisplayStart != null)
                this.MainDisplayStart.UpdateCurrentProductDisplay(status, pItem, wData);
            if (this.MainDisplayStartGraph != null)
                this.MainDisplayStartGraph.UpdateCurrentProductDisplay(status, pItem, wData);
            if (this.MainDisplayStartList != null)
                this.MainDisplayStartList.UpdateCurrentProductDisplay(status, pItem, wData);
            if (this.MainDisplayStopDataStatistics != null)
                this.MainDisplayStopDataStatistics.UpdateCurrentProductDisplay(status, pItem, wData);
            if(this.MainDisplayMenu != null && this.CurrentDisplay == DataStore.MainDisplayStore.DisplayStartMenu)
                this.MainDisplayMenu.UpdateControl(this.ParentForm.CurrentJudgmentSetItem, this.ParentForm.CurrentSystemParameter4);
        }
        public void UpdateStopWeightDisplay(DataStore.EquipmentStatus status, WeightData data)
        {
            string value = "";

            // 알람표시
            this.UpdateDisplayAlarmView(data);

            if (this.MainDisplayWeightBigScreen != null)
                this.MainDisplayWeightBigScreen.UpdateStopWeightDisplay(status, data);
            if (this.MainDisplayWeightSmall != null)
                this.MainDisplayWeightSmall.UpdateStopWeightDisplay(status, data);
        }
        public void UpdateStartWeightDisplay(DataStore.EquipmentStatus status, ProductItem pItem, WeightData wData)
        {
            string value = "";

            // 알람표시
            this.UpdateDisplayAlarmView(wData);

            if (wData.JudgmentStatus == DataStore.JudgmentStatus.Empty)
                return;

            if (this.MainDisplayWeightBigScreen != null)
                this.MainDisplayWeightBigScreen.UpdateStartWeightDisplay(status, wData);
            if (this.MainDisplayWeightSmall != null)
                this.MainDisplayWeightSmall.UpdateStartWeightDisplay(status, wData);
            if (this.MainDisplayStart != null)
                this.MainDisplayStart.UpdateStartWeightDisplay(status, wData);
            if (this.MainDisplayStartGraph != null)
                this.MainDisplayStartGraph.UpdateStartWeightDisplay(status, wData);
            if (this.MainDisplayStartList != null)
                this.MainDisplayStartList.UpdateStartWeightDisplay(status, pItem, wData);
            if (this.MainDisplayStopDataStatistics != null)
                this.MainDisplayStopDataStatistics.UpdateStartWeightDisplay(status, wData);
        }
        public void UpdateBarcodeDisplay(Barcode barcode)
        {
            if (this.MainDisplayWeightBigScreen != null)
                this.MainDisplayWeightBigScreen.UpdateBarcodeDisplay(barcode);
            if (this.MainDisplayWeightSmall != null)
                this.MainDisplayWeightSmall.UpdateBarcodeDisplay(barcode);
        }
        public void UpdateEthernetStatusDisplay(bool status)
        {
            if (this.MainDisplayWeightBigScreen != null)
                this.MainDisplayWeightBigScreen.UpdateEthernetStatusDisplay(status);
            if (this.MainDisplayWeightSmall != null)
                this.MainDisplayWeightSmall.UpdateEthernetStatusDisplay(status);
        }

        public void CurrentBottomMenuControlEnable(DataStore.EquipmentStatus status)
        {
            if (this.MainDisplayFeedback.IsUsingFeedback() == true)
            {
                this.buttonFeedback.Visible = true;
                if (this.ParentForm.CurrentSystemParameter2.OPT1OverRangeInt <= 0 && this.ParentForm.CurrentSystemParameter2.OPT1UnderRangeInt <= 0)
                {
                    this.ParentForm.UpdateFeedbackData(this.ParentForm.CurrentProductItem, this.ParentForm.CurrentSystemParameter2);
                    this.ParentForm.UpdateFeedbackDeviation(this.ParentForm.CurrentProductItem, this.ParentForm.CurrentSystemParameter2);
                }
                else
                    this.ParentForm.UpdateFeedbackDeviation(this.ParentForm.CurrentProductItem, this.ParentForm.CurrentSystemParameter2);
            }
            else
                this.buttonFeedback.Visible = false;

            //if (status == DataStore.EquipmentStatus.Start)
            //{
            //    this.buttonMenu.Enabled = false;
            //}
            //else
            //{
            //    if (this.ParentForm.CurrentSystemStatus.CurrentUser.Group == DataStore.UserGroup.LogOff)
            //        this.buttonMenu.Enabled = false;
            //    else
            //        this.buttonMenu.Enabled = true;
            //}
        }
        public void UpdateDisplayMenuButton(DataStore.MainDisplayStore main)
        {
            switch (main)
            {
                case DataStore.MainDisplayStore.DisplayStartMenu:
                    if (this.buttonStartMenu.ButtonStatus != SmartButton.BUTSTATUS.DOWN)
                        this.buttonStartMenu.ButtonDown();
                    if (this.buttonBargraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonBargraph.ButtonUp();
                    if (this.buttonLinegraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonLinegraph.ButtonUp();
                    if (this.buttonList.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonList.ButtonUp();
                    if (this.buttonDataStat.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonDataStat.ButtonUp();
                    if (this.buttonFeedback.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonFeedback.ButtonUp();
                    break;
                case DataStore.MainDisplayStore.DisplayStartBarGraph:
                    if (this.buttonStartMenu.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonStartMenu.ButtonUp();
                    if (this.buttonBargraph.ButtonStatus != SmartButton.BUTSTATUS.DOWN)
                        this.buttonBargraph.ButtonDown();
                    if (this.buttonLinegraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonLinegraph.ButtonUp();
                    if (this.buttonList.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonList.ButtonUp();
                    if (this.buttonDataStat.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonDataStat.ButtonUp();
                    if (this.buttonFeedback.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonFeedback.ButtonUp();
                    break;
                case DataStore.MainDisplayStore.DisplayStartLineGraph:
                    if (this.buttonStartMenu.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonStartMenu.ButtonUp();
                    if (this.buttonBargraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonBargraph.ButtonUp();
                    if (this.buttonLinegraph.ButtonStatus != SmartButton.BUTSTATUS.DOWN)
                        this.buttonLinegraph.ButtonDown();
                    if (this.buttonList.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonList.ButtonUp();
                    if (this.buttonDataStat.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonDataStat.ButtonUp();
                    if (this.buttonFeedback.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonFeedback.ButtonUp();
                    break;
                case DataStore.MainDisplayStore.DisplayStartList:
                    if (this.buttonStartMenu.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonStartMenu.ButtonUp();
                    if (this.buttonBargraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonBargraph.ButtonUp();
                    if (this.buttonLinegraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonLinegraph.ButtonUp();
                    if (this.buttonList.ButtonStatus != SmartButton.BUTSTATUS.DOWN)
                        this.buttonList.ButtonDown();
                    if (this.buttonDataStat.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonDataStat.ButtonUp();
                    if (this.buttonFeedback.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonFeedback.ButtonUp();
                    break;
                case DataStore.MainDisplayStore.DisplayStopDataStat:
                    if (this.buttonStartMenu.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonStartMenu.ButtonUp();
                    if (this.buttonBargraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonBargraph.ButtonUp();
                    if (this.buttonLinegraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonLinegraph.ButtonUp();
                    if (this.buttonList.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonList.ButtonUp();
                    if (this.buttonDataStat.ButtonStatus != SmartButton.BUTSTATUS.DOWN)
                        this.buttonDataStat.ButtonDown();
                    if (this.buttonFeedback.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonFeedback.ButtonUp();
                    break;
                case DataStore.MainDisplayStore.DisplayFeedback:
                    if (this.buttonStartMenu.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonStartMenu.ButtonUp();
                    if (this.buttonBargraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonBargraph.ButtonUp();
                    if (this.buttonLinegraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonLinegraph.ButtonUp();
                    if (this.buttonList.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonList.ButtonUp();
                    if (this.buttonDataStat.ButtonStatus != SmartButton.BUTSTATUS.UP)
                        this.buttonDataStat.ButtonUp();
                    if (this.buttonFeedback.ButtonStatus != SmartButton.BUTSTATUS.DOWN)
                        this.buttonFeedback.ButtonDown();
                    break;
                default:
                    break;
            }
        }
        public void DisplayBottomMain(DataStore.MainDisplayStore main)
        {
            switch (main)
            {
                case DataStore.MainDisplayStore.DisplayStartMenu:
                    this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.DisplayStartMenu);
                    this.MainDisplayMenu.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                    this.MainDisplayWeightSmall.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                    //this.MainDisplayWeightBigScreen.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                    this.MainDisplayMenu.BringToFront();
                    //this.MainDisplayWeightBigScreen.BringToFront();
                    this.MainDisplayWeightSmall.BringToFront();
                    break;
                case DataStore.MainDisplayStore.DisplayStartBarGraph:
                    this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.DisplayStartBarGraph);
                    this.MainDisplayStart.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                    this.MainDisplayWeightBigScreen.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                    this.MainDisplayStart.BringToFront();
                    this.MainDisplayWeightBigScreen.BringToFront();
                    break;
                case DataStore.MainDisplayStore.DisplayStartLineGraph:
                    this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.DisplayStartLineGraph);
                    this.MainDisplayStartGraph.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                    this.MainDisplayWeightBigScreen.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                    this.MainDisplayStartGraph.BringToFront();
                    this.MainDisplayWeightBigScreen.BringToFront();
                    break;
                case DataStore.MainDisplayStore.DisplayStartList:
                    this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.DisplayStartList);
                    this.MainDisplayStartList.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                    this.MainDisplayWeightSmall.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                    this.MainDisplayStartList.BringToFront();
                    this.MainDisplayWeightSmall.BringToFront();
                    break;
                case DataStore.MainDisplayStore.DisplayStopDataStat:
                    this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.DisplayStopDataStat);
                    this.MainDisplayStopDataStatistics.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                    this.MainDisplayWeightBigScreen.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                    this.MainDisplayStopDataStatistics.BringToFront();
                    this.MainDisplayWeightBigScreen.BringToFront();
                    break;
                case DataStore.MainDisplayStore.DisplayFeedback:
                    this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.DisplayFeedback);
                    this.MainDisplayFeedback.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                    this.MainDisplayWeightBigScreen.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                    this.MainDisplayFeedback.BringToFront();
                    this.MainDisplayWeightBigScreen.BringToFront();
                    break;
                default:
                    break;
            }
        }

        public void TimerServer(bool value)
        {
            if (value == false)
            {
                if (this.timerServer.Enabled == true)
                    this.timerServer.Enabled = false;
            }
            else
            {
                if (this.timerServer.Enabled == false)
                    this.timerServer.Enabled = true;
            }
        }

        public void UpdateTimeDisplay()
        {
            this.labelTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");        
        }

        public void DisplayRefresh(SystemStatus status)
        {
            string feedbackValue = "";
            int value;

            this.ParentForm.CurrentSystemStatus.CurrentDisplay = DataStore.DisplayStore.MainDisplay;
            this.ParentForm.SetDisplayMode(DataStore.DisplayMode.Normal);

            this.ProductChange(this.ParentForm.SystemConfig1.ProductNumber);

            this.buttonPrint.Visible = this.ParentForm.SystemConfig1.IsPrinterEnable;

            if (this.ParentForm.SystemConfig1.IsPrintPerProductEnable == true)
                this.buttonPrint.ButtonDown();
            else
                this.buttonPrint.ButtonUp();

            if (int.Parse(this.ParentForm.CurrentSystemParameter1.EquipmentType) == 4)
            {
                this.buttonConveyorUpDown.Visible = true;
                this.buttonConveyorUpDown.ButtonUp();
            }
            else
                this.buttonConveyorUpDown.Visible = false;

            this.UpdateDisplayUser(status);

            if (this.CurrentDisplay == DataStore.MainDisplayStore.DisplayFeedback)
                this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartBarGraph;

            this.DisplayBottomMain(this.CurrentDisplay);

            //this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartBarGraph;
            //this.DisplayBottomMain(this.CurrentDisplay);
            //this.MainDisplayWeightBigScreen.DisplayRefresh(status);
            //this.MainDisplayWeightSmall.DisplayRefresh(status);
            //this.MainDisplayMenu.DisplayRefresh(status);
            //this.MainDisplayStart.DisplayRefresh(status);
            //this.MainDisplayFeedback.DisplayRefresh(status);
            //this.MainDisplayStartGraph.DisplayRefresh(status);
        }
        #endregion

        #region Override Member
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            //this.InitializeDesign();
            //this.DefaultSetting();

            //this.smartMemory1.ParentWindow = this;
            //this.smartMemory1.MemoryStatusInfomationShow(SmartX.SmartMemory.VIEWPOSITION.CENTER);
        }
        #endregion

        #region Event Handler
        private void buttonZero_Click(object sender, EventArgs e)
        {
            this.ParentForm.TransferData(CommunicationCommand.Zero, CommunicationID.SubBoard1);
        }

        private void buttonProductNo_Click(object sender, EventArgs e)
        {
            string message = "";
            DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.buttonProductNo.Text, 4, 0, false, this.ParentForm.SystemConfig1.Language);

            if (myKeyPad.ShowDialog() == DialogResult.OK)
            {
                if (myKeyPad.doubleValue < 1 || myKeyPad.doubleValue > this.ParentForm.ProductCount)
                {
                    // 입력범위를 확인하세요
                    message = string.Format("1 ~ {0}", this.ParentForm.ProductCount);
                    DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.SystemConfig1.Language, message);
                    myMsg.ShowDialog();
                }
                else
                {
                    this.ParentForm.ClearAlarm(0);
                    this.ProductChange(myKeyPad.IntValue);
                }
            }
        }
        private void labelProductName_Click(object sender, EventArgs e)
        {
            int listIndex = 0, listViewIndex = 0;
            Collection<string> productNames = new Collection<string>();

            this.ParentForm.LoadProductName(ref productNames);

            listIndex = this.ParentForm.SystemConfig1.ProductNumber - 1;
            listViewIndex = (listIndex / 10) * 10;
            if (listViewIndex > this.ParentForm.ProductCount - 10)
                listViewIndex = this.ParentForm.ProductCount - 10;

            DialogFormProductList product = new DialogFormProductList(productNames, listViewIndex);
            product.Location = new Point(79, 60);

            if (product.ShowDialog() == DialogResult.OK)
            {
                this.ParentForm.ClearAlarm(0);
                this.ProductChange(product.SelectedProductNumber);
            }
        }

        private void pictureBoxStart_Click(object sender, EventArgs e)
        {
            this.ParentForm.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard);
        }
        private void pictureBoxStop_Click(object sender, EventArgs e)
        {
            this.ParentForm.TransferData(CommunicationCommand.Start, CommunicationID.MainBoard);
        }

        private void timerPrinting_Tick(object sender, EventArgs e)
        {
            //this.timerPrinting.Enabled = false;
            //this.buttonPrint.Enabled = true;
            //this.buttonClear.Enabled = true;
        }
        private void timerServer_Tick(object sender, EventArgs e)
        {
            if (this.ParentForm.smartTCPMultiServer.IsStart == true)
            {
                if (this.ParentForm.smartTCPMultiServer.ClientInfoList == null)
                {
                    this.UpdateEthernetStatusDisplay(false);
                }
                else
                {
                    this.UpdateEthernetStatusDisplay(true);
                }
            }
        }

        private void pictureBoxIconAlarm_Click(object sender, EventArgs e)
        {
            if (this.MainDisplayAlarm.Visible == true)
                this.MainDisplayAlarm.Visible = false;
            else
            {
                this.MainDisplayAlarm.BringToFront();
                this.MainDisplayAlarm.Visible = true;
            }

            if (this.ParentForm.SystemConfig1.IsExternalInputLamp == true && this.ParentForm.IsLampOnDataSend == true)
                this.ParentForm.TransferData(CommunicationCommand.LampOnContinuousDisable, CommunicationID.MainBoard);
            if (this.ParentForm.SystemConfig1.IsExternalInputBuzzer == true && this.ParentForm.IsBuzzerOnDataSend == true)
                this.ParentForm.TransferData(CommunicationCommand.BuzzerOnContinuousDisable, CommunicationID.MainBoard);
        }
        private void labelSorterAlarm_Click(object sender, EventArgs e)
        {
            this.ParentForm.TransferData(CommunicationCommand.AlarmNgClearSorter, CommunicationID.MainBoard);
            if (this.ParentForm.SystemConfig1.IsExternalInputLamp == true && this.ParentForm.IsLampOnDataSend == true)
                this.ParentForm.TransferData(CommunicationCommand.LampOnContinuousDisable, CommunicationID.MainBoard);
            if (this.ParentForm.SystemConfig1.IsExternalInputBuzzer == true && this.ParentForm.IsBuzzerOnDataSend == true)
                this.ParentForm.TransferData(CommunicationCommand.BuzzerOnContinuousDisable, CommunicationID.MainBoard);
            this.labelSorterAlarm.Visible = false;
        }

        private void buttonPrint_Click(object sender, EventArgs e)
        {
            if (this.buttonPrint.ButtonStatus == SmartButton.BUTSTATUS.DOWN)
            {
                this.ParentForm.SystemConfig1.IsPrintPerProductEnable = true;
                this.ParentForm.PrintingHeadLine();
            }
            else
            {
                this.ParentForm.SystemConfig1.IsPrintPerProductEnable = false;

                if (this.ParentForm.SystemConfig1.SerialCOM1Mode == 3)
                    this.ParentForm.TransferSerialCOM1("\n\n\n\n");
                else if (this.ParentForm.SystemConfig1.SerialCOM3Mode == 3)
                    this.ParentForm.TransferSerialCOM3("\n\n\n\n");
                else if (this.ParentForm.SystemConfig1.SerialCOM4Mode == 3)
                    this.ParentForm.TransferSerialCOM4("\n\n\n\n");
            }

            this.ParentForm.SaveSystemConfigurationFile1(this.ParentForm.SystemConfig1);

            //this.buttonPrint.Enabled = false;
            //this.buttonClear.Enabled = false;
            //this.timerPrinting.Interval = 10000;
            //this.timerPrinting.Enabled = true;

            //this.ParentForm.PrintingWeight(this.ParentForm.CurrentWeightData, this.ParentForm.CurrentProductItem);
        }
        private void buttonClear_Click(object sender, EventArgs e)
        {

            if (this.ParentForm.CurrentWeightData.TotalCount == 0 && this.ParentForm.SystemConfig1.IsBarcodeEnable == true)
            {
                #region 바코드 사용 시 전체 품목 데이터 소거
                DialogFormYesNo myDlg = new DialogFormYesNo(this.ParentForm.SystemConfig1.Language, 19);
                if (myDlg.ShowDialog() == DialogResult.Yes)
                {
                    SmartSplash splash = new SmartSplash();
                    splash.CenterPosition = true;
                    splash.AnimationInterval = 200;
                    splash.LoadingImagePathname = "SmartLoading4";
                    splash.Start();

                    this.ClearAllData();

                    this.ParentForm.CurrentBarcode.Clear();
                    this.UpdateBarcodeDisplay(this.ParentForm.CurrentBarcode);

                    splash.Finish();
                }
                #endregion
            }
            else
            {
                #region 현재 품목 데이터 소거
                DialogFormYesNo myDlg = new DialogFormYesNo(this.ParentForm.SystemConfig1.Language, 8);
                if (myDlg.ShowDialog() == DialogResult.Yes)
                {
                    this.ParentForm.ClearQueue();

                    this.ClearCurrentData();
                    this.ParentForm.TransferData(CommunicationCommand.Clear, CommunicationID.SubBoard1);

                    if (this.ParentForm.SystemConfig1.IsBarcodeEnable == true)
                    {
                        this.ParentForm.CurrentBarcode.Clear();
                        this.UpdateBarcodeDisplay(this.ParentForm.CurrentBarcode);
                    }
                }
                #endregion
            }
        }
        private void buttonUser_Click(object sender, EventArgs e)
        {
            if (this.ParentForm.CurrentSystemStatus.CurrentUser.Group == DataStore.UserGroup.LogOut)
            {
                DialogFormLogOn logOn = new DialogFormLogOn(this.ParentForm, this.ParentForm.SystemConfig1.Language);
                if (logOn.ShowDialog() == DialogResult.OK)
                {
                    this.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                    this.buttonUser.ButtonDown();

                    switch (this.CurrentDisplay)
                    {
                        case DataStore.MainDisplayStore.DisplayStartMenu:
                            this.MainDisplayMenu.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                            break;
                        case DataStore.MainDisplayStore.DisplayStartBarGraph:
                            this.MainDisplayStart.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                            break;
                        case DataStore.MainDisplayStore.DisplayStartLineGraph:
                            this.MainDisplayStartGraph.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                            break;
                        case DataStore.MainDisplayStore.DisplayStartList:
                            this.MainDisplayStartList.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                            break;
                        case DataStore.MainDisplayStore.DisplayStopDataStat:
                            this.MainDisplayStopDataStatistics.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                            break;
                        default:
                            break;
                    }
                }
                else
                {
                    this.buttonUser.ButtonUp();
                }
            }
            else
            {
                DialogFormYesNo msg = new DialogFormYesNo(this.ParentForm.SystemConfig1.Language, 12);
                if (msg.ShowDialog() == DialogResult.Yes)
                {
                    this.ParentForm.CurrentSystemStatus.CurrentUser.Group = DataStore.UserGroup.LogOut;
                    this.buttonUser.ButtonUp();

                    this.DisplayRefresh(this.ParentForm.CurrentSystemStatus);

                    switch (this.CurrentDisplay)
                    {
                        case DataStore.MainDisplayStore.DisplayStartMenu:
                            this.MainDisplayMenu.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                            break;
                        case DataStore.MainDisplayStore.DisplayStartBarGraph:
                            this.MainDisplayStart.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                            break;
                        case DataStore.MainDisplayStore.DisplayStartLineGraph:
                            this.MainDisplayStartGraph.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                            break;
                        case DataStore.MainDisplayStore.DisplayStartList:
                            this.MainDisplayStartList.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                            break;
                        case DataStore.MainDisplayStore.DisplayStopDataStat:
                            this.MainDisplayStopDataStatistics.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                            break;
                        default:
                            break;
                    }
                }
            }
        }
        private void buttonWeightInputMode_Click(object sender, EventArgs e)
        {
            if (this.buttonWeightInputMode.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN)
                this.ParentForm.CurrentSystemStatus.CurrentWeightInputMode = DataStore.WeightInputMode.Deviation;
            else
                this.ParentForm.CurrentSystemStatus.CurrentWeightInputMode = DataStore.WeightInputMode.Weight;

            this.UpdateCurrentProductDisplay(this.ParentForm.CurrentSystemStatus.Equipment, this.ParentForm.CurrentProductItem, this.ParentForm.CurrentWeightData);
        }
        private void buttonConveyorUpDown_Click(object sender, EventArgs e)
        {
            if (this.buttonConveyorUpDown.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN)
                this.ParentForm.TransferData(CommunicationCommand.MotorDown, CommunicationID.MainBoard);
            else
                this.ParentForm.TransferData(CommunicationCommand.MotorUp, CommunicationID.MainBoard);
        }
        private void buttonHiddenMenu_Click(object sender, EventArgs e)
        {
            if (this.ParentForm.SystemConfig1.IsLogin == false)
            {
                this.ParentForm.ChildFormMenu.DisplayHiddenMenu(this.ParentForm.CurrentSystemStatus.CurrentDisplay, this.ParentForm.SystemConfig1);
            }
        }
        private void buttonMenu_Click(object sender, EventArgs e)
        {
            if (this.ParentForm.CurrentSystemStatus.Equipment == DataStore.EquipmentStatus.Stop)
            {
                this.ParentForm.ChildFormMenu.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
                ((FormMain)(Owner)).smartForm.Show((int)DataStore.FormStore.FormMenu);
            }
        }

        private void buttonStop_Click(object sender, EventArgs e)
        {
            this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartBarGraph;

            this.DisplayBottomMain(this.CurrentDisplay);
        }
        private void buttonBargraph_Click(object sender, EventArgs e)
        {
            this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartBarGraph;

            this.DisplayBottomMain(this.CurrentDisplay);
        }
        private void buttonLinegraph_Click(object sender, EventArgs e)
        {
            this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartLineGraph;

            this.DisplayBottomMain(this.CurrentDisplay);
        }
        private void buttonList_Click(object sender, EventArgs e)
        {
            this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartList;

            this.DisplayBottomMain(this.CurrentDisplay);
        }
        private void buttonDataStat_Click(object sender, EventArgs e)
        {
            this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStopDataStat;

            this.DisplayBottomMain(this.CurrentDisplay);
        }
        private void buttonStartMenu_Click(object sender, EventArgs e)
        {
            this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartMenu;

            this.DisplayBottomMain(this.CurrentDisplay);
        }
        private void buttonFeedback_Click(object sender, EventArgs e)
        {
            this.CurrentDisplay = DataStore.MainDisplayStore.DisplayFeedback;

            this.DisplayBottomMain(this.CurrentDisplay);
        }       
        #endregion

        private void buttonExit_Click(object sender, EventArgs e)
        {
            this.ParentForm.CloseSmartUartLink();
            this.ParentForm.smartFileCommunicationLog.Close();
            this.ParentForm.smartFileCheckLog.Close();
            this.ParentForm.Close();
        }
        private void buttonMemory_Click(object sender, EventArgs e)
        {
            this.smartMemory1.ParentWindow = this;
            this.smartMemory1.MemoryStatusInfomationShow(SmartX.SmartMemory.VIEWPOSITION.CENTER);
        }
    }
}