MainForm.h

#pragma once


namespace Core
{
    ref class SelectEventArgs;
    ref class FileEventArgs;

    ref class ModelPanel;
    ref class MotionPanel;


    /// <summary>
    /// メインフォーム
    /// </summary>
    public ref class MainForm : public System::Windows::Forms::Form
    {
    // Construction --------------------------------------------------------
    public:
        MainForm( void );

    protected:
        ~MainForm();


    // Operation -----------------------------------------------------------
    protected:
        virtual void OnLoad( System::EventArgs^ e ) override;
        virtual void OnFormClosing( System::Windows::Forms::FormClosingEventArgs^ e ) override;

    private:
        void InitializeComponent(void);
        void InitializePanel();
        void LoadPanelLayout();

        void LoadApplicationSettings();
        void SaveApplicationSettings();

        void SetFormTitle();

        WeifenLuo::WinFormsUI::Docking::IDockContent^ GetDockingPanel( System::String^ persistString );


    // Event Handler -------------------------------------------------------
    private:
        System::Void AnalysisMenuItemClick(System::Object^ sender, System::EventArgs^ e);
        System::Void ChangeExpressionMode(System::Object^ sender, System::EventArgs^ e);
        System::Void ExpressionModeMenuItemPopup(System::Object^ sender, System::EventArgs^ e);

        System::Void CreateNewMotion(System::Object^ sender, System::EventArgs^ e);
        System::Void SaveMotionToFileGivingName(System::Object^ sender, System::EventArgs^ e);
        System::Void SaveMotionToFile(System::Object^ sender, System::EventArgs^ e);

        void LoadMotionFromFile( System::Object^ sender, FileEventArgs^ e );
        void ModelSelected( System::Object^ sender, SelectEventArgs^ e );


    // Attribute ===========================================================
    private:
        ModelPanel^ m_modelPanel;       ///< モデルパネル
        System::Collections::Generic::List< WeifenLuo::WinFormsUI::Docking::DockContent^ >^ m_dockingPanels;    ///< ドッキングパネル

        initonly System::String^ m_applicationConfigFileName;   ///< アプリケーションの設定ファイル名
        initonly System::String^ m_panelLayoutConfigFileName;   ///< パネル レイアウトの設定ファイル名


        //
        // 以降は デザイナによって自動生成されたコード
        //


    private: System::ComponentModel::Container^ components;
    private: Core::MotionPanel^ m_motionPanel;
    private: System::Windows::Forms::StatusStrip^ m_statusBar;
    private: System::Windows::Forms::MenuStrip^ m_menuBar;
    private: WeifenLuo::WinFormsUI::Docking::DockPanel^ m_dockPanel;
    private: System::Windows::Forms::ToolStripMenuItem^ m_viewMenuItem;
    private: System::Windows::Forms::ToolStripMenuItem^ m_expressionModeMenuItem;
    private: System::Windows::Forms::ToolStripMenuItem^ m_mechanismModelMenuItem;
    private: System::Windows::Forms::ToolStripMenuItem^ m_fileMenuItem;
    private: System::Windows::Forms::ToolStripMenuItem^ m_saveMenuItem;
    private: System::Windows::Forms::ToolStripMenuItem^ m_saveAsMenuItem;
    private: System::Windows::Forms::ToolStrip^ m_toolBar;
    private: System::Windows::Forms::ToolStripButton^ m_saveToolButton;
    private: System::Windows::Forms::ToolStripContainer^ m_toolStripContainer;
    private: System::Windows::Forms::ToolStripMenuItem^ m_newMenuItem;
    private: System::Windows::Forms::ToolStripSeparator^ m_separatorMenuItem;
    private: System::Windows::Forms::ToolStripButton^ m_newToolButton;
    private: System::Windows::Forms::ToolStripSeparator^ m_separatorButton;
    private: System::Windows::Forms::ToolStripButton^ m_mechanismModelButton;
    private: System::Windows::Forms::ToolStripMenuItem^ m_analysisMenuItem;


    // [ Reference ] PropertyGridコントロールの使い方: .NET Tips
    // ( http://dobon.net/vb/dotnet/control/propertygrid.html )

    // [ Reference ] @IT:.NET TIPS PropertyGridコントロールを利用するには?
    // ( http://www.atmarkit.co.jp/fdotnet/dotnettips/285propertygrid/propertygrid.html )

    // [ Reference ] .NETでDocking Windowを使う: .NET Tips: C#, VB.NET, Visual Studio
    // http://dobon.net/vb/dotnet/links/dockingwindow.html

    };
}