// <summary>ソースコード：スライド調整（ⅹ＋α）モデル用プロパティ画面クラス</summary>
// <author>CommonMP</author>

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


using CommonMP.HYSSOP.Interface.HSData;
using CommonMP.HYSSOP.Interface.HSController;
using CommonMP.HYSSOP.Interface.HSViewer;
using CommonMP.HYSSOP.CoreImpl.HSData;
using CommonMP.HYSSOP.CoreImpl.HSController;
using CommonMP.HYSSOP.CoreImpl.HSTools;

using CommonMP.HYMCO.Interface;
using CommonMP.HYMCO.Interface.Viewer;
using CommonMP.HYMCO.Interface.Data;
using CommonMP.HYMCO.CoreImpl.Controller;
using CommonMP.HYMCO.CoreImpl.Data;
using CommonMP.HYMCO.CoreOptions.McViewer.DotNetViewer;

// ToDo namespace は　モデル開発者が変更して、ユニークな名称にして下さい
namespace CommonMP.HYMCO.OptionImpl.McAdjustSlideForDevelop
{
    /// <summary><para>class outline:</para>
    /// <para>スライド調整（ⅹ＋α）モデル用プロパティ画面用 .net のフォーム</para>
    /// </summary>
    /// <remarks><para>history:</para>
    /// <para>[CommonMP][ver 1.0.0][2010/03/21][新規作成]</para>
    /// <para>remarks:</para>
    /// <para>必ず　McDotNetModelCellPropertyDetailBaseForm, McModelCellPropertyDetailFormIFから派生の事</para>
    /// </remarks>
    public partial class McAdjustSlideForm :McDotNetModelCellPropertyDetailBaseForm, McModelCellPropertyDetailFormIF
    {
        /// <summary> 演算間隔 </summary>
        private double m_dTimeStep = 0;
        /// <summary> スライド量 </summary>
        public double m_dSlideValue = 0;

        /// <summary>
        /// <para>method outline:</para>
        /// <para>デフォルトコンストラクタ</para>
        /// </summary>
        /// <example>
        /// <para>usage:</para>
        /// <para>McAdjustSlideForm csPropertyDetailForm = new McAdjustSlideForm();</para>
        /// </example>
        /// <param name="">無し</param>
        /// <returns>無し</returns>
        /// <exception cref="">無し</exception>
        /// <remarks>
        /// <para>remarks:</para>
        /// <para>無し</para>
        /// </remarks>
        public McAdjustSlideForm()
        {
            InitializeComponent();

            //フォームの外見を設定
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
            this.MaximizeBox = false;
            this.MinimizeBox = false;
        }

        /// <summary>
        /// <para>method outline:</para>
        /// <para>プロパティ表示編集</para>
        /// </summary>
        /// <example>
        /// <para>usage:</para>
        /// <para>EditParameter( );</para>
        /// </example>
        /// <param name="">無し</param>
        /// <returns>無し</returns>
        /// <exception cref="">無し</exception>
        /// <remarks>
        /// <para>remarks:</para>
        /// <para>無し</para>
        /// </remarks>
        public void EditParameter()
        {

            // 画面表示情報編集
            McModelPropertyInfo csModelPropertyInfo = m_csPropertyInfo as McModelPropertyInfo;
            if (csModelPropertyInfo != null)
            {
                // ToDo 
                // 画面に表示する初期情報等を　モデルのプロパティ情報から取得して
                // 画面上の部品に設定してください
                csModelPropertyInfo.GetInfo("m_dSlideValue", ref m_dSlideValue);

                // 演算ステップ時刻を表示
                m_dTimeStep = csModelPropertyInfo.GetStepTime();

                txtTimeStep.Text = m_dTimeStep.ToString();
                txtSlideVal.Text = m_dSlideValue.ToString();
            }

        }

        /// <summary><para>method outline:</para>
        /// <para>設定処理</para>
        /// </summary>
        /// <example><para>usage:</para>
        /// <para>ParaSet_Click(sender,e);</para>
        /// </example>
        /// <param name="sender">object</param>
        /// <param name="e">Event</param>
        /// <returns>無し</returns>
        /// <exception cref="">無し</exception>
        /// <remarks>
        /// <para>remarks:</para>
        /// <para>「設定」ボタンを押下された時の処理を記述</para>
        /// </remarks>
        private void ParaSet_Click(object sender, EventArgs e)
        {
            //----------------------------------------
            //①入力データの整合性チェックする。
            //----------------------------------------
            //演算間隔
            if (txtTimeStep.exIsEmpty)
            {
                CommonControlLibrary.CommonLib.ShowInputError("演算間隔を入力して下さい。");
                txtTimeStep.Focus();
                return;
            }
            //スライド量
            if (txtSlideVal.exIsEmpty || (double)txtSlideVal.exValue == 0)
            {
                CommonControlLibrary.CommonLib.ShowInputError("スライド量を入力して下さい。");
                txtSlideVal.Focus();
                return;
            }

            //----------------------------------------
            //②既存の情報と変更があるかチェックする。
            //----------------------------------------

            //----------------------------------------
            //③入力データの保存をする。
            //----------------------------------------
            McModelPropertyInfo csModelPropertyInfo = m_csPropertyInfo as McModelPropertyInfo;

            csModelPropertyInfo.SetInfo("m_dSlideValue", (double)txtSlideVal.exValue);

            csModelPropertyInfo.SetStepTime(Convert.ToDouble(txtTimeStep.Text));


            DialogResult = DialogResult.OK;     // 設定変更がある場合

            //----------------------------------------
            //④画面終了
            //----------------------------------------
            Close();

        }
        /// <summary><para>method outline:</para>
        /// <para>キャンセル処理</para>
        /// </summary>
        /// <example><para>usage:</para>
        /// <para>Cancel_Click(sender,e);</para>
        /// </example>
        /// <param name="sender">Object</param>
        /// <param name="e">Event</param>
        /// <returns>無し</returns>
        /// <exception cref="">無し</exception>
        /// <remarks>
        /// <para>remarks:</para>
        /// <para>「キャンセル」ボタンを押下された時の処理を記述</para>
        /// </remarks>
        private void Cancel_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;
            Close();
        }

        
    }
}