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

namespace INT51DB.DialogForms
{
    public partial class DialogFormMotorAlarmCode : Form
    {
        #region Field
        private DataSet MyDataSet;
        private DataTable MyDataTable;
        #endregion

        #region Constructor
        public DialogFormMotorAlarmCode()
        {
            InitializeComponent();
        } 
        #endregion

        #region Method
        private void InitializeContnrol()
        {
            int x = 0, y = 0;

            x = Screen.PrimaryScreen.Bounds.Width / 2 - this.Size.Width / 2;
            y = Screen.PrimaryScreen.Bounds.Height / 2 - this.Size.Height / 2;

            this.Location = new Point(x, y);
        }

        private void DataGridHeaderDisplay()
        {
            // Create
            this.MyDataSet = new DataSet("DataSet");
            this.MyDataTable = new DataTable("Customers");

            // Grid의 Header 항목을 설정
            DataColumn no = new DataColumn("번호");
            DataColumn alarm = new DataColumn("알람");
            DataColumn alarmDescription = new DataColumn("알람 설명");
            this.MyDataTable.Columns.Add(no);
            this.MyDataTable.Columns.Add(alarm);
            this.MyDataTable.Columns.Add(alarmDescription);

            // Add the table to the DataSet.
            this.MyDataSet.Tables.Add(this.MyDataTable);

            // Cell Width 설정
            DataGridTableStyle tableStyle = new DataGridTableStyle();
            tableStyle.MappingName = "Customers";

            DataGridColumnStyle cellNoStyle = new DataGridTextBoxColumn();
            cellNoStyle.MappingName = "번호";
            cellNoStyle.HeaderText = "번호";
            cellNoStyle.Width = 50;
            tableStyle.GridColumnStyles.Add(cellNoStyle);

            DataGridColumnStyle cellAlarmStyle = new DataGridTextBoxColumn();
            cellAlarmStyle.MappingName = "알람";
            cellAlarmStyle.HeaderText = "알람";
            cellAlarmStyle.Width = 150;
            tableStyle.GridColumnStyles.Add(cellAlarmStyle);

            DataGridColumnStyle cellAlarmDescriptionStyle = new DataGridTextBoxColumn();
            cellAlarmDescriptionStyle.MappingName = "알람 설명";
            cellAlarmDescriptionStyle.HeaderText = "알람 설명";
            cellAlarmDescriptionStyle.Width = 320;
            tableStyle.GridColumnStyles.Add(cellAlarmDescriptionStyle);

            // Datagrid 속성 색상 설정
            this.dataGrid1.TableStyles.Add(tableStyle);
            this.dataGrid1.HeaderBackColor = Color.Blue;
            this.dataGrid1.HeaderForeColor = Color.White;

            this.dataGrid1.SelectionBackColor = Color.White;
            this.dataGrid1.SelectionForeColor = Color.Black;

            // DataGrid의 데이터를 표현하기위한 데이터 Tabel설정
            this.dataGrid1.DataSource = this.MyDataSet.Tables[0];

            // 폰트 설정
            dataGrid1.Font = new Font("Arial", 10, FontStyle.Bold);
        }

        private void AddRowDatas(string no, string alarm, string alarmDescription)
        {
            int rowIndex = 0;
            DataRow newRow;

            rowIndex = this.MyDataTable.Rows.Count;

            newRow = this.MyDataTable.NewRow();
            newRow["번호"] = no;

            this.MyDataTable.Rows.InsertAt(newRow, rowIndex);
            this.MyDataTable.Rows[rowIndex]["알람"] = alarm;
            this.MyDataTable.Rows[rowIndex]["알람 설명"] = alarmDescription;

            this.dataGrid1.DataSource = this.MyDataSet.Tables[0];


        }
        #endregion

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

            this.InitializeContnrol();

            // DataGrid Header 출력
            this.DataGridHeaderDisplay();
            
            // DataGrid 항목 추가
            this.AddRowDatas("-", "Normal", "정상 상태");
            this.AddRowDatas("00", "EMER STOP", "비상 정지 알람");
            this.AddRowDatas("01", "OVER CURNT", "서보 과전류 알람");
            this.AddRowDatas("02", "OVER VOLT", "서보 과전압 알람");
            this.AddRowDatas("03", "OVER LOAD", "과부하 알람");
            this.AddRowDatas("04", "POWER FAIL", "서보 부족전압 알람");
            this.AddRowDatas("05", "LINE FAIL", "엔코더 오배선 알람");
            this.AddRowDatas("06", "OVER SPEED", "과속도 알람");
            this.AddRowDatas("07", "FOLLOW ERR", "위치 추종오차 알람");
            this.AddRowDatas("08", "OUTPUT NC", "출력 결상 알람");
            this.AddRowDatas("09", "PPR ERROR", "엔코더 펄스수 설정 알람");
            this.AddRowDatas("10", "ABS DATA", "절대치 엔코더 데이터 에러 알람");
            this.AddRowDatas("11", "ABS BATT", "절대치 엔코더 배터리 부족 알람");
            this.AddRowDatas("12", "ABS MDER", "절대치 엔코더 다회전 데이터 전송 오류알람");
            this.AddRowDatas("13", "OUTPUT EC", "출력 오배선 알람");
            this.AddRowDatas("14", "ABS LOW BATT", "절대치 엔코더 배터리 저 전압 알람");
            this.AddRowDatas("15", "FROM ERASE FAIL", "플래시롬 삭제 실패");
            this.AddRowDatas("16", "FROM WRITE FAIL", "플래시롬 쓰기 실패");
            this.AddRowDatas("17", "PARA INIT ERROR", "파라미터 초기 로딩 실패");

            this.Size = new Size(this.Width, this.Height - 10);
        }
        #endregion

        #region Event Handler
        private void smartButton1_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.OK;
            this.Close();
        } 
        #endregion
    }
}